Merge master.kernel.org:/pub/scm/linux/kernel/git/acme/net-2.6
authorDavid S. Miller <davem@sunset.davemloft.net>
Mon, 25 Sep 2006 02:29:57 +0000 (19:29 -0700)
committerDavid S. Miller <davem@sunset.davemloft.net>
Mon, 25 Sep 2006 02:29:57 +0000 (19:29 -0700)
696 files changed:
Documentation/Changes
Documentation/DocBook/libata.tmpl
Documentation/dontdiff
Documentation/kbuild/kconfig-language.txt
Documentation/kbuild/makefiles.txt
Documentation/kbuild/modules.txt
Documentation/networking/LICENSE.qla3xxx [new file with mode: 0644]
Documentation/scsi/ChangeLog.arcmsr [new file with mode: 0644]
Documentation/scsi/aacraid.txt
Documentation/scsi/arcmsr_spec.txt [new file with mode: 0644]
Documentation/scsi/libsas.txt [new file with mode: 0644]
Documentation/sparse.txt
Kbuild
MAINTAINERS
Makefile
arch/sh/kernel/process.c
arch/sparc64/defconfig
arch/sparc64/kernel/time.c
block/ll_rw_blk.c
drivers/Kconfig
drivers/Makefile
drivers/ata/Kconfig [new file with mode: 0644]
drivers/ata/Makefile [new file with mode: 0644]
drivers/ata/ahci.c [moved from drivers/scsi/ahci.c with 79% similarity]
drivers/ata/ata_generic.c [new file with mode: 0644]
drivers/ata/ata_piix.c [moved from drivers/scsi/ata_piix.c with 67% similarity]
drivers/ata/libata-core.c [moved from drivers/scsi/libata-core.c with 92% similarity]
drivers/ata/libata-eh.c [moved from drivers/scsi/libata-eh.c with 99% similarity]
drivers/ata/libata-scsi.c [moved from drivers/scsi/libata-scsi.c with 94% similarity]
drivers/ata/libata-sff.c [moved from drivers/scsi/libata-bmdma.c with 89% similarity]
drivers/ata/libata.h [moved from drivers/scsi/libata.h with 94% similarity]
drivers/ata/pata_ali.c [new file with mode: 0644]
drivers/ata/pata_amd.c [new file with mode: 0644]
drivers/ata/pata_artop.c [new file with mode: 0644]
drivers/ata/pata_atiixp.c [new file with mode: 0644]
drivers/ata/pata_cmd64x.c [new file with mode: 0644]
drivers/ata/pata_cs5520.c [new file with mode: 0644]
drivers/ata/pata_cs5530.c [new file with mode: 0644]
drivers/ata/pata_cs5535.c [new file with mode: 0644]
drivers/ata/pata_cypress.c [new file with mode: 0644]
drivers/ata/pata_efar.c [new file with mode: 0644]
drivers/ata/pata_hpt366.c [new file with mode: 0644]
drivers/ata/pata_hpt37x.c [new file with mode: 0644]
drivers/ata/pata_hpt3x2n.c [new file with mode: 0644]
drivers/ata/pata_hpt3x3.c [new file with mode: 0644]
drivers/ata/pata_isapnp.c [new file with mode: 0644]
drivers/ata/pata_it821x.c [new file with mode: 0644]
drivers/ata/pata_jmicron.c [new file with mode: 0644]
drivers/ata/pata_legacy.c [new file with mode: 0644]
drivers/ata/pata_mpiix.c [new file with mode: 0644]
drivers/ata/pata_netcell.c [new file with mode: 0644]
drivers/ata/pata_ns87410.c [new file with mode: 0644]
drivers/ata/pata_oldpiix.c [new file with mode: 0644]
drivers/ata/pata_opti.c [new file with mode: 0644]
drivers/ata/pata_optidma.c [new file with mode: 0644]
drivers/ata/pata_pcmcia.c [new file with mode: 0644]
drivers/ata/pata_pdc2027x.c [new file with mode: 0644]
drivers/ata/pata_pdc202xx_old.c [new file with mode: 0644]
drivers/ata/pata_qdi.c [new file with mode: 0644]
drivers/ata/pata_radisys.c [new file with mode: 0644]
drivers/ata/pata_rz1000.c [new file with mode: 0644]
drivers/ata/pata_sc1200.c [new file with mode: 0644]
drivers/ata/pata_serverworks.c [new file with mode: 0644]
drivers/ata/pata_sil680.c [new file with mode: 0644]
drivers/ata/pata_sis.c [new file with mode: 0644]
drivers/ata/pata_sl82c105.c [new file with mode: 0644]
drivers/ata/pata_triflex.c [new file with mode: 0644]
drivers/ata/pata_via.c [new file with mode: 0644]
drivers/ata/pdc_adma.c [moved from drivers/scsi/pdc_adma.c with 93% similarity]
drivers/ata/sata_mv.c [moved from drivers/scsi/sata_mv.c with 96% similarity]
drivers/ata/sata_nv.c [moved from drivers/scsi/sata_nv.c with 91% similarity]
drivers/ata/sata_promise.c [moved from drivers/scsi/sata_promise.c with 93% similarity]
drivers/ata/sata_promise.h [moved from drivers/scsi/sata_promise.h with 100% similarity]
drivers/ata/sata_qstor.c [moved from drivers/scsi/sata_qstor.c with 93% similarity]
drivers/ata/sata_sil.c [moved from drivers/scsi/sata_sil.c with 93% similarity]
drivers/ata/sata_sil24.c [moved from drivers/scsi/sata_sil24.c with 95% similarity]
drivers/ata/sata_sis.c [moved from drivers/scsi/sata_sis.c with 94% similarity]
drivers/ata/sata_svw.c [moved from drivers/scsi/sata_svw.c with 98% similarity]
drivers/ata/sata_sx4.c [moved from drivers/scsi/sata_sx4.c with 96% similarity]
drivers/ata/sata_uli.c [moved from drivers/scsi/sata_uli.c with 96% similarity]
drivers/ata/sata_via.c [moved from drivers/scsi/sata_via.c with 98% similarity]
drivers/ata/sata_vsc.c [moved from drivers/scsi/sata_vsc.c with 97% similarity]
drivers/block/DAC960.c
drivers/block/cciss_scsi.c
drivers/infiniband/ulp/iser/iscsi_iser.c
drivers/infiniband/ulp/iser/iscsi_iser.h
drivers/isdn/i4l/Kconfig
drivers/message/fusion/mptfc.c
drivers/message/fusion/mptsas.c
drivers/net/3c501.c
drivers/net/3c501.h
drivers/net/3c503.c
drivers/net/3c503.h
drivers/net/3c505.c
drivers/net/3c505.h
drivers/net/3c507.c
drivers/net/3c509.c
drivers/net/3c515.c
drivers/net/3c523.c
drivers/net/3c523.h
drivers/net/3c527.c
drivers/net/3c527.h
drivers/net/3c59x.c
drivers/net/7990.c
drivers/net/7990.h
drivers/net/8139cp.c
drivers/net/8139too.c
drivers/net/82596.c
drivers/net/8390.c
drivers/net/8390.h
drivers/net/Kconfig
drivers/net/Makefile
drivers/net/Space.c
drivers/net/a2065.c
drivers/net/a2065.h
drivers/net/ac3200.c
drivers/net/acenic.c
drivers/net/acenic.h
drivers/net/acenic_firmware.h
drivers/net/amd8111e.c
drivers/net/amd8111e.h
drivers/net/apne.c
drivers/net/arcnet/com20020-pci.c
drivers/net/ariadne.c
drivers/net/arm/Kconfig
drivers/net/arm/Makefile
drivers/net/arm/at91_ether.c
drivers/net/arm/ep93xx_eth.c [new file with mode: 0644]
drivers/net/arm/etherh.c
drivers/net/at1700.c
drivers/net/atari_bionet.c
drivers/net/atari_pamsnet.c
drivers/net/atarilance.c
drivers/net/atp.c
drivers/net/au1000_eth.c
drivers/net/au1000_eth.h
drivers/net/b44.c
drivers/net/bmac.c
drivers/net/bmac.h
drivers/net/bnx2.c
drivers/net/bnx2.h
drivers/net/bonding/bond_main.c
drivers/net/bsd_comp.c
drivers/net/cassini.c
drivers/net/cassini.h
drivers/net/chelsio/cxgb2.c
drivers/net/cris/eth_v10.c
drivers/net/cs89x0.c
drivers/net/cs89x0.h
drivers/net/de600.c
drivers/net/de620.c
drivers/net/declance.c
drivers/net/defxx.c
drivers/net/defxx.h
drivers/net/depca.c
drivers/net/depca.h
drivers/net/dgrs.c
drivers/net/dgrs.h
drivers/net/dgrs_asstruct.h
drivers/net/dgrs_bcomm.h
drivers/net/dgrs_ether.h
drivers/net/dgrs_i82596.h
drivers/net/dl2k.c
drivers/net/dl2k.h
drivers/net/dummy.c
drivers/net/e100.c
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_hw.c
drivers/net/e1000/e1000_hw.h
drivers/net/e1000/e1000_main.c
drivers/net/e1000/e1000_osdep.h
drivers/net/e1000/e1000_param.c
drivers/net/e2100.c
drivers/net/eepro.c
drivers/net/eepro100.c
drivers/net/eexpress.c
drivers/net/eexpress.h
drivers/net/ehea/Makefile [new file with mode: 0644]
drivers/net/ehea/ehea.h [new file with mode: 0644]
drivers/net/ehea/ehea_ethtool.c [new file with mode: 0644]
drivers/net/ehea/ehea_hcall.h [new file with mode: 0644]
drivers/net/ehea/ehea_hw.h [new file with mode: 0644]
drivers/net/ehea/ehea_main.c [new file with mode: 0644]
drivers/net/ehea/ehea_phyp.c [new file with mode: 0644]
drivers/net/ehea/ehea_phyp.h [new file with mode: 0644]
drivers/net/ehea/ehea_qmr.c [new file with mode: 0644]
drivers/net/ehea/ehea_qmr.h [new file with mode: 0644]
drivers/net/epic100.c
drivers/net/eql.c
drivers/net/eth16i.c
drivers/net/ewrk3.c
drivers/net/ewrk3.h
drivers/net/fealnx.c
drivers/net/fec.c
drivers/net/fec_8xx/fec_main.c
drivers/net/forcedeth.c
drivers/net/fs_enet/fs_enet-main.c
drivers/net/gianfar.c
drivers/net/gianfar.h
drivers/net/gianfar_ethtool.c
drivers/net/gianfar_mii.c
drivers/net/gianfar_mii.h
drivers/net/gianfar_sysfs.c
drivers/net/gt64240eth.h
drivers/net/gt96100eth.c [deleted file]
drivers/net/gt96100eth.h [deleted file]
drivers/net/hamachi.c
drivers/net/hp-plus.c
drivers/net/hp.c
drivers/net/hp100.c
drivers/net/hp100.h
drivers/net/hplance.c
drivers/net/ibm_emac/ibm_emac_core.c
drivers/net/ibmveth.c
drivers/net/ifb.c
drivers/net/ioc3-eth.c
drivers/net/irda/mcs7780.c
drivers/net/irda/w83977af_ir.c
drivers/net/isa-skeleton.c
drivers/net/iseries_veth.c
drivers/net/ixgb/ixgb.h
drivers/net/ixgb/ixgb_ethtool.c
drivers/net/ixgb/ixgb_hw.c
drivers/net/ixgb/ixgb_ids.h
drivers/net/ixgb/ixgb_main.c
drivers/net/ixgb/ixgb_osdep.h
drivers/net/jazzsonic.c
drivers/net/lance.c
drivers/net/lasi_82596.c
drivers/net/lne390.c
drivers/net/loopback.c
drivers/net/lp486e.c
drivers/net/mac8390.c
drivers/net/mac89x0.c
drivers/net/mace.c
drivers/net/macmace.c
drivers/net/macsonic.c
drivers/net/meth.c
drivers/net/mii.c
drivers/net/mv643xx_eth.c
drivers/net/myri10ge/myri10ge.c
drivers/net/myri10ge/myri10ge_mcp.h
drivers/net/myri_code.h
drivers/net/myri_sbus.c
drivers/net/natsemi.c
drivers/net/ne-h8300.c
drivers/net/ne.c
drivers/net/ne2.c
drivers/net/ne2k-pci.c
drivers/net/ne3210.c
drivers/net/netx-eth.c
drivers/net/ni5010.c
drivers/net/ni52.c
drivers/net/ni52.h
drivers/net/ni65.c
drivers/net/ni65.h
drivers/net/ns83820.c
drivers/net/oaknet.c
drivers/net/pci-skeleton.c
drivers/net/pcmcia/3c574_cs.c
drivers/net/pcmcia/3c589_cs.c
drivers/net/pcmcia/axnet_cs.c
drivers/net/pcmcia/fmvj18x_cs.c
drivers/net/pcmcia/ibmtr_cs.c
drivers/net/pcmcia/nmclan_cs.c
drivers/net/pcmcia/pcnet_cs.c
drivers/net/pcmcia/smc91c92_cs.c
drivers/net/pcmcia/xirc2ps_cs.c
drivers/net/pcnet32.c
drivers/net/phy/fixed.c
drivers/net/phy/smsc.c
drivers/net/phy/vitesse.c
drivers/net/plip.c
drivers/net/ppp_async.c
drivers/net/ppp_deflate.c
drivers/net/ppp_generic.c
drivers/net/ppp_synctty.c
drivers/net/pppoe.c
drivers/net/qla3xxx.c [new file with mode: 0644]
drivers/net/qla3xxx.h [new file with mode: 0644]
drivers/net/r8169.c
drivers/net/rionet.c
drivers/net/rrunner.c
drivers/net/rrunner.h
drivers/net/s2io-regs.h
drivers/net/s2io.c
drivers/net/s2io.h
drivers/net/saa9730.c
drivers/net/saa9730.h
drivers/net/sb1000.c
drivers/net/sb1250-mac.c
drivers/net/seeq8005.c
drivers/net/seeq8005.h
drivers/net/sgiseeq.h
drivers/net/shaper.c
drivers/net/sis190.c
drivers/net/sis900.c
drivers/net/sis900.h
drivers/net/sk98lin/skethtool.c
drivers/net/sk98lin/skge.c
drivers/net/sk_mca.c
drivers/net/sk_mca.h
drivers/net/skfp/skfddi.c
drivers/net/skge.c
drivers/net/skge.h
drivers/net/sky2.c
drivers/net/sky2.h
drivers/net/slhc.c
drivers/net/slip.c
drivers/net/slip.h
drivers/net/smc-mca.c
drivers/net/smc-ultra.c
drivers/net/smc-ultra32.c
drivers/net/smc911x.c
drivers/net/smc9194.c
drivers/net/smc9194.h
drivers/net/smc91x.c
drivers/net/sonic.c
drivers/net/sonic.h
drivers/net/spider_net.c
drivers/net/spider_net.h
drivers/net/spider_net_ethtool.c
drivers/net/starfire.c
drivers/net/stnic.c
drivers/net/sun3_82586.c
drivers/net/sun3_82586.h
drivers/net/sun3lance.c
drivers/net/sunbmac.c
drivers/net/sundance.c
drivers/net/sungem.c
drivers/net/sungem.h
drivers/net/sungem_phy.c
drivers/net/sungem_phy.h
drivers/net/sunhme.c
drivers/net/sunlance.c
drivers/net/sunqe.c
drivers/net/tc35815.c
drivers/net/tg3.c
drivers/net/tlan.c
drivers/net/tlan.h
drivers/net/tokenring/3c359.c
drivers/net/tokenring/lanstreamer.c
drivers/net/tulip/21142.c
drivers/net/tulip/de2104x.c
drivers/net/tulip/de4x5.c
drivers/net/tulip/dmfe.c
drivers/net/tulip/eeprom.c
drivers/net/tulip/interrupt.c
drivers/net/tulip/media.c
drivers/net/tulip/pnic.c
drivers/net/tulip/pnic2.c
drivers/net/tulip/timer.c
drivers/net/tulip/tulip.h
drivers/net/tulip/tulip_core.c
drivers/net/tulip/uli526x.c
drivers/net/tulip/winbond-840.c
drivers/net/tulip/xircom_cb.c
drivers/net/tulip/xircom_tulip_cb.c
drivers/net/tun.c
drivers/net/typhoon-firmware.h
drivers/net/typhoon.c
drivers/net/typhoon.h
drivers/net/ucc_geth.c
drivers/net/via-rhine.c
drivers/net/via-velocity.c
drivers/net/via-velocity.h
drivers/net/wan/cycx_main.c
drivers/net/wan/dlci.c
drivers/net/wan/dscc4.c
drivers/net/wan/farsync.c
drivers/net/wan/lmc/lmc_main.c
drivers/net/wan/pc300_drv.c
drivers/net/wan/pci200syn.c
drivers/net/wan/sdla.c
drivers/net/wan/wanxl.c
drivers/net/wd.c
drivers/net/wireless/Kconfig
drivers/net/wireless/airo.c
drivers/net/wireless/atmel_pci.c
drivers/net/wireless/bcm43xx/bcm43xx.h
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.c
drivers/net/wireless/bcm43xx/bcm43xx_debugfs.h
drivers/net/wireless/bcm43xx/bcm43xx_dma.c
drivers/net/wireless/bcm43xx/bcm43xx_dma.h
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.c
drivers/net/wireless/bcm43xx/bcm43xx_ethtool.h
drivers/net/wireless/bcm43xx/bcm43xx_leds.c
drivers/net/wireless/bcm43xx/bcm43xx_main.c
drivers/net/wireless/bcm43xx/bcm43xx_main.h
drivers/net/wireless/bcm43xx/bcm43xx_phy.c
drivers/net/wireless/bcm43xx/bcm43xx_pio.c
drivers/net/wireless/bcm43xx/bcm43xx_sysfs.c
drivers/net/wireless/bcm43xx/bcm43xx_wx.c
drivers/net/wireless/bcm43xx/bcm43xx_xmit.c
drivers/net/wireless/hostap/hostap.h
drivers/net/wireless/hostap/hostap_cs.c
drivers/net/wireless/hostap/hostap_ioctl.c
drivers/net/wireless/ipw2100.c
drivers/net/wireless/ipw2200.c
drivers/net/wireless/ipw2200.h
drivers/net/wireless/orinoco.c
drivers/net/wireless/orinoco.h
drivers/net/wireless/orinoco_nortel.c
drivers/net/wireless/orinoco_pci.c
drivers/net/wireless/orinoco_plx.c
drivers/net/wireless/orinoco_tmd.c
drivers/net/wireless/prism54/isl_ioctl.c
drivers/net/wireless/prism54/isl_ioctl.h
drivers/net/wireless/prism54/islpci_dev.c
drivers/net/wireless/prism54/islpci_dev.h
drivers/net/wireless/prism54/islpci_hotplug.c
drivers/net/wireless/ray_cs.c
drivers/net/wireless/wavelan_cs.c
drivers/net/wireless/wl3501_cs.c
drivers/net/wireless/zd1211rw/Makefile
drivers/net/wireless/zd1211rw/zd_chip.c
drivers/net/wireless/zd1211rw/zd_chip.h
drivers/net/wireless/zd1211rw/zd_def.h
drivers/net/wireless/zd1211rw/zd_ieee80211.h
drivers/net/wireless/zd1211rw/zd_mac.c
drivers/net/wireless/zd1211rw/zd_mac.h
drivers/net/wireless/zd1211rw/zd_netdev.c
drivers/net/wireless/zd1211rw/zd_rf.c
drivers/net/wireless/zd1211rw/zd_rf.h
drivers/net/wireless/zd1211rw/zd_rf_al2230.c
drivers/net/wireless/zd1211rw/zd_rf_al7230b.c [new file with mode: 0644]
drivers/net/wireless/zd1211rw/zd_usb.c
drivers/net/wireless/zd1211rw/zd_usb.h
drivers/net/yellowfin.c
drivers/net/znet.c
drivers/pci/quirks.c
drivers/s390/scsi/zfcp_aux.c
drivers/s390/scsi/zfcp_ccw.c
drivers/s390/scsi/zfcp_dbf.c
drivers/s390/scsi/zfcp_def.h
drivers/s390/scsi/zfcp_erp.c
drivers/s390/scsi/zfcp_ext.h
drivers/s390/scsi/zfcp_fsf.c
drivers/s390/scsi/zfcp_scsi.c
drivers/scsi/BusLogic.c
drivers/scsi/Kconfig
drivers/scsi/Makefile
drivers/scsi/a2091.c
drivers/scsi/a2091.h
drivers/scsi/a3000.c
drivers/scsi/a3000.h
drivers/scsi/aacraid/aachba.c
drivers/scsi/aacraid/aacraid.h
drivers/scsi/aacraid/commctrl.c
drivers/scsi/aacraid/comminit.c
drivers/scsi/aacraid/commsup.c
drivers/scsi/aacraid/dpcsup.c
drivers/scsi/aacraid/linit.c
drivers/scsi/aacraid/rkt.c
drivers/scsi/aacraid/rx.c
drivers/scsi/aacraid/sa.c
drivers/scsi/advansys.c
drivers/scsi/aha152x.c
drivers/scsi/aic7xxx/aic79xx_osm.c
drivers/scsi/aic7xxx/aic7xxx_osm.c
drivers/scsi/aic7xxx_old.c
drivers/scsi/aic94xx/Kconfig [new file with mode: 0644]
drivers/scsi/aic94xx/Makefile [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_dev.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_dump.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_dump.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_hwi.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_hwi.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_init.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_reg.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_reg.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_reg_def.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_sas.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_scb.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_sds.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_seq.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_seq.h [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_task.c [new file with mode: 0644]
drivers/scsi/aic94xx/aic94xx_tmf.c [new file with mode: 0644]
drivers/scsi/arcmsr/Makefile [new file with mode: 0644]
drivers/scsi/arcmsr/arcmsr.h [new file with mode: 0644]
drivers/scsi/arcmsr/arcmsr_attr.c [new file with mode: 0644]
drivers/scsi/arcmsr/arcmsr_hba.c [new file with mode: 0644]
drivers/scsi/dpt_i2o.c
drivers/scsi/eata_generic.h
drivers/scsi/eata_pio.c
drivers/scsi/fcal.c
drivers/scsi/g_NCR5380.c
drivers/scsi/gvp11.c
drivers/scsi/gvp11.h
drivers/scsi/hosts.c
drivers/scsi/hptiop.c
drivers/scsi/ipr.c
drivers/scsi/ipr.h
drivers/scsi/iscsi_tcp.c
drivers/scsi/iscsi_tcp.h
drivers/scsi/libiscsi.c
drivers/scsi/libsas/Kconfig [new file with mode: 0644]
drivers/scsi/libsas/Makefile [new file with mode: 0644]
drivers/scsi/libsas/sas_discover.c [new file with mode: 0644]
drivers/scsi/libsas/sas_dump.c [new file with mode: 0644]
drivers/scsi/libsas/sas_dump.h [new file with mode: 0644]
drivers/scsi/libsas/sas_event.c [new file with mode: 0644]
drivers/scsi/libsas/sas_expander.c [new file with mode: 0644]
drivers/scsi/libsas/sas_init.c [new file with mode: 0644]
drivers/scsi/libsas/sas_internal.h [new file with mode: 0644]
drivers/scsi/libsas/sas_phy.c [new file with mode: 0644]
drivers/scsi/libsas/sas_port.c [new file with mode: 0644]
drivers/scsi/libsas/sas_scsi_host.c [new file with mode: 0644]
drivers/scsi/lpfc/lpfc.h
drivers/scsi/lpfc/lpfc_attr.c
drivers/scsi/lpfc/lpfc_crtn.h
drivers/scsi/lpfc/lpfc_ct.c
drivers/scsi/lpfc/lpfc_disc.h
drivers/scsi/lpfc/lpfc_els.c
drivers/scsi/lpfc/lpfc_hbadisc.c
drivers/scsi/lpfc/lpfc_init.c
drivers/scsi/lpfc/lpfc_nportdisc.c
drivers/scsi/lpfc/lpfc_scsi.c
drivers/scsi/lpfc/lpfc_version.h
drivers/scsi/megaraid.c
drivers/scsi/megaraid/megaraid_mbox.c
drivers/scsi/megaraid/megaraid_sas.c
drivers/scsi/mvme147.c
drivers/scsi/mvme147.h
drivers/scsi/scsi.c
drivers/scsi/scsi.h
drivers/scsi/scsi_debug.c
drivers/scsi/scsi_lib.c
drivers/scsi/scsi_netlink.c [new file with mode: 0644]
drivers/scsi/scsi_priv.h
drivers/scsi/scsi_proc.c
drivers/scsi/scsi_scan.c
drivers/scsi/scsi_transport_fc.c
drivers/scsi/scsi_transport_iscsi.c
drivers/scsi/scsi_transport_sas.c
drivers/scsi/scsi_transport_spi.c
drivers/scsi/sd.c
drivers/scsi/sgiwd93.c
drivers/scsi/stex.c [new file with mode: 0644]
drivers/scsi/ultrastor.c
drivers/scsi/ultrastor.h
fs/affs/affs.h
fs/affs/super.c
fs/autofs/autofs_i.h
fs/autofs/inode.c
fs/autofs4/autofs_i.h
fs/autofs4/inode.c
fs/hpfs/hpfs_fn.h
fs/hpfs/super.c
fs/namei.c
fs/nfs/dir.c
fs/nfs/super.c
fs/ocfs2/cluster/tcp_internal.h
fs/ocfs2/dcache.c
fs/ocfs2/dcache.h
fs/ocfs2/dlm/dlmapi.h
fs/ocfs2/dlm/dlmast.c
fs/ocfs2/dlm/dlmcommon.h
fs/ocfs2/dlm/dlmlock.c
fs/ocfs2/dlm/dlmmaster.c
fs/ocfs2/dlm/dlmrecovery.c
fs/ocfs2/dlm/userdlm.c
fs/ocfs2/dlm/userdlm.h
fs/ocfs2/dlmglue.c
fs/ocfs2/dlmglue.h
fs/ocfs2/export.c
fs/ocfs2/inode.c
fs/ocfs2/inode.h
fs/ocfs2/journal.c
fs/ocfs2/namei.c
fs/ocfs2/ocfs2_lockid.h
fs/ocfs2/super.c
fs/ocfs2/sysfile.c
fs/ocfs2/vote.c
fs/ocfs2/vote.h
fs/openpromfs/inode.c
include/asm-alpha/libata-portmap.h [new file with mode: 0644]
include/asm-arm/arch-ep93xx/ep93xx-regs.h
include/asm-arm/arch-ep93xx/platform.h
include/asm-arm/elf.h
include/asm-arm/page.h
include/asm-arm26/Kbuild [deleted file]
include/asm-cris/Kbuild
include/asm-cris/arch-v10/Kbuild [new file with mode: 0644]
include/asm-cris/arch-v32/Kbuild [new file with mode: 0644]
include/asm-cris/byteorder.h
include/asm-cris/elf.h
include/asm-cris/page.h
include/asm-cris/posix_types.h
include/asm-cris/unistd.h
include/asm-frv/libata-portmap.h [new file with mode: 0644]
include/asm-generic/libata-portmap.h [new file with mode: 0644]
include/asm-h8300/page.h
include/asm-i386/libata-portmap.h [new file with mode: 0644]
include/asm-ia64/libata-portmap.h [new file with mode: 0644]
include/asm-m32r/page.h
include/asm-m32r/ptrace.h
include/asm-m32r/signal.h
include/asm-m32r/unistd.h
include/asm-m32r/user.h
include/asm-m68knommu/page.h
include/asm-powerpc/libata-portmap.h [new file with mode: 0644]
include/asm-s390/Kbuild
include/asm-sh/page.h
include/asm-sh/ptrace.h
include/asm-sh64/page.h
include/asm-sh64/shmparam.h
include/asm-sh64/signal.h
include/asm-sh64/user.h
include/asm-sparc/Kbuild
include/asm-sparc/libata-portmap.h [new file with mode: 0644]
include/asm-sparc/page.h
include/asm-sparc64/Kbuild
include/asm-sparc64/libata-portmap.h [new file with mode: 0644]
include/asm-sparc64/page.h
include/asm-sparc64/shmparam.h
include/asm-um/Kbuild [deleted file]
include/asm-v850/page.h
include/asm-v850/param.h
include/asm-x86_64/libata-portmap.h [new file with mode: 0644]
include/linux/Kbuild
include/linux/adfs_fs.h
include/linux/affs_fs.h [deleted file]
include/linux/ata.h
include/linux/blkdev.h
include/linux/coda_psdev.h
include/linux/efs_fs_sb.h
include/linux/ext2_fs.h
include/linux/ext3_fs.h
include/linux/fs.h
include/linux/hpfs_fs.h [deleted file]
include/linux/iso_fs.h
include/linux/jffs2.h
include/linux/libata.h
include/linux/magic.h [new file with mode: 0644]
include/linux/minix_fs.h
include/linux/module.h
include/linux/msdos_fs.h
include/linux/ncp_fs.h
include/linux/netdevice.h
include/linux/netfilter/Kbuild
include/linux/netfilter/x_tables.h
include/linux/netlink.h
include/linux/nfs_fs.h
include/linux/openprom_fs.h [deleted file]
include/linux/pci_ids.h
include/linux/proc_fs.h
include/linux/qnx4_fs.h
include/linux/reiserfs_fs.h
include/linux/smb.h
include/linux/stddef.h
include/linux/usbdevice_fs.h
include/net/ieee80211.h
include/net/ieee80211softmac.h
include/net/netlabel.h
include/scsi/libiscsi.h
include/scsi/libsas.h [new file with mode: 0644]
include/scsi/sas.h [new file with mode: 0644]
include/scsi/scsi.h
include/scsi/scsi_cmnd.h
include/scsi/scsi_host.h
include/scsi/scsi_netlink.h [new file with mode: 0644]
include/scsi/scsi_netlink_fc.h [new file with mode: 0644]
include/scsi/scsi_tcq.h
include/scsi/scsi_transport_fc.h
include/scsi/scsi_transport_sas.h
include/scsi/scsi_transport_spi.h
net/core/ethtool.c
net/ieee80211/ieee80211_crypt_ccmp.c
net/ieee80211/ieee80211_crypt_tkip.c
net/ieee80211/ieee80211_crypt_wep.c
net/ieee80211/ieee80211_rx.c
net/ieee80211/ieee80211_tx.c
net/ieee80211/softmac/ieee80211softmac_assoc.c
net/ieee80211/softmac/ieee80211softmac_io.c
net/ieee80211/softmac/ieee80211softmac_module.c
net/ieee80211/softmac/ieee80211softmac_priv.h
net/ipv4/netfilter/ip_tables.c
scripts/Kbuild.include
scripts/Makefile
scripts/Makefile.build
scripts/Makefile.headersinst
scripts/Makefile.host
scripts/Makefile.modpost
scripts/hdrcheck.sh
scripts/kconfig/Makefile
scripts/kconfig/confdata.c
scripts/mod/modpost.c
scripts/package/mkspec
scripts/unifdef.c [new file with mode: 0644]
sound/drivers/mts64.c
sound/sparc/dbri.c
usr/Makefile

index 4882720..abee7f5 100644 (file)
@@ -37,15 +37,14 @@ o  e2fsprogs              1.29                    # tune2fs
 o  jfsutils               1.1.3                   # fsck.jfs -V
 o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs
 o  xfsprogs               2.6.0                   # xfs_db -V
-o  pcmciautils            004
-o  pcmcia-cs              3.1.21                  # cardmgr -V
+o  pcmciautils            004                     # pccardctl -V
 o  quota-tools            3.09                    # quota -V
 o  PPP                    2.4.0                   # pppd --version
 o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version
 o  nfs-utils              1.0.5                   # showmount --version
 o  procps                 3.2.0                   # ps --version
 o  oprofile               0.9                     # oprofiled --version
-o  udev                   071                     # udevinfo -V
+o  udev                   081                     # udevinfo -V
 
 Kernel compilation
 ==================
@@ -268,7 +267,7 @@ active clients.
 
 To enable this new functionality, you need to:
 
-  mount -t nfsd nfsd /proc/fs/nfs
+  mount -t nfsd nfsd /proc/fs/nfsd
 
 before running exportfs or mountd.  It is recommended that all NFS
 services be protected from the internet-at-large by a firewall where
index e97c323..065e8dc 100644 (file)
@@ -868,18 +868,18 @@ and other resources, etc.
 
   <chapter id="libataExt">
      <title>libata Library</title>
-!Edrivers/scsi/libata-core.c
+!Edrivers/ata/libata-core.c
   </chapter>
 
   <chapter id="libataInt">
      <title>libata Core Internals</title>
-!Idrivers/scsi/libata-core.c
+!Idrivers/ata/libata-core.c
   </chapter>
 
   <chapter id="libataScsiInt">
      <title>libata SCSI translation/emulation</title>
-!Edrivers/scsi/libata-scsi.c
-!Idrivers/scsi/libata-scsi.c
+!Edrivers/ata/libata-scsi.c
+!Idrivers/ata/libata-scsi.c
   </chapter>
 
   <chapter id="ataExceptions">
@@ -1600,12 +1600,12 @@ and other resources, etc.
 
   <chapter id="PiixInt">
      <title>ata_piix Internals</title>
-!Idrivers/scsi/ata_piix.c
+!Idrivers/ata/ata_piix.c
   </chapter>
 
   <chapter id="SILInt">
      <title>sata_sil Internals</title>
-!Idrivers/scsi/sata_sil.c
+!Idrivers/ata/sata_sil.c
   </chapter>
 
   <chapter id="libataThanks">
index 24adfe9..63c2d0c 100644 (file)
@@ -135,6 +135,7 @@ tags
 times.h*
 tkparse
 trix_boot.h
+utsrelease.h*
 version.h*
 vmlinux
 vmlinux-*
index ca1967f..003fccc 100644 (file)
@@ -67,19 +67,19 @@ applicable everywhere (see syntax).
 - default value: "default" <expr> ["if" <expr>]
   A config option can have any number of default values. If multiple
   default values are visible, only the first defined one is active.
-  Default values are not limited to the menu entry, where they are
-  defined, this means the default can be defined somewhere else or be
+  Default values are not limited to the menu entry where they are
+  defined. This means the default can be defined somewhere else or be
   overridden by an earlier definition.
   The default value is only assigned to the config symbol if no other
   value was set by the user (via the input prompt above). If an input
   prompt is visible the default value is presented to the user and can
   be overridden by him.
-  Optionally dependencies only for this default value can be added with
+  Optionally, dependencies only for this default value can be added with
   "if".
 
 - dependencies: "depends on"/"requires" <expr>
   This defines a dependency for this menu entry. If multiple
-  dependencies are defined they are connected with '&&'. Dependencies
+  dependencies are defined, they are connected with '&&'. Dependencies
   are applied to all other options within this menu entry (which also
   accept an "if" expression), so these two examples are equivalent:
 
@@ -153,7 +153,7 @@ Nonconstant symbols are the most common ones and are defined with the
 'config' statement. Nonconstant symbols consist entirely of alphanumeric
 characters or underscores.
 Constant symbols are only part of expressions. Constant symbols are
-always surrounded by single or double quotes. Within the quote any
+always surrounded by single or double quotes. Within the quote, any
 other character is allowed and the quotes can be escaped using '\'.
 
 Menu structure
@@ -237,7 +237,7 @@ choices:
        <choice block>
        "endchoice"
 
-This defines a choice group and accepts any of above attributes as
+This defines a choice group and accepts any of the above attributes as
 options. A choice can only be of type bool or tristate, while a boolean
 choice only allows a single config entry to be selected, a tristate
 choice also allows any number of config entries to be set to 'm'. This
index 0706699..b7d6abb 100644 (file)
@@ -22,7 +22,7 @@ This document describes the Linux kernel Makefiles.
        === 4 Host Program support
           --- 4.1 Simple Host Program
           --- 4.2 Composite Host Programs
-          --- 4.3 Defining shared libraries  
+          --- 4.3 Defining shared libraries
           --- 4.4 Using C++ for host programs
           --- 4.5 Controlling compiler options for host programs
           --- 4.6 When host programs are actually built
@@ -69,7 +69,7 @@ architecture-specific information to the top Makefile.
 
 Each subdirectory has a kbuild Makefile which carries out the commands
 passed down from above. The kbuild Makefile uses information from the
-.config file to construct various file lists used by kbuild to build 
+.config file to construct various file lists used by kbuild to build
 any built-in or modular targets.
 
 scripts/Makefile.* contains all the definitions/rules etc. that
@@ -86,7 +86,7 @@ any kernel Makefiles (or any other source files).
 
 *Normal developers* are people who work on features such as device
 drivers, file systems, and network protocols.  These people need to
-maintain the kbuild Makefiles for the subsystem that they are
+maintain the kbuild Makefiles for the subsystem they are
 working on.  In order to do this effectively, they need some overall
 knowledge about the kernel Makefiles, plus detailed knowledge about the
 public interface for kbuild.
@@ -104,10 +104,10 @@ This document is aimed towards normal developers and arch developers.
 === 3 The kbuild files
 
 Most Makefiles within the kernel are kbuild Makefiles that use the
-kbuild infrastructure. This chapter introduce the syntax used in the
+kbuild infrastructure. This chapter introduces the syntax used in the
 kbuild makefiles.
 The preferred name for the kbuild files are 'Makefile' but 'Kbuild' can
-be used and if both a 'Makefile' and a 'Kbuild' file exists then the 'Kbuild'
+be used and if both a 'Makefile' and a 'Kbuild' file exists, then the 'Kbuild'
 file will be used.
 
 Section 3.1 "Goal definitions" is a quick intro, further chapters provide
@@ -124,7 +124,7 @@ more details, with real examples.
        Example:
                obj-y += foo.o
 
-       This tell kbuild that there is one object in that directory named
+       This tell kbuild that there is one object in that directory, named
        foo.o. foo.o will be built from foo.c or foo.S.
 
        If foo.o shall be built as a module, the variable obj-m is used.
@@ -140,7 +140,7 @@ more details, with real examples.
 --- 3.2 Built-in object goals - obj-y
 
        The kbuild Makefile specifies object files for vmlinux
-       in the lists $(obj-y).  These lists depend on the kernel
+       in the $(obj-y) lists.  These lists depend on the kernel
        configuration.
 
        Kbuild compiles all the $(obj-y) files.  It then calls
@@ -154,8 +154,8 @@ more details, with real examples.
        Link order is significant, because certain functions
        (module_init() / __initcall) will be called during boot in the
        order they appear. So keep in mind that changing the link
-       order may e.g.  change the order in which your SCSI
-       controllers are detected, and thus you disks are renumbered.
+       order may e.g. change the order in which your SCSI
+       controllers are detected, and thus your disks are renumbered.
 
        Example:
                #drivers/isdn/i4l/Makefile
@@ -203,11 +203,11 @@ more details, with real examples.
        Example:
                #fs/ext2/Makefile
                obj-$(CONFIG_EXT2_FS)        += ext2.o
-               ext2-y                       := balloc.o bitmap.o
+               ext2-y                       := balloc.o bitmap.o
                ext2-$(CONFIG_EXT2_FS_XATTR) += xattr.o
-       
-       In this example xattr.o is only part of the composite object
-       ext2.o, if $(CONFIG_EXT2_FS_XATTR) evaluates to 'y'.
+
+       In this example, xattr.o is only part of the composite object
+       ext2.o if $(CONFIG_EXT2_FS_XATTR) evaluates to 'y'.
 
        Note: Of course, when you are building objects into the kernel,
        the syntax above will also work. So, if you have CONFIG_EXT2_FS=y,
@@ -221,16 +221,16 @@ more details, with real examples.
 
 --- 3.5 Library file goals - lib-y
 
-       Objects listed with obj-* are used for modules or
+       Objects listed with obj-* are used for modules, or
        combined in a built-in.o for that specific directory.
        There is also the possibility to list objects that will
        be included in a library, lib.a.
        All objects listed with lib-y are combined in a single
        library for that directory.
-       Objects that are listed in obj-y and additional listed in
+       Objects that are listed in obj-y and additionaly listed in
        lib-y will not be included in the library, since they will anyway
        be accessible.
-       For consistency objects listed in lib-m will be included in lib.a. 
+       For consistency, objects listed in lib-m will be included in lib.a.
 
        Note that the same kbuild makefile may list files to be built-in
        and to be part of a library. Therefore the same directory
@@ -241,11 +241,11 @@ more details, with real examples.
                lib-y    := checksum.o delay.o
 
        This will create a library lib.a based on checksum.o and delay.o.
-       For kbuild to actually recognize that there is a lib.a being build
+       For kbuild to actually recognize that there is a lib.a being built,
        the directory shall be listed in libs-y.
        See also "6.3 List directories to visit when descending".
-       Usage of lib-y is normally restricted to lib/ and arch/*/lib.
+
+       Use of lib-y is normally restricted to lib/ and arch/*/lib.
 
 --- 3.6 Descending down in directories
 
@@ -255,7 +255,7 @@ more details, with real examples.
        invoke make recursively in subdirectories, provided you let it know of
        them.
 
-       To do so obj-y and obj-m are used.
+       To do so, obj-y and obj-m are used.
        ext2 lives in a separate directory, and the Makefile present in fs/
        tells kbuild to descend down using the following assignment.
 
@@ -353,8 +353,8 @@ more details, with real examples.
        Special rules are used when the kbuild infrastructure does
        not provide the required support. A typical example is
        header files generated during the build process.
-       Another example is the architecture specific Makefiles which
-       needs special rules to prepare boot images etc.
+       Another example are the architecture specific Makefiles which
+       need special rules to prepare boot images etc.
 
        Special rules are written as normal Make rules.
        Kbuild is not executing in the directory where the Makefile is
@@ -387,28 +387,28 @@ more details, with real examples.
 
 --- 3.11 $(CC) support functions
 
-       The kernel may be build with several different versions of
+       The kernel may be built with several different versions of
        $(CC), each supporting a unique set of features and options.
        kbuild provide basic support to check for valid options for $(CC).
        $(CC) is useally the gcc compiler, but other alternatives are
        available.
 
     as-option
-       as-option is used to check if $(CC) when used to compile
-       assembler (*.S) files supports the given option. An optional
-       second option may be specified if first option are not supported.
+       as-option is used to check if $(CC) -- when used to compile
+       assembler (*.S) files -- supports the given option. An optional
+       second option may be specified if the first option is not supported.
 
        Example:
                #arch/sh/Makefile
                cflags-y += $(call as-option,-Wa$(comma)-isa=$(isa-y),)
 
-       In the above example cflags-y will be assinged the the option
+       In the above example, cflags-y will be assigned the option
        -Wa$(comma)-isa=$(isa-y) if it is supported by $(CC).
        The second argument is optional, and if supplied will be used
        if first argument is not supported.
 
     ld-option
-       ld-option is used to check if $(CC) when used to link object files
+       ld-option is used to check if $(CC) when used to link object files
        supports the given option.  An optional second option may be
        specified if first option are not supported.
 
@@ -422,7 +422,7 @@ more details, with real examples.
        if first argument is not supported.
 
     cc-option
-       cc-option is used to check if $(CC) support a given option, and not
+       cc-option is used to check if $(CC) supports a given option, and not
        supported to use an optional second option.
 
        Example:
@@ -430,12 +430,12 @@ more details, with real examples.
                cflags-y += $(call cc-option,-march=pentium-mmx,-march=i586)
 
        In the above example cflags-y will be assigned the option
-       -march=pentium-mmx if supported by $(CC), otherwise -march-i586.
-       The second argument to cc-option is optional, and if omitted
+       -march=pentium-mmx if supported by $(CC), otherwise -march=i586.
+       The second argument to cc-option is optional, and if omitted,
        cflags-y will be assigned no value if first option is not supported.
 
    cc-option-yn
-       cc-option-yn is used to check if gcc supports a given option
+       cc-option-yn is used to check if gcc supports a given option
        and return 'y' if supported, otherwise 'n'.
 
        Example:
@@ -443,32 +443,33 @@ more details, with real examples.
                biarch := $(call cc-option-yn, -m32)
                aflags-$(biarch) += -a32
                cflags-$(biarch) += -m32
-       
-       In the above example $(biarch) is set to y if $(CC) supports the -m32
-       option. When $(biarch) equals to y the expanded variables $(aflags-y)
-       and $(cflags-y) will be assigned the values -a32 and -m32.
+
+       In the above example, $(biarch) is set to y if $(CC) supports the -m32
+       option. When $(biarch) equals 'y', the expanded variables $(aflags-y)
+       and $(cflags-y) will be assigned the values -a32 and -m32,
+       respectively.
 
     cc-option-align
-       gcc version >= 3.0 shifted type of options used to speify
-       alignment of functions, loops etc. $(cc-option-align) whrn used
-       as prefix to the align options will select the right prefix:
+       gcc versions >= 3.0 changed the type of options used to specify
+       alignment of functions, loops etc. $(cc-option-align), when used
+       as prefix to the align options, will select the right prefix:
        gcc < 3.00
                cc-option-align = -malign
        gcc >= 3.00
                cc-option-align = -falign
-       
+
        Example:
                CFLAGS += $(cc-option-align)-functions=4
 
-       In the above example the option -falign-functions=4 is used for
-       gcc >= 3.00. For gcc < 3.00 -malign-functions=4 is used.
-       
+       In the above example, the option -falign-functions=4 is used for
+       gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used.
+
     cc-version
-       cc-version return a numerical version of the $(CC) compiler version.
+       cc-version returns a numerical version of the $(CC) compiler version.
        The format is <major><minor> where both are two digits. So for example
        gcc 3.41 would return 0341.
        cc-version is useful when a specific $(CC) version is faulty in one
-       area, for example the -mregparm=3 were broken in some gcc version
+       area, for example -mregparm=3 was broken in some gcc versions
        even though the option was accepted by gcc.
 
        Example:
@@ -477,20 +478,20 @@ more details, with real examples.
                if [ $(call cc-version) -ge 0300 ] ; then \
                        echo "-mregparm=3"; fi ;)
 
-       In the above example -mregparm=3 is only used for gcc version greater
+       In the above example, -mregparm=3 is only used for gcc version greater
        than or equal to gcc 3.0.
 
     cc-ifversion
-       cc-ifversion test the version of $(CC) and equals last argument if
+       cc-ifversion tests the version of $(CC) and equals last argument if
        version expression is true.
 
        Example:
                #fs/reiserfs/Makefile
                EXTRA_CFLAGS := $(call cc-ifversion, -lt, 0402, -O1)
 
-       In this example EXTRA_CFLAGS will be assigned the value -O1 if the
+       In this example, EXTRA_CFLAGS will be assigned the value -O1 if the
        $(CC) version is less than 4.2.
-       cc-ifversion takes all the shell operators: 
+       cc-ifversion takes all the shell operators:
        -eq, -ne, -lt, -le, -gt, and -ge
        The third parameter may be a text as in this example, but it may also
        be an expanded variable or a macro.
@@ -506,7 +507,7 @@ The first step is to tell kbuild that a host program exists. This is
 done utilising the variable hostprogs-y.
 
 The second step is to add an explicit dependency to the executable.
-This can be done in two ways. Either add the dependency in a rule, 
+This can be done in two ways. Either add the dependency in a rule,
 or utilise the variable $(always).
 Both possibilities are described in the following.
 
@@ -523,28 +524,28 @@ Both possibilities are described in the following.
        Kbuild assumes in the above example that bin2hex is made from a single
        c-source file named bin2hex.c located in the same directory as
        the Makefile.
-  
+
 --- 4.2 Composite Host Programs
 
        Host programs can be made up based on composite objects.
        The syntax used to define composite objects for host programs is
        similar to the syntax used for kernel objects.
-       $(<executeable>-objs) list all objects used to link the final
+       $(<executeable>-objs) lists all objects used to link the final
        executable.
 
        Example:
                #scripts/lxdialog/Makefile
-               hostprogs-y   := lxdialog  
+               hostprogs-y   := lxdialog
                lxdialog-objs := checklist.o lxdialog.o
 
        Objects with extension .o are compiled from the corresponding .c
-       files. In the above example checklist.c is compiled to checklist.o
+       files. In the above example, checklist.c is compiled to checklist.o
        and lxdialog.c is compiled to lxdialog.o.
-       Finally the two .o files are linked to the executable, lxdialog.
+       Finally, the two .o files are linked to the executable, lxdialog.
        Note: The syntax <executable>-y is not permitted for host-programs.
 
---- 4.3 Defining shared libraries  
-  
+--- 4.3 Defining shared libraries
+
        Objects with extension .so are considered shared libraries, and
        will be compiled as position independent objects.
        Kbuild provides support for shared libraries, but the usage
@@ -557,7 +558,7 @@ Both possibilities are described in the following.
                hostprogs-y     := conf
                conf-objs       := conf.o libkconfig.so
                libkconfig-objs := expr.o type.o
-  
+
        Shared libraries always require a corresponding -objs line, and
        in the example above the shared library libkconfig is composed by
        the two objects expr.o and type.o.
@@ -578,7 +579,7 @@ Both possibilities are described in the following.
 
        In the example above the executable is composed of the C++ file
        qconf.cc - identified by $(qconf-cxxobjs).
-       
+
        If qconf is composed by a mixture of .c and .cc files, then an
        additional line can be used to identify this.
 
@@ -587,34 +588,35 @@ Both possibilities are described in the following.
                hostprogs-y   := qconf
                qconf-cxxobjs := qconf.o
                qconf-objs    := check.o
-       
+
 --- 4.5 Controlling compiler options for host programs
 
        When compiling host programs, it is possible to set specific flags.
        The programs will always be compiled utilising $(HOSTCC) passed
        the options specified in $(HOSTCFLAGS).
        To set flags that will take effect for all host programs created
-       in that Makefile use the variable HOST_EXTRACFLAGS.
+       in that Makefile, use the variable HOST_EXTRACFLAGS.
 
        Example:
                #scripts/lxdialog/Makefile
                HOST_EXTRACFLAGS += -I/usr/include/ncurses
-  
+
        To set specific flags for a single file the following construction
        is used:
 
        Example:
                #arch/ppc64/boot/Makefile
                HOSTCFLAGS_piggyback.o := -DKERNELBASE=$(KERNELBASE)
-  
+
        It is also possible to specify additional options to the linker.
-  
+
        Example:
                #scripts/kconfig/Makefile
                HOSTLOADLIBES_qconf := -L$(QTDIR)/lib
 
-       When linking qconf it will be passed the extra option "-L$(QTDIR)/lib".
+       When linking qconf, it will be passed the extra option
+       "-L$(QTDIR)/lib".
+
 --- 4.6 When host programs are actually built
 
        Kbuild will only build host-programs when they are referenced
@@ -629,7 +631,7 @@ Both possibilities are described in the following.
                $(obj)/devlist.h: $(src)/pci.ids $(obj)/gen-devlist
                        ( cd $(obj); ./gen-devlist ) < $<
 
-       The target $(obj)/devlist.h will not be built before 
+       The target $(obj)/devlist.h will not be built before
        $(obj)/gen-devlist is updated. Note that references to
        the host programs in special rules must be prefixed with $(obj).
 
@@ -648,7 +650,7 @@ Both possibilities are described in the following.
 
 --- 4.7 Using hostprogs-$(CONFIG_FOO)
 
-       A typcal pattern in a Kbuild file lok like this:
+       A typical pattern in a Kbuild file looks like this:
 
        Example:
                #scripts/Makefile
@@ -656,13 +658,13 @@ Both possibilities are described in the following.
 
        Kbuild knows about both 'y' for built-in and 'm' for module.
        So if a config symbol evaluate to 'm', kbuild will still build
-       the binary. In other words Kbuild handle hostprogs-m exactly
-       like hostprogs-y. But only hostprogs-y is recommend used
-       when no CONFIG symbol are involved.
+       the binary. In other words, Kbuild handles hostprogs-m exactly
+       like hostprogs-y. But only hostprogs-y is recommended to be used
+       when no CONFIG symbols are involved.
 
 === 5 Kbuild clean infrastructure
 
-"make clean" deletes most generated files in the src tree where the kernel
+"make clean" deletes most generated files in the obj tree where the kernel
 is compiled. This includes generated files such as host programs.
 Kbuild knows targets listed in $(hostprogs-y), $(hostprogs-m), $(always),
 $(extra-y) and $(targets). They are all deleted during "make clean".
@@ -680,7 +682,8 @@ When executing "make clean", the two files "devlist.h classlist.h" will
 be deleted. Kbuild will assume files to be in same relative directory as the
 Makefile except if an absolute path is specified (path starting with '/').
 
-To delete a directory hirachy use:
+To delete a directory hierarchy use:
+
        Example:
                #scripts/package/Makefile
                clean-dirs := $(objtree)/debian/
@@ -723,29 +726,29 @@ be visited during "make clean".
 
 The top level Makefile sets up the environment and does the preparation,
 before starting to descend down in the individual directories.
-The top level makefile contains the generic part, whereas the
-arch/$(ARCH)/Makefile contains what is required to set-up kbuild
-to the said architecture.
-To do so arch/$(ARCH)/Makefile sets a number of variables, and defines
+The top level makefile contains the generic part, whereas
+arch/$(ARCH)/Makefile contains what is required to set up kbuild
+for said architecture.
+To do so, arch/$(ARCH)/Makefile sets up a number of variables and defines
 a few targets.
 
-When kbuild executes the following steps are followed (roughly):
-1) Configuration of the kernel => produced .config
+When kbuild executes, the following steps are followed (roughly):
+1) Configuration of the kernel => produce .config
 2) Store kernel version in include/linux/version.h
 3) Symlink include/asm to include/asm-$(ARCH)
 4) Updating all other prerequisites to the target prepare:
    - Additional prerequisites are specified in arch/$(ARCH)/Makefile
 5) Recursively descend down in all directories listed in
    init-* core* drivers-* net-* libs-* and build all targets.
-   - The value of the above variables are extended in arch/$(ARCH)/Makefile.
-6) All object files are then linked and the resulting file vmlinux is 
-   located at the root of the src tree.
+   - The values of the above variables are expanded in arch/$(ARCH)/Makefile.
+6) All object files are then linked and the resulting file vmlinux is
+   located at the root of the obj tree.
    The very first objects linked are listed in head-y, assigned by
    arch/$(ARCH)/Makefile.
-7) Finally the architecture specific part does any required post processing
+7) Finally, the architecture specific part does any required post processing
    and builds the final bootimage.
    - This includes building boot records
-   - Preparing initrd images and the like
+   - Preparing initrd images and thelike
 
 
 --- 6.1 Set variables to tweak the build to the architecture
@@ -760,7 +763,7 @@ When kbuild executes the following steps are followed (roughly):
                LDFLAGS         := -m elf_s390
        Note: EXTRA_LDFLAGS and LDFLAGS_$@ can be used to further customise
        the flags used. See chapter 7.
-       
+
     LDFLAGS_MODULE     Options for $(LD) when linking modules
 
        LDFLAGS_MODULE is used to set specific flags for $(LD) when
@@ -770,7 +773,7 @@ When kbuild executes the following steps are followed (roughly):
     LDFLAGS_vmlinux    Options for $(LD) when linking vmlinux
 
        LDFLAGS_vmlinux is used to specify additional flags to pass to
-       the linker when linking the final vmlinux.
+       the linker when linking the final vmlinux image.
        LDFLAGS_vmlinux uses the LDFLAGS_$@ support.
 
        Example:
@@ -780,7 +783,7 @@ When kbuild executes the following steps are followed (roughly):
     OBJCOPYFLAGS       objcopy flags
 
        When $(call if_changed,objcopy) is used to translate a .o file,
-       then the flags specified in OBJCOPYFLAGS will be used.
+       the flags specified in OBJCOPYFLAGS will be used.
        $(call if_changed,objcopy) is often used to generate raw binaries on
        vmlinux.
 
@@ -792,7 +795,7 @@ When kbuild executes the following steps are followed (roughly):
                $(obj)/image: vmlinux FORCE
                        $(call if_changed,objcopy)
 
-       In this example the binary $(obj)/image is a binary version of
+       In this example, the binary $(obj)/image is a binary version of
        vmlinux. The usage of $(call if_changed,xxx) will be described later.
 
     AFLAGS             $(AS) assembler flags
@@ -809,7 +812,7 @@ When kbuild executes the following steps are followed (roughly):
        Default value - see top level Makefile
        Append or modify as required per architecture.
 
-       Often the CFLAGS variable depends on the configuration.
+       Often, the CFLAGS variable depends on the configuration.
 
        Example:
                #arch/i386/Makefile
@@ -830,7 +833,7 @@ When kbuild executes the following steps are followed (roughly):
                ...
 
 
-       The first examples utilises the trick that a config option expands
+       The first example utilises the trick that a config option expands
        to 'y' when selected.
 
     CFLAGS_KERNEL      $(CC) options specific for built-in
@@ -843,18 +846,18 @@ When kbuild executes the following steps are followed (roughly):
        $(CFLAGS_MODULE) contains extra C compiler flags used to compile code
        for loadable kernel modules.
 
+
 --- 6.2 Add prerequisites to archprepare:
 
-       The archprepare: rule is used to list prerequisites that needs to be
+       The archprepare: rule is used to list prerequisites that need to be
        built before starting to descend down in the subdirectories.
-       This is usual header files containing assembler constants.
+       This is usually used for header files containing assembler constants.
 
                Example:
                #arch/arm/Makefile
                archprepare: maketools
 
-       In this example the file target maketools will be processed
+       In this example, the file target maketools will be processed
        before descending down in the subdirectories.
        See also chapter XXX-TODO that describe how kbuild supports
        generating offset header files.
@@ -867,18 +870,19 @@ When kbuild executes the following steps are followed (roughly):
        corresponding arch-specific section for modules; the module-building
        machinery is all architecture-independent.
 
-       
+
     head-y, init-y, core-y, libs-y, drivers-y, net-y
 
-       $(head-y) list objects to be linked first in vmlinux.
-       $(libs-y) list directories where a lib.a archive can be located.
-       The rest list directories where a built-in.o object file can be located.
+       $(head-y) lists objects to be linked first in vmlinux.
+       $(libs-y) lists directories where a lib.a archive can be located.
+       The rest lists directories where a built-in.o object file can be
+       located.
 
        $(init-y) objects will be located after $(head-y).
        Then the rest follows in this order:
        $(core-y), $(libs-y), $(drivers-y) and $(net-y).
 
-       The top level Makefile define values for all generic directories,
+       The top level Makefile defines values for all generic directories,
        and arch/$(ARCH)/Makefile only adds architecture specific directories.
 
        Example:
@@ -915,27 +919,27 @@ When kbuild executes the following steps are followed (roughly):
        "$(Q)$(MAKE) $(build)=<dir>" is the recommended way to invoke
        make in a subdirectory.
 
-       There are no rules for naming of the architecture specific targets,
+       There are no rules for naming architecture specific targets,
        but executing "make help" will list all relevant targets.
-       To support this $(archhelp) must be defined.
+       To support this, $(archhelp) must be defined.
 
        Example:
                #arch/i386/Makefile
                define archhelp
                  echo  '* bzImage      - Image (arch/$(ARCH)/boot/bzImage)'
-               endef
+               endif
 
        When make is executed without arguments, the first goal encountered
        will be built. In the top level Makefile the first goal present
        is all:.
-       An architecture shall always per default build a bootable image.
-       In "make help" the default goal is highlighted with a '*'.
+       An architecture shall always, per default, build a bootable image.
+       In "make help", the default goal is highlighted with a '*'.
        Add a new prerequisite to all: to select a default goal different
        from vmlinux.
 
        Example:
                #arch/i386/Makefile
-               all: bzImage 
+               all: bzImage
 
        When "make" is executed without arguments, bzImage will be built.
 
@@ -955,10 +959,10 @@ When kbuild executes the following steps are followed (roughly):
                #arch/i386/kernel/Makefile
                extra-y := head.o init_task.o
 
-       In this example extra-y is used to list object files that
+       In this example, extra-y is used to list object files that
        shall be built, but shall not be linked as part of built-in.o.
 
-       
+
 --- 6.6 Commands useful for building a boot image
 
        Kbuild provides a few macros that are useful when building a
@@ -972,8 +976,8 @@ When kbuild executes the following steps are followed (roughly):
                target: source(s) FORCE
                        $(call if_changed,ld/objcopy/gzip)
 
-       When the rule is evaluated it is checked to see if any files
-       needs an update, or the commandline has changed since last
+       When the rule is evaluated, it is checked to see if any files
+       needs an update, or the command line has changed since the last
        invocation. The latter will force a rebuild if any options
        to the executable have changed.
        Any target that utilises if_changed must be listed in $(targets),
@@ -991,8 +995,8 @@ When kbuild executes the following steps are followed (roughly):
        #WRONG!#        $(call if_changed, ld/objcopy/gzip)
 
     ld
-       Link target. Often LDFLAGS_$@ is used to set specific options to ld.
-       
+       Link target. Often, LDFLAGS_$@ is used to set specific options to ld.
+
     objcopy
        Copy binary. Uses OBJCOPYFLAGS usually specified in
        arch/$(ARCH)/Makefile.
@@ -1010,10 +1014,10 @@ When kbuild executes the following steps are followed (roughly):
                $(obj)/setup $(obj)/bootsect: %: %.o FORCE
                        $(call if_changed,ld)
 
-       In this example there are two possible targets, requiring different
-       options to the linker. the linker options are specified using the
+       In this example, there are two possible targets, requiring different
+       options to the linker. The linker options are specified using the
        LDFLAGS_$@ syntax - one for each potential target.
-       $(targets) are assinged all potential targets, herby kbuild knows
+       $(targets) are assinged all potential targets, by which kbuild knows
        the targets and will:
                1) check for commandline changes
                2) delete target during make clean
@@ -1027,7 +1031,7 @@ When kbuild executes the following steps are followed (roughly):
 
 --- 6.7 Custom kbuild commands
 
-       When kbuild is executing with KBUILD_VERBOSE=0 then only a shorthand
+       When kbuild is executing with KBUILD_VERBOSE=0, then only a shorthand
        of a command is normally displayed.
        To enable this behaviour for custom commands kbuild requires
        two variables to be set:
@@ -1045,34 +1049,34 @@ When kbuild executes the following steps are followed (roughly):
                        $(call if_changed,image)
                        @echo 'Kernel: $@ is ready'
 
-       When updating the $(obj)/bzImage target the line:
+       When updating the $(obj)/bzImage target, the line
 
        BUILD    arch/i386/boot/bzImage
 
        will be displayed with "make KBUILD_VERBOSE=0".
-       
+
 
 --- 6.8 Preprocessing linker scripts
 
-       When the vmlinux image is build the linker script:
+       When the vmlinux image is built, the linker script
        arch/$(ARCH)/kernel/vmlinux.lds is used.
        The script is a preprocessed variant of the file vmlinux.lds.S
        located in the same directory.
-       kbuild knows .lds file and includes a rule *lds.S -> *lds.
-       
+       kbuild knows .lds files and includes a rule *lds.S -> *lds.
+
        Example:
                #arch/i386/kernel/Makefile
                always := vmlinux.lds
-       
+
                #Makefile
                export CPPFLAGS_vmlinux.lds += -P -C -U$(ARCH)
-               
-       The assigment to $(always) is used to tell kbuild to build the
-       target: vmlinux.lds.
-       The assignment to $(CPPFLAGS_vmlinux.lds) tell kbuild to use the
+
+       The assignment to $(always) is used to tell kbuild to build the
+       target vmlinux.lds.
+       The assignment to $(CPPFLAGS_vmlinux.lds) tells kbuild to use the
        specified options when building the target vmlinux.lds.
-       
-       When building the *.lds target kbuild used the variakles:
+
+       When building the *.lds target, kbuild uses the variables:
        CPPFLAGS        : Set in top-level Makefile
        EXTRA_CPPFLAGS  : May be set in the kbuild makefile
        CPPFLAGS_$(@F)  : Target specific flags.
@@ -1147,7 +1151,7 @@ The top Makefile exports the following variables:
 
 === 8 Makefile language
 
-The kernel Makefiles are designed to run with GNU Make.  The Makefiles
+The kernel Makefiles are designed to be run with GNU Make.  The Makefiles
 use only the documented features of GNU Make, but they do use many
 GNU extensions.
 
@@ -1169,10 +1173,13 @@ is the right choice.
 Original version made by Michael Elizabeth Chastain, <mailto:mec@shout.net>
 Updates by Kai Germaschewski <kai@tp1.ruhr-uni-bochum.de>
 Updates by Sam Ravnborg <sam@ravnborg.org>
+Language QA by Jan Engelhardt <jengelh@gmx.de>
 
 === 10 TODO
 
-- Describe how kbuild support shipped files with _shipped.
+- Describe how kbuild supports shipped files with _shipped.
 - Generating offset header files.
 - Add more variables to section 7?
 
+
+
index 61fc079..2e7702e 100644 (file)
@@ -1,7 +1,7 @@
 
 In this document you will find information about:
 - how to build external modules
-- how to make your module use kbuild infrastructure
+- how to make your module use the kbuild infrastructure
 - how kbuild will install a kernel
 - how to install modules in a non-standard location
 
@@ -24,7 +24,7 @@ In this document you will find information about:
           --- 6.1 INSTALL_MOD_PATH
           --- 6.2 INSTALL_MOD_DIR
        === 7. Module versioning & Module.symvers
-          --- 7.1 Symbols fron the kernel (vmlinux + modules)
+          --- 7.1 Symbols from the kernel (vmlinux + modules)
           --- 7.2 Symbols and external modules
           --- 7.3 Symbols from another external module
        === 8. Tips & Tricks
@@ -36,13 +36,13 @@ In this document you will find information about:
 
 kbuild includes functionality for building modules both
 within the kernel source tree and outside the kernel source tree.
-The latter is usually referred to as external modules and is used
-both during development and for modules that are not planned to be
-included in the kernel tree.
+The latter is usually referred to as external or "out-of-tree"
+modules and is used both during development and for modules that
+are not planned to be included in the kernel tree.
 
 What is covered within this file is mainly information to authors
-of modules. The author of an external modules should supply
-a makefile that hides most of the complexity so one only has to type
+of modules. The author of an external module should supply
+a makefile that hides most of the complexity, so one only has to type
 'make' to build the module. A complete example will be present in
 chapter 4, "Creating a kbuild file for an external module".
 
@@ -63,14 +63,15 @@ when building an external module.
        For the running kernel use:
                make -C /lib/modules/`uname -r`/build M=`pwd`
 
-       For the above command to succeed the kernel must have been built with
-       modules enabled.
+       For the above command to succeed, the kernel must have been
+       built with modules enabled.
 
        To install the modules that were just built:
 
                make -C <path-to-kernel> M=`pwd` modules_install
 
-       More complex examples later, the above should get you going.
+       More complex examples will be shown later, the above should
+       be enough to get you started.
 
 --- 2.2 Available targets
 
@@ -89,13 +90,13 @@ when building an external module.
                Same functionality as if no target was specified.
                See description above.
 
-       make -C $KDIR M=$PWD modules_install
+       make -C $KDIR M=`pwd` modules_install
                Install the external module(s).
                Installation default is in /lib/modules/<kernel-version>/extra,
                but may be prefixed with INSTALL_MOD_PATH - see separate
                chapter.
 
-       make -C $KDIR M=$PWD clean
+       make -C $KDIR M=`pwd` clean
                Remove all generated files for the module - the kernel
                source directory is not modified.
 
@@ -129,29 +130,28 @@ when building an external module.
 
        To make sure the kernel contains the information required to
        build external modules the target 'modules_prepare' must be used.
-       'module_prepare' solely exists as a simple way to prepare
-       a kernel for building external modules.
+       'module_prepare' exists solely as a simple way to prepare
+       a kernel source tree for building external modules.
        Note: modules_prepare will not build Module.symvers even if
-             CONFIG_MODULEVERSIONING is set.
-             Therefore a full kernel build needs to be executed to make
-             module versioning work.
+       CONFIG_MODULEVERSIONING is set. Therefore a full kernel build
+       needs to be executed to make module versioning work.
 
 --- 2.5 Building separate files for a module
-       It is possible to build single files which is part of a module.
-       This works equal for the kernel, a module and even for external
-       modules.
+       It is possible to build single files which are part of a module.
+       This works equally well for the kernel, a module and even for
+       external modules.
        Examples (module foo.ko, consist of bar.o, baz.o):
                make -C $KDIR M=`pwd` bar.lst
                make -C $KDIR M=`pwd` bar.o
                make -C $KDIR M=`pwd` foo.ko
                make -C $KDIR M=`pwd` /
-       
+
 
 === 3. Example commands
 
 This example shows the actual commands to be executed when building
 an external module for the currently running kernel.
-In the example below the distribution is supposed to use the
+In the example below, the distribution is supposed to use the
 facility to locate output files for a kernel compile in a different
 directory than the kernel source - but the examples will also work
 when the source and the output files are mixed in the same directory.
@@ -170,14 +170,14 @@ the following commands to build the module:
                O=/lib/modules/`uname-r`/build        \
                M=`pwd`
 
-Then to install the module use the following command:
+Then, to install the module use the following command:
 
        make -C /usr/src/`uname -r`/source            \
                O=/lib/modules/`uname-r`/build        \
                M=`pwd`                               \
                modules_install
 
-If one looks closely you will see that this is the same commands as
+If you look closely you will see that this is the same command as
 listed before - with the directories spelled out.
 
 The above are rather long commands, and the following chapter
@@ -230,7 +230,7 @@ following files:
 
                endif
 
-       In example 1 the check for KERNELRELEASE is used to separate
+       In example 1, the check for KERNELRELEASE is used to separate
        the two parts of the Makefile. kbuild will only see the two
        assignments whereas make will see everything except the two
        kbuild assignments.
@@ -255,7 +255,7 @@ following files:
                        echo "X" > 8123_bin_shipped
 
 
-       In example 2 we are down to two fairly simple files and for simple
+       In example 2, we are down to two fairly simple files and for simple
        files as used in this example the split is questionable. But some
        external modules use Makefiles of several hundred lines and here it
        really pays off to separate the kbuild part from the rest.
@@ -282,9 +282,9 @@ following files:
 
                endif
 
-               The trick here is to include the Kbuild file from Makefile so
-               if an older version of kbuild picks up the Makefile the Kbuild
-               file will be included.
+       The trick here is to include the Kbuild file from Makefile, so
+       if an older version of kbuild picks up the Makefile, the Kbuild
+       file will be included.
 
 --- 4.2 Binary blobs included in a module
 
@@ -301,18 +301,19 @@ following files:
                obj-m  := 8123.o
                8123-y := 8123_if.o 8123_pci.o 8123_bin.o
 
-       In example 4 there is no distinction between the ordinary .c/.h files
+       In example 4, there is no distinction between the ordinary .c/.h files
        and the binary file. But kbuild will pick up different rules to create
        the .o file.
 
 
 === 5. Include files
 
-Include files are a necessity when a .c file uses something from another .c
-files (not strictly in the sense of .c but if good programming practice is
-used). Any module that consist of more than one .c file will have a .h file
-for one of the .c files. 
-- If the .h file only describes a module internal interface then the .h file
+Include files are a necessity when a .c file uses something from other .c
+files (not strictly in the sense of C, but if good programming practice is
+used). Any module that consists of more than one .c file will have a .h file
+for one of the .c files.
+
+- If the .h file only describes a module internal interface, then the .h file
   shall be placed in the same directory as the .c files.
 - If the .h files describe an interface used by other parts of the kernel
   located in different directories, the .h files shall be located in
@@ -323,11 +324,11 @@ under include/ such as include/scsi. Another exception is arch-specific
 .h files which are located under include/asm-$(ARCH)/*.
 
 External modules have a tendency to locate include files in a separate include/
-directory and therefore needs to deal with this in their kbuild file.
+directory and therefore need to deal with this in their kbuild file.
 
 --- 5.1 How to include files from the kernel include dir
 
-       When a module needs to include a file from include/linux/ then one
+       When a module needs to include a file from include/linux/, then one
        just uses:
 
                #include <linux/modules.h>
@@ -348,7 +349,7 @@ directory and therefore needs to deal with this in their kbuild file.
        The trick here is to use either EXTRA_CFLAGS (take effect for all .c
        files) or CFLAGS_$F.o (take effect only for a single file).
 
-       In our example if we move 8123_if.h to a subdirectory named include/
+       In our example, if we move 8123_if.h to a subdirectory named include/
        the resulting Kbuild file would look like:
 
                --> filename: Kbuild
@@ -362,19 +363,19 @@ directory and therefore needs to deal with this in their kbuild file.
 
 --- 5.3 External modules using several directories
 
-       If an external module does not follow the usual kernel style but
-       decide to spread files over several directories then kbuild can
-       support this too.
+       If an external module does not follow the usual kernel style, but
+       decides to spread files over several directories, then kbuild can
+       handle this too.
 
        Consider the following example:
-       
+
        |
        +- src/complex_main.c
        |   +- hal/hardwareif.c
        |   +- hal/include/hardwareif.h
        +- include/complex.h
-       
-       To build a single module named complex.ko we then need the following
+
+       To build a single module named complex.ko, we then need the following
        kbuild file:
 
        Kbuild:
@@ -387,12 +388,12 @@ directory and therefore needs to deal with this in their kbuild file.
 
 
        kbuild knows how to handle .o files located in another directory -
-       although this is NOT reccommended practice. The syntax is to specify
+       although this is NOT recommended practice. The syntax is to specify
        the directory relative to the directory where the Kbuild file is
        located.
 
-       To find the .h files we have to explicitly tell kbuild where to look
-       for the .h files. When kbuild executes current directory is always
+       To find the .h files, we have to explicitly tell kbuild where to look
+       for the .h files. When kbuild executes, the current directory is always
        the root of the kernel tree (argument to -C) and therefore we have to
        tell kbuild how to find the .h files using absolute paths.
        $(src) will specify the absolute path to the directory where the
@@ -412,7 +413,7 @@ External modules are installed in the directory:
 
 --- 6.1 INSTALL_MOD_PATH
 
-       Above are the default directories, but as always some level of
+       Above are the default directories, but as always, some level of
        customization is possible. One can prefix the path using the variable
        INSTALL_MOD_PATH:
 
@@ -420,17 +421,17 @@ External modules are installed in the directory:
                => Install dir: /frodo/lib/modules/$(KERNELRELEASE)/kernel
 
        INSTALL_MOD_PATH may be set as an ordinary shell variable or as in the
-       example above be specified on the command line when calling make.
+       example above, can be specified on the command line when calling make.
        INSTALL_MOD_PATH has effect both when installing modules included in
        the kernel as well as when installing external modules.
 
 --- 6.2 INSTALL_MOD_DIR
 
-       When installing external modules they are default installed in a
+       When installing external modules they are by default installed to a
        directory under /lib/modules/$(KERNELRELEASE)/extra, but one may wish
        to locate modules for a specific functionality in a separate
-       directory. For this purpose one can use INSTALL_MOD_DIR to specify an
-       alternative name than 'extra'.
+       directory. For this purpose, one can use INSTALL_MOD_DIR to specify an
+       alternative name to 'extra'.
 
                $ make INSTALL_MOD_DIR=gandalf -C KERNELDIR \
                        M=`pwd` modules_install
@@ -444,16 +445,16 @@ Module versioning is enabled by the CONFIG_MODVERSIONS tag.
 Module versioning is used as a simple ABI consistency check. The Module
 versioning creates a CRC value of the full prototype for an exported symbol and
 when a module is loaded/used then the CRC values contained in the kernel are
-compared with similar values in the module. If they are not equal then the
+compared with similar values in the module. If they are not equal, then the
 kernel refuses to load the module.
 
 Module.symvers contains a list of all exported symbols from a kernel build.
 
 --- 7.1 Symbols fron the kernel (vmlinux + modules)
 
-       During a kernel build a file named Module.symvers will be generated.
+       During a kernel build, a file named Module.symvers will be generated.
        Module.symvers contains all exported symbols from the kernel and
-       compiled modules. For each symbols the corresponding CRC value
+       compiled modules. For each symbols, the corresponding CRC value
        is stored too.
 
        The syntax of the Module.symvers file is:
@@ -461,27 +462,27 @@ Module.symvers contains a list of all exported symbols from a kernel build.
        Sample:
                0x2d036834  scsi_remove_host   drivers/scsi/scsi_mod
 
-       For a kernel build without CONFIG_MODVERSIONING enabled the crc
+       For a kernel build without CONFIG_MODVERSIONS enabled, the crc
        would read: 0x00000000
 
-       Module.symvers serve two purposes.
-       1) It list all exported symbols both from vmlinux and all modules
-       2) It list CRC if CONFIG_MODVERSION is enabled
+       Module.symvers serves two purposes:
+       1) It lists all exported symbols both from vmlinux and all modules
+       2) It lists the CRC if CONFIG_MODVERSIONS is enabled
 
 --- 7.2 Symbols and external modules
 
-       When building an external module the build system needs access to
+       When building an external module, the build system needs access to
        the symbols from the kernel to check if all external symbols are
        defined. This is done in the MODPOST step and to obtain all
-       symbols modpost reads Module.symvers from the kernel.
+       symbols, modpost reads Module.symvers from the kernel.
        If a Module.symvers file is present in the directory where
-       the external module is being build this file will be read too.
-       During the MODPOST step a new Module.symvers file will be written
-       containing all exported symbols that was not defined in the kernel.
-       
+       the external module is being built, this file will be read too.
+       During the MODPOST step, a new Module.symvers file will be written
+       containing all exported symbols that were not defined in the kernel.
+
 --- 7.3 Symbols from another external module
 
-       Sometimes one external module uses exported symbols from another
+       Sometimes, an external module uses exported symbols from another
        external module. Kbuild needs to have full knowledge on all symbols
        to avoid spitting out warnings about undefined symbols.
        Two solutions exist to let kbuild know all symbols of more than
@@ -490,15 +491,15 @@ Module.symvers contains a list of all exported symbols from a kernel build.
        impractical in certain situations.
 
        Use a top-level Kbuild file
-               If you have two modules: 'foo', 'bar' and 'foo' needs symbols
-               from 'bar' then one can use a common top-level kbuild file so
-               both modules are compiled in same build.
+               If you have two modules: 'foo' and 'bar', and 'foo' needs
+               symbols from 'bar', then one can use a common top-level kbuild
+               file so both modules are compiled in same build.
 
                Consider following directory layout:
                ./foo/ <= contains the foo module
                ./bar/ <= contains the bar module
                The top-level Kbuild file would then look like:
-               
+
                #./Kbuild: (this file may also be named Makefile)
                        obj-y := foo/ bar/
 
@@ -509,23 +510,23 @@ Module.symvers contains a list of all exported symbols from a kernel build.
                knowledge on symbols from both modules.
 
        Use an extra Module.symvers file
-               When an external module is build a Module.symvers file is
+               When an external module is built, a Module.symvers file is
                generated containing all exported symbols which are not
                defined in the kernel.
-               To get access to symbols from module 'bar' one can copy the
+               To get access to symbols from module 'bar', one can copy the
                Module.symvers file from the compilation of the 'bar' module
-               to the directory where the 'foo' module is build.
-               During the module build kbuild will read the Module.symvers
+               to the directory where the 'foo' module is built.
+               During the module build, kbuild will read the Module.symvers
                file in the directory of the external module and when the
-               build is finished a new Module.symvers file is created
+               build is finished, a new Module.symvers file is created
                containing the sum of all symbols defined and not part of the
                kernel.
-               
+
 === 8. Tips & Tricks
 
 --- 8.1 Testing for CONFIG_FOO_BAR
 
-       Modules often needs to check for certain CONFIG_ options to decide if
+       Modules often need to check for certain CONFIG_ options to decide if
        a specific feature shall be included in the module. When kbuild is used
        this is done by referencing the CONFIG_ variable directly.
 
@@ -537,7 +538,7 @@ Module.symvers contains a list of all exported symbols from a kernel build.
 
        External modules have traditionally used grep to check for specific
        CONFIG_ settings directly in .config. This usage is broken.
-       As introduced before external modules shall use kbuild when building
-       and therefore can use the same methods as in-kernel modules when testing
-       for CONFIG_ definitions.
+       As introduced before, external modules shall use kbuild when building
+       and therefore can use the same methods as in-kernel modules when
+       testing for CONFIG_ definitions.
 
diff --git a/Documentation/networking/LICENSE.qla3xxx b/Documentation/networking/LICENSE.qla3xxx
new file mode 100644 (file)
index 0000000..2f2077e
--- /dev/null
@@ -0,0 +1,46 @@
+Copyright (c)  2003-2006 QLogic Corporation
+QLogic Linux Networking HBA Driver
+
+This program includes a device driver for Linux 2.6 that may be
+distributed with QLogic hardware specific firmware binary file.
+You may modify and redistribute the device driver code under the
+GNU General Public License as published by the Free Software
+Foundation (version 2 or a later version).
+
+You may redistribute the hardware specific firmware binary file
+under the following terms:
+
+       1. Redistribution of source code (only if applicable),
+          must retain the above copyright notice, this list of
+          conditions and the following disclaimer.
+
+       2. Redistribution in binary form must reproduce the above
+          copyright notice, this list of conditions and the
+          following disclaimer in the documentation and/or other
+          materials provided with the distribution.
+
+       3. The name of QLogic Corporation may not be used to
+          endorse or promote products derived from this software
+          without specific prior written permission
+
+REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE,
+THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "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.
+
+USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT
+CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR
+OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT,
+TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN
+ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN
+COMBINATION WITH THIS PROGRAM.
+
diff --git a/Documentation/scsi/ChangeLog.arcmsr b/Documentation/scsi/ChangeLog.arcmsr
new file mode 100644 (file)
index 0000000..162c47f
--- /dev/null
@@ -0,0 +1,56 @@
+**************************************************************************
+** History
+**
+**   REV#         DATE             NAME         DESCRIPTION
+** 1.00.00.00    3/31/2004       Erich Chen     First release
+** 1.10.00.04    7/28/2004       Erich Chen     modify for ioctl
+** 1.10.00.06    8/28/2004       Erich Chen     modify for 2.6.x
+** 1.10.00.08    9/28/2004       Erich Chen     modify for x86_64
+** 1.10.00.10   10/10/2004       Erich Chen     bug fix for SMP & ioctl
+** 1.20.00.00   11/29/2004       Erich Chen     bug fix with arcmsr_bus_reset when PHY error
+** 1.20.00.02   12/09/2004       Erich Chen     bug fix with over 2T bytes RAID Volume
+** 1.20.00.04    1/09/2005       Erich Chen     fits for Debian linux kernel version 2.2.xx
+** 1.20.00.05    2/20/2005       Erich Chen     cleanly as look like a Linux driver at 2.6.x
+**                                              thanks for peoples kindness comment
+**                                             Kornel Wieliczek
+**                                             Christoph Hellwig
+**                                             Adrian Bunk
+**                                             Andrew Morton
+**                                             Christoph Hellwig
+**                                             James Bottomley
+**                                             Arjan van de Ven
+** 1.20.00.06    3/12/2005       Erich Chen     fix with arcmsr_pci_unmap_dma "unsigned long" cast,
+**                                             modify PCCB POOL allocated by "dma_alloc_coherent"
+**                                             (Kornel Wieliczek's comment)
+** 1.20.00.07    3/23/2005       Erich Chen     bug fix with arcmsr_scsi_host_template_init
+**                                             occur segmentation fault,
+**                                             if RAID adapter does not on PCI slot
+**                                             and modprobe/rmmod this driver twice.
+**                                             bug fix enormous stack usage (Adrian Bunk's comment)
+** 1.20.00.08    6/23/2005       Erich Chen     bug fix with abort command,
+**                                             in case of heavy loading when sata cable
+**                                             working on low quality connection
+** 1.20.00.09    9/12/2005       Erich Chen     bug fix with abort command handling, firmware version check
+**                                             and firmware update notify for hardware bug fix
+** 1.20.00.10    9/23/2005       Erich Chen     enhance sysfs function for change driver's max tag Q number.
+**                                             add DMA_64BIT_MASK for backward compatible with all 2.6.x
+**                                             add some useful message for abort command
+**                                             add ioctl code 'ARCMSR_IOCTL_FLUSH_ADAPTER_CACHE'
+**                                             customer can send this command for sync raid volume data
+** 1.20.00.11    9/29/2005       Erich Chen     by comment of Arjan van de Ven fix incorrect msleep redefine
+**                                             cast off sizeof(dma_addr_t) condition for 64bit pci_set_dma_mask
+** 1.20.00.12    9/30/2005       Erich Chen     bug fix with 64bit platform's ccbs using if over 4G system memory
+**                                             change 64bit pci_set_consistent_dma_mask into 32bit
+**                                             increcct adapter count if adapter initialize fail.
+**                                             miss edit at arcmsr_build_ccb....
+**                                             psge += sizeof(struct _SG64ENTRY *) =>
+**                                             psge += sizeof(struct _SG64ENTRY)
+**                                             64 bits sg entry would be incorrectly calculated
+**                                             thanks Kornel Wieliczek give me kindly notify
+**                                             and detail description
+** 1.20.00.13   11/15/2005       Erich Chen     scheduling pending ccb with FIFO
+**                                             change the architecture of arcmsr command queue list
+**                                             for linux standard list
+**                                             enable usage of pci message signal interrupt
+**                                             follow Randy.Danlup kindness suggestion cleanup this code
+**************************************************************************
\ No newline at end of file
index be55670..ee03678 100644 (file)
@@ -11,38 +11,43 @@ the original).
 Supported Cards/Chipsets
 -------------------------
        PCI ID (pci.ids)        OEM     Product
-       9005:0285:9005:028a     Adaptec 2020ZCR (Skyhawk)
-       9005:0285:9005:028e     Adaptec 2020SA (Skyhawk)
-       9005:0285:9005:028b     Adaptec 2025ZCR (Terminator)
-       9005:0285:9005:028f     Adaptec 2025SA (Terminator)
-       9005:0285:9005:0286     Adaptec 2120S (Crusader)
-       9005:0286:9005:028d     Adaptec 2130S (Lancer)
+       9005:0283:9005:0283     Adaptec Catapult (3210S with arc firmware)
+       9005:0284:9005:0284     Adaptec Tomcat (3410S with arc firmware)
        9005:0285:9005:0285     Adaptec 2200S (Vulcan)
+       9005:0285:9005:0286     Adaptec 2120S (Crusader)
        9005:0285:9005:0287     Adaptec 2200S (Vulcan-2m)
+       9005:0285:9005:0288     Adaptec 3230S (Harrier)
+       9005:0285:9005:0289     Adaptec 3240S (Tornado)
+       9005:0285:9005:028a     Adaptec 2020ZCR (Skyhawk)
+       9005:0285:9005:028b     Adaptec 2025ZCR (Terminator)
        9005:0286:9005:028c     Adaptec 2230S (Lancer)
        9005:0286:9005:028c     Adaptec 2230SLP (Lancer)
-       9005:0285:9005:0296     Adaptec 2240S (SabreExpress)
+       9005:0286:9005:028d     Adaptec 2130S (Lancer)
+       9005:0285:9005:028e     Adaptec 2020SA (Skyhawk)
+       9005:0285:9005:028f     Adaptec 2025SA (Terminator)
        9005:0285:9005:0290     Adaptec 2410SA (Jaguar)
-       9005:0285:9005:0293     Adaptec 21610SA (Corsair-16)
        9005:0285:103c:3227     Adaptec 2610SA (Bearcat HP release)
+       9005:0285:9005:0293     Adaptec 21610SA (Corsair-16)
+       9005:0285:9005:0296     Adaptec 2240S (SabreExpress)
        9005:0285:9005:0292     Adaptec 2810SA (Corsair-8)
        9005:0285:9005:0294     Adaptec Prowler
-       9005:0286:9005:029d     Adaptec 2420SA (Intruder HP release)
-       9005:0286:9005:029c     Adaptec 2620SA (Intruder)
-       9005:0286:9005:029b     Adaptec 2820SA (Intruder)
-       9005:0286:9005:02a7     Adaptec 2830SA (Skyray)
-       9005:0286:9005:02a8     Adaptec 2430SA (Skyray)
-       9005:0285:9005:0288     Adaptec 3230S (Harrier)
-       9005:0285:9005:0289     Adaptec 3240S (Tornado)
-       9005:0285:9005:0298     Adaptec 4000SAS (BlackBird)
        9005:0285:9005:0297     Adaptec 4005SAS (AvonPark)
+       9005:0285:9005:0298     Adaptec 4000SAS (BlackBird)
        9005:0285:9005:0299     Adaptec 4800SAS (Marauder-X)
        9005:0285:9005:029a     Adaptec 4805SAS (Marauder-E)
+       9005:0286:9005:029b     Adaptec 2820SA (Intruder)
+       9005:0286:9005:029c     Adaptec 2620SA (Intruder)
+       9005:0286:9005:029d     Adaptec 2420SA (Intruder HP release)
        9005:0286:9005:02a2     Adaptec 3800SAS (Hurricane44)
+       9005:0286:9005:02a7     Adaptec 3805SAS (Hurricane80)
+       9005:0286:9005:02a8     Adaptec 3400SAS (Hurricane40)
+       9005:0286:9005:02ac     Adaptec 1800SAS (Typhoon44)
+       9005:0286:9005:02b3     Adaptec 2400SAS (Hurricane40lm)
+       9005:0285:9005:02b5     Adaptec ASR5800 (Voodoo44)
+       9005:0285:9005:02b6     Adaptec ASR5805 (Voodoo80)
+       9005:0285:9005:02b7     Adaptec ASR5808 (Voodoo08)
        1011:0046:9005:0364     Adaptec 5400S (Mustang)
        1011:0046:9005:0365     Adaptec 5400S (Mustang)
-       9005:0283:9005:0283     Adaptec Catapult (3210S with arc firmware)
-       9005:0284:9005:0284     Adaptec Tomcat (3410S with arc firmware)
        9005:0287:9005:0800     Adaptec Themisto (Jupiter)
        9005:0200:9005:0200     Adaptec Themisto (Jupiter)
        9005:0286:9005:0800     Adaptec Callisto (Jupiter)
@@ -64,18 +69,20 @@ Supported Cards/Chipsets
        9005:0285:9005:0290     IBM     ServeRAID 7t (Jaguar)
        9005:0285:1014:02F2     IBM     ServeRAID 8i (AvonPark)
        9005:0285:1014:0312     IBM     ServeRAID 8i (AvonParkLite)
-       9005:0286:1014:9580     IBM     ServeRAID 8k/8k-l8 (Aurora)
        9005:0286:1014:9540     IBM     ServeRAID 8k/8k-l4 (AuroraLite)
-       9005:0286:9005:029f     ICP     ICP9014R0 (Lancer)
+       9005:0286:1014:9580     IBM     ServeRAID 8k/8k-l8 (Aurora)
+       9005:0286:1014:034d     IBM     ServeRAID 8s (Hurricane)
        9005:0286:9005:029e     ICP     ICP9024R0 (Lancer)
+       9005:0286:9005:029f     ICP     ICP9014R0 (Lancer)
        9005:0286:9005:02a0     ICP     ICP9047MA (Lancer)
        9005:0286:9005:02a1     ICP     ICP9087MA (Lancer)
+       9005:0286:9005:02a3     ICP     ICP5445AU (Hurricane44)
        9005:0286:9005:02a4     ICP     ICP9085LI (Marauder-X)
        9005:0286:9005:02a5     ICP     ICP5085BR (Marauder-E)
-       9005:0286:9005:02a3     ICP     ICP5445AU (Hurricane44)
        9005:0286:9005:02a6     ICP     ICP9067MA (Intruder-6)
-       9005:0286:9005:02a9     ICP     ICP5087AU (Skyray)
-       9005:0286:9005:02aa     ICP     ICP5047AU (Skyray)
+       9005:0286:9005:02a9     ICP     ICP5085AU (Hurricane80)
+       9005:0286:9005:02aa     ICP     ICP5045AU (Hurricane40)
+       9005:0286:9005:02b4     ICP     ICP5045AL (Hurricane40lm)
 
 People
 -------------------------
diff --git a/Documentation/scsi/arcmsr_spec.txt b/Documentation/scsi/arcmsr_spec.txt
new file mode 100644 (file)
index 0000000..5e00423
--- /dev/null
@@ -0,0 +1,574 @@
+*******************************************************************************
+**                            ARECA FIRMWARE SPEC
+*******************************************************************************
+**     Usage of IOP331 adapter
+**     (All In/Out is in IOP331's view)
+**     1. Message 0 --> InitThread message and retrun code
+**     2. Doorbell is used for RS-232 emulation
+**             inDoorBell :    bit0 -- data in ready
+**                     (DRIVER DATA WRITE OK)
+**                             bit1 -- data out has been read
+**                     (DRIVER DATA READ OK)
+**             outDooeBell:    bit0 -- data out ready
+**                     (IOP331 DATA WRITE OK)
+**                             bit1 -- data in has been read
+**                     (IOP331 DATA READ OK)
+**     3. Index Memory Usage
+**     offset 0xf00 : for RS232 out (request buffer)
+**     offset 0xe00 : for RS232 in  (scratch buffer)
+**     offset 0xa00 : for inbound message code message_rwbuffer
+**                     (driver send to IOP331)
+**     offset 0xa00 : for outbound message code message_rwbuffer
+**                     (IOP331 send to driver)
+**     4. RS-232 emulation
+**             Currently 128 byte buffer is used
+**                     1st uint32_t : Data length (1--124)
+**                     Byte 4--127  : Max 124 bytes of data
+**     5. PostQ
+**     All SCSI Command must be sent through postQ:
+**     (inbound queue port)    Request frame must be 32 bytes aligned
+**     #bit27--bit31 => flag for post ccb
+**     #bit0--bit26  => real address (bit27--bit31) of post arcmsr_cdb
+**             bit31 :
+**                     0 : 256 bytes frame
+**                     1 : 512 bytes frame
+**             bit30 :
+**                     0 : normal request
+**                     1 : BIOS request
+**             bit29 : reserved
+**             bit28 : reserved
+**             bit27 : reserved
+**  ---------------------------------------------------------------------------
+**     (outbount queue port)   Request reply
+**     #bit27--bit31
+**             => flag for reply
+**     #bit0--bit26
+**             => real address (bit27--bit31) of reply arcmsr_cdb
+**                     bit31 : must be 0 (for this type of reply)
+**                     bit30 : reserved for BIOS handshake
+**                     bit29 : reserved
+**                     bit28 :
+**                     0 : no error, ignore AdapStatus/DevStatus/SenseData
+**                     1 : Error, error code in AdapStatus/DevStatus/SenseData
+**                     bit27 : reserved
+**     6. BIOS request
+**             All BIOS request is the same with request from PostQ
+**             Except :
+**                     Request frame is sent from configuration space
+**             offset: 0x78 : Request Frame (bit30 == 1)
+**             offset: 0x18 : writeonly to generate
+**                                     IRQ to IOP331
+**             Completion of request:
+**                     (bit30 == 0, bit28==err flag)
+**     7. Definition of SGL entry (structure)
+**     8. Message1 Out - Diag Status Code (????)
+**     9. Message0 message code :
+**             0x00 : NOP
+**             0x01 : Get Config
+**             ->offset 0xa00 :for outbound message code message_rwbuffer
+**             (IOP331 send to driver)
+**             Signature             0x87974060(4)
+**             Request len           0x00000200(4)
+**             numbers of queue      0x00000100(4)
+**             SDRAM Size            0x00000100(4)-->256 MB
+**             IDE Channels          0x00000008(4)
+**             vendor                40 bytes char
+**             model                  8 bytes char
+**             FirmVer               16 bytes char
+**             Device Map            16 bytes char
+**             FirmwareVersion DWORD <== Added for checking of
+**                                             new firmware capability
+**             0x02 : Set Config
+**             ->offset 0xa00 :for inbound message code message_rwbuffer
+**             (driver send to IOP331)
+**             Signature             0x87974063(4)
+**             UPPER32 of Request Frame  (4)-->Driver Only
+**             0x03 : Reset (Abort all queued Command)
+**             0x04 : Stop Background Activity
+**             0x05 : Flush Cache
+**             0x06 : Start Background Activity
+**                     (re-start if background is halted)
+**             0x07 : Check If Host Command Pending
+**                     (Novell May Need This Function)
+**             0x08 : Set controller time
+**             ->offset 0xa00 : for inbound message code message_rwbuffer
+**             (driver to IOP331)
+**             byte 0 : 0xaa <-- signature
+**             byte 1 : 0x55 <-- signature
+**             byte 2 : year (04)
+**             byte 3 : month (1..12)
+**             byte 4 : date (1..31)
+**             byte 5 : hour (0..23)
+**             byte 6 : minute (0..59)
+**             byte 7 : second (0..59)
+*******************************************************************************
+*******************************************************************************
+**             RS-232 Interface for Areca Raid Controller
+**      The low level command interface is exclusive with VT100 terminal
+**  --------------------------------------------------------------------
+**      1. Sequence of command execution
+**  --------------------------------------------------------------------
+**     (A) Header : 3 bytes sequence (0x5E, 0x01, 0x61)
+**     (B) Command block : variable length of data including length,
+**             command code, data and checksum byte
+**     (C) Return data : variable length of data
+**  --------------------------------------------------------------------
+**    2. Command block
+**  --------------------------------------------------------------------
+**     (A) 1st byte : command block length (low byte)
+**     (B) 2nd byte : command block length (high byte)
+**                note ..command block length shouldn't > 2040 bytes,
+**             length excludes these two bytes
+**     (C) 3rd byte : command code
+**     (D) 4th and following bytes : variable length data bytes
+**             depends on command code
+**     (E) last byte : checksum byte (sum of 1st byte until last data byte)
+**  --------------------------------------------------------------------
+**    3. Command code and associated data
+**  --------------------------------------------------------------------
+**     The following are command code defined in raid controller Command
+**     code 0x10--0x1? are used for system level management,
+**     no password checking is needed and should be implemented in separate
+**     well controlled utility and not for end user access.
+**     Command code 0x20--0x?? always check the password,
+**     password must be entered to enable these command.
+**     enum
+**     {
+**             GUI_SET_SERIAL=0x10,
+**             GUI_SET_VENDOR,
+**             GUI_SET_MODEL,
+**             GUI_IDENTIFY,
+**             GUI_CHECK_PASSWORD,
+**             GUI_LOGOUT,
+**             GUI_HTTP,
+**             GUI_SET_ETHERNET_ADDR,
+**             GUI_SET_LOGO,
+**             GUI_POLL_EVENT,
+**             GUI_GET_EVENT,
+**             GUI_GET_HW_MONITOR,
+**             //    GUI_QUICK_CREATE=0x20, (function removed)
+**             GUI_GET_INFO_R=0x20,
+**             GUI_GET_INFO_V,
+**             GUI_GET_INFO_P,
+**             GUI_GET_INFO_S,
+**             GUI_CLEAR_EVENT,
+**             GUI_MUTE_BEEPER=0x30,
+**             GUI_BEEPER_SETTING,
+**             GUI_SET_PASSWORD,
+**             GUI_HOST_INTERFACE_MODE,
+**             GUI_REBUILD_PRIORITY,
+**             GUI_MAX_ATA_MODE,
+**             GUI_RESET_CONTROLLER,
+**             GUI_COM_PORT_SETTING,
+**             GUI_NO_OPERATION,
+**             GUI_DHCP_IP,
+**             GUI_CREATE_PASS_THROUGH=0x40,
+**             GUI_MODIFY_PASS_THROUGH,
+**             GUI_DELETE_PASS_THROUGH,
+**             GUI_IDENTIFY_DEVICE,
+**             GUI_CREATE_RAIDSET=0x50,
+**             GUI_DELETE_RAIDSET,
+**             GUI_EXPAND_RAIDSET,
+**             GUI_ACTIVATE_RAIDSET,
+**             GUI_CREATE_HOT_SPARE,
+**             GUI_DELETE_HOT_SPARE,
+**             GUI_CREATE_VOLUME=0x60,
+**             GUI_MODIFY_VOLUME,
+**             GUI_DELETE_VOLUME,
+**             GUI_START_CHECK_VOLUME,
+**             GUI_STOP_CHECK_VOLUME
+**     };
+**    Command description :
+**     GUI_SET_SERIAL : Set the controller serial#
+**             byte 0,1        : length
+**             byte 2          : command code 0x10
+**             byte 3          : password length (should be 0x0f)
+**             byte 4-0x13     : should be "ArEcATecHnoLogY"
+**             byte 0x14--0x23 : Serial number string (must be 16 bytes)
+**      GUI_SET_VENDOR : Set vendor string for the controller
+**             byte 0,1        : length
+**             byte 2          : command code 0x11
+**             byte 3          : password length (should be 0x08)
+**             byte 4-0x13     : should be "ArEcAvAr"
+**             byte 0x14--0x3B : vendor string (must be 40 bytes)
+**      GUI_SET_MODEL : Set the model name of the controller
+**             byte 0,1        : length
+**             byte 2          : command code 0x12
+**             byte 3          : password length (should be 0x08)
+**             byte 4-0x13     : should be "ArEcAvAr"
+**             byte 0x14--0x1B : model string (must be 8 bytes)
+**      GUI_IDENTIFY : Identify device
+**             byte 0,1        : length
+**             byte 2          : command code 0x13
+**                               return "Areca RAID Subsystem "
+**      GUI_CHECK_PASSWORD : Verify password
+**             byte 0,1        : length
+**             byte 2          : command code 0x14
+**             byte 3          : password length
+**             byte 4-0x??     : user password to be checked
+**      GUI_LOGOUT : Logout GUI (force password checking on next command)
+**             byte 0,1        : length
+**             byte 2          : command code 0x15
+**      GUI_HTTP : HTTP interface (reserved for Http proxy service)(0x16)
+**
+**      GUI_SET_ETHERNET_ADDR : Set the ethernet MAC address
+**             byte 0,1        : length
+**             byte 2          : command code 0x17
+**             byte 3          : password length (should be 0x08)
+**             byte 4-0x13     : should be "ArEcAvAr"
+**             byte 0x14--0x19 : Ethernet MAC address (must be 6 bytes)
+**      GUI_SET_LOGO : Set logo in HTTP
+**             byte 0,1        : length
+**             byte 2          : command code 0x18
+**             byte 3          : Page# (0/1/2/3) (0xff --> clear OEM logo)
+**             byte 4/5/6/7    : 0x55/0xaa/0xa5/0x5a
+**             byte 8          : TITLE.JPG data (each page must be 2000 bytes)
+**                               note page0 1st 2 byte must be
+**                                     actual length of the JPG file
+**      GUI_POLL_EVENT : Poll If Event Log Changed
+**             byte 0,1        : length
+**             byte 2          : command code 0x19
+**      GUI_GET_EVENT : Read Event
+**             byte 0,1        : length
+**             byte 2          : command code 0x1a
+**             byte 3          : Event Page (0:1st page/1/2/3:last page)
+**      GUI_GET_HW_MONITOR : Get HW monitor data
+**             byte 0,1        : length
+**             byte 2                  : command code 0x1b
+**             byte 3                  : # of FANs(example 2)
+**             byte 4                  : # of Voltage sensor(example 3)
+**             byte 5                  : # of temperature sensor(example 2)
+**             byte 6                  : # of power
+**             byte 7/8        : Fan#0 (RPM)
+**             byte 9/10       : Fan#1
+**             byte 11/12              : Voltage#0 original value in *1000
+**             byte 13/14              : Voltage#0 value
+**             byte 15/16              : Voltage#1 org
+**             byte 17/18              : Voltage#1
+**             byte 19/20              : Voltage#2 org
+**             byte 21/22              : Voltage#2
+**             byte 23                 : Temp#0
+**             byte 24                 : Temp#1
+**             byte 25                 : Power indicator (bit0 : power#0,
+**                                              bit1 : power#1)
+**             byte 26                 : UPS indicator
+**      GUI_QUICK_CREATE : Quick create raid/volume set
+**         byte 0,1        : length
+**         byte 2          : command code 0x20
+**         byte 3/4/5/6    : raw capacity
+**         byte 7                      : raid level
+**         byte 8                      : stripe size
+**         byte 9                      : spare
+**         byte 10/11/12/13: device mask (the devices to create raid/volume)
+**             This function is removed, application like
+**             to implement quick create function
+**     need to use GUI_CREATE_RAIDSET and GUI_CREATE_VOLUMESET function.
+**      GUI_GET_INFO_R : Get Raid Set Information
+**             byte 0,1        : length
+**             byte 2          : command code 0x20
+**             byte 3          : raidset#
+**     typedef struct sGUI_RAIDSET
+**     {
+**             BYTE grsRaidSetName[16];
+**             DWORD grsCapacity;
+**             DWORD grsCapacityX;
+**             DWORD grsFailMask;
+**             BYTE grsDevArray[32];
+**             BYTE grsMemberDevices;
+**             BYTE grsNewMemberDevices;
+**             BYTE grsRaidState;
+**             BYTE grsVolumes;
+**             BYTE grsVolumeList[16];
+**             BYTE grsRes1;
+**             BYTE grsRes2;
+**             BYTE grsRes3;
+**             BYTE grsFreeSegments;
+**             DWORD grsRawStripes[8];
+**             DWORD grsRes4;
+**             DWORD grsRes5; //     Total to 128 bytes
+**             DWORD grsRes6; //     Total to 128 bytes
+**     } sGUI_RAIDSET, *pGUI_RAIDSET;
+**      GUI_GET_INFO_V : Get Volume Set Information
+**             byte 0,1        : length
+**             byte 2          : command code 0x21
+**             byte 3          : volumeset#
+**     typedef struct sGUI_VOLUMESET
+**     {
+**             BYTE gvsVolumeName[16]; //     16
+**             DWORD gvsCapacity;
+**             DWORD gvsCapacityX;
+**             DWORD gvsFailMask;
+**             DWORD gvsStripeSize;
+**             DWORD gvsNewFailMask;
+**             DWORD gvsNewStripeSize;
+**             DWORD gvsVolumeStatus;
+**             DWORD gvsProgress; //     32
+**             sSCSI_ATTR gvsScsi;
+**             BYTE gvsMemberDisks;
+**             BYTE gvsRaidLevel; //     8
+**             BYTE gvsNewMemberDisks;
+**             BYTE gvsNewRaidLevel;
+**             BYTE gvsRaidSetNumber;
+**             BYTE gvsRes0; //     4
+**             BYTE gvsRes1[4]; //     64 bytes
+**     } sGUI_VOLUMESET, *pGUI_VOLUMESET;
+**      GUI_GET_INFO_P : Get Physical Drive Information
+**             byte 0,1        : length
+**             byte 2          : command code 0x22
+**             byte 3          : drive # (from 0 to max-channels - 1)
+**     typedef struct sGUI_PHY_DRV
+**     {
+**             BYTE gpdModelName[40];
+**             BYTE gpdSerialNumber[20];
+**             BYTE gpdFirmRev[8];
+**             DWORD gpdCapacity;
+**             DWORD gpdCapacityX; //     Reserved for expansion
+**             BYTE gpdDeviceState;
+**             BYTE gpdPioMode;
+**             BYTE gpdCurrentUdmaMode;
+**             BYTE gpdUdmaMode;
+**             BYTE gpdDriveSelect;
+**             BYTE gpdRaidNumber; //     0xff if not belongs to a raid set
+**             sSCSI_ATTR gpdScsi;
+**             BYTE gpdReserved[40]; //     Total to 128 bytes
+**     } sGUI_PHY_DRV, *pGUI_PHY_DRV;
+**     GUI_GET_INFO_S : Get System Information
+**             byte 0,1        : length
+**             byte 2          : command code 0x23
+**     typedef struct sCOM_ATTR
+**     {
+**             BYTE comBaudRate;
+**             BYTE comDataBits;
+**             BYTE comStopBits;
+**             BYTE comParity;
+**             BYTE comFlowControl;
+**     } sCOM_ATTR, *pCOM_ATTR;
+**     typedef struct sSYSTEM_INFO
+**     {
+**             BYTE gsiVendorName[40];
+**             BYTE gsiSerialNumber[16];
+**             BYTE gsiFirmVersion[16];
+**             BYTE gsiBootVersion[16];
+**             BYTE gsiMbVersion[16];
+**             BYTE gsiModelName[8];
+**             BYTE gsiLocalIp[4];
+**             BYTE gsiCurrentIp[4];
+**             DWORD gsiTimeTick;
+**             DWORD gsiCpuSpeed;
+**             DWORD gsiICache;
+**             DWORD gsiDCache;
+**             DWORD gsiScache;
+**             DWORD gsiMemorySize;
+**             DWORD gsiMemorySpeed;
+**             DWORD gsiEvents;
+**             BYTE gsiMacAddress[6];
+**             BYTE gsiDhcp;
+**             BYTE gsiBeeper;
+**             BYTE gsiChannelUsage;
+**             BYTE gsiMaxAtaMode;
+**             BYTE gsiSdramEcc; //     1:if ECC enabled
+**             BYTE gsiRebuildPriority;
+**             sCOM_ATTR gsiComA; //     5 bytes
+**             sCOM_ATTR gsiComB; //     5 bytes
+**             BYTE gsiIdeChannels;
+**             BYTE gsiScsiHostChannels;
+**             BYTE gsiIdeHostChannels;
+**             BYTE gsiMaxVolumeSet;
+**             BYTE gsiMaxRaidSet;
+**             BYTE gsiEtherPort; //     1:if ether net port supported
+**             BYTE gsiRaid6Engine; //     1:Raid6 engine supported
+**             BYTE gsiRes[75];
+**     } sSYSTEM_INFO, *pSYSTEM_INFO;
+**     GUI_CLEAR_EVENT : Clear System Event
+**             byte 0,1        : length
+**             byte 2          : command code 0x24
+**      GUI_MUTE_BEEPER : Mute current beeper
+**             byte 0,1        : length
+**             byte 2          : command code 0x30
+**      GUI_BEEPER_SETTING : Disable beeper
+**             byte 0,1        : length
+**             byte 2          : command code 0x31
+**             byte 3          : 0->disable, 1->enable
+**      GUI_SET_PASSWORD : Change password
+**             byte 0,1        : length
+**             byte 2                  : command code 0x32
+**             byte 3                  : pass word length ( must <= 15 )
+**             byte 4                  : password (must be alpha-numerical)
+**     GUI_HOST_INTERFACE_MODE : Set host interface mode
+**             byte 0,1        : length
+**             byte 2                  : command code 0x33
+**             byte 3                  : 0->Independent, 1->cluster
+**      GUI_REBUILD_PRIORITY : Set rebuild priority
+**             byte 0,1        : length
+**             byte 2                  : command code 0x34
+**             byte 3                  : 0/1/2/3 (low->high)
+**      GUI_MAX_ATA_MODE : Set maximum ATA mode to be used
+**             byte 0,1        : length
+**             byte 2                  : command code 0x35
+**             byte 3                  : 0/1/2/3 (133/100/66/33)
+**      GUI_RESET_CONTROLLER : Reset Controller
+**             byte 0,1        : length
+**             byte 2          : command code 0x36
+**                            *Response with VT100 screen (discard it)
+**      GUI_COM_PORT_SETTING : COM port setting
+**             byte 0,1        : length
+**             byte 2                  : command code 0x37
+**             byte 3                  : 0->COMA (term port),
+**                                       1->COMB (debug port)
+**             byte 4                  : 0/1/2/3/4/5/6/7
+**                     (1200/2400/4800/9600/19200/38400/57600/115200)
+**             byte 5                  : data bit
+**                                     (0:7 bit, 1:8 bit : must be 8 bit)
+**             byte 6                  : stop bit (0:1, 1:2 stop bits)
+**             byte 7                  : parity (0:none, 1:off, 2:even)
+**             byte 8                  : flow control
+**                     (0:none, 1:xon/xoff, 2:hardware => must use none)
+**      GUI_NO_OPERATION : No operation
+**             byte 0,1        : length
+**             byte 2          : command code 0x38
+**      GUI_DHCP_IP : Set DHCP option and local IP address
+**             byte 0,1        : length
+**             byte 2          : command code 0x39
+**             byte 3          : 0:dhcp disabled, 1:dhcp enabled
+**             byte 4/5/6/7    : IP address
+**      GUI_CREATE_PASS_THROUGH : Create pass through disk
+**             byte 0,1        : length
+**             byte 2                  : command code 0x40
+**             byte 3                  : device #
+**             byte 4                  : scsi channel (0/1)
+**             byte 5                  : scsi id (0-->15)
+**             byte 6                  : scsi lun (0-->7)
+**             byte 7                  : tagged queue (1 : enabled)
+**             byte 8                  : cache mode (1 : enabled)
+**             byte 9                  : max speed (0/1/2/3/4,
+**                     async/20/40/80/160 for scsi)
+**                     (0/1/2/3/4, 33/66/100/133/150 for ide  )
+**      GUI_MODIFY_PASS_THROUGH : Modify pass through disk
+**             byte 0,1        : length
+**             byte 2                  : command code 0x41
+**             byte 3                  : device #
+**             byte 4                  : scsi channel (0/1)
+**             byte 5                  : scsi id (0-->15)
+**             byte 6                  : scsi lun (0-->7)
+**             byte 7                  : tagged queue (1 : enabled)
+**             byte 8                  : cache mode (1 : enabled)
+**             byte 9                  : max speed (0/1/2/3/4,
+**                                     async/20/40/80/160 for scsi)
+**                     (0/1/2/3/4, 33/66/100/133/150 for ide  )
+**      GUI_DELETE_PASS_THROUGH : Delete pass through disk
+**             byte 0,1        : length
+**             byte 2          : command code 0x42
+**             byte 3          : device# to be deleted
+**      GUI_IDENTIFY_DEVICE : Identify Device
+**             byte 0,1        : length
+**             byte 2          : command code 0x43
+**             byte 3          : Flash Method
+**                             (0:flash selected, 1:flash not selected)
+**             byte 4/5/6/7    : IDE device mask to be flashed
+**                           note .... no response data available
+**     GUI_CREATE_RAIDSET : Create Raid Set
+**             byte 0,1        : length
+**             byte 2          : command code 0x50
+**             byte 3/4/5/6    : device mask
+**             byte 7-22       : raidset name (if byte 7 == 0:use default)
+**      GUI_DELETE_RAIDSET : Delete Raid Set
+**             byte 0,1        : length
+**             byte 2          : command code 0x51
+**             byte 3          : raidset#
+**     GUI_EXPAND_RAIDSET : Expand Raid Set
+**             byte 0,1        : length
+**             byte 2          : command code 0x52
+**             byte 3          : raidset#
+**             byte 4/5/6/7    : device mask for expansion
+**             byte 8/9/10     : (8:0 no change, 1 change, 0xff:terminate,
+**                             9:new raid level,
+**                             10:new stripe size
+**                             0/1/2/3/4/5->4/8/16/32/64/128K )
+**             byte 11/12/13   : repeat for each volume in the raidset
+**      GUI_ACTIVATE_RAIDSET : Activate incomplete raid set
+**             byte 0,1        : length
+**             byte 2          : command code 0x53
+**             byte 3          : raidset#
+**      GUI_CREATE_HOT_SPARE : Create hot spare disk
+**             byte 0,1        : length
+**             byte 2          : command code 0x54
+**             byte 3/4/5/6    : device mask for hot spare creation
+**     GUI_DELETE_HOT_SPARE : Delete hot spare disk
+**             byte 0,1        : length
+**             byte 2          : command code 0x55
+**             byte 3/4/5/6    : device mask for hot spare deletion
+**     GUI_CREATE_VOLUME : Create volume set
+**             byte 0,1        : length
+**             byte 2          : command code 0x60
+**             byte 3          : raidset#
+**             byte 4-19       : volume set name
+**                             (if byte4 == 0, use default)
+**             byte 20-27      : volume capacity (blocks)
+**             byte 28                 : raid level
+**             byte 29                 : stripe size
+**                             (0/1/2/3/4/5->4/8/16/32/64/128K)
+**             byte 30                 : channel
+**             byte 31                 : ID
+**             byte 32                 : LUN
+**             byte 33                 : 1 enable tag
+**             byte 34                 : 1 enable cache
+**             byte 35                 : speed
+**             (0/1/2/3/4->async/20/40/80/160 for scsi)
+**             (0/1/2/3/4->33/66/100/133/150 for IDE  )
+**             byte 36                 : 1 to select quick init
+**
+**     GUI_MODIFY_VOLUME : Modify volume Set
+**             byte 0,1        : length
+**             byte 2          : command code 0x61
+**             byte 3          : volumeset#
+**             byte 4-19       : new volume set name
+**             (if byte4 == 0, not change)
+**             byte 20-27      : new volume capacity (reserved)
+**             byte 28                 : new raid level
+**             byte 29                 : new stripe size
+**             (0/1/2/3/4/5->4/8/16/32/64/128K)
+**             byte 30                 : new channel
+**             byte 31                 : new ID
+**             byte 32                 : new LUN
+**             byte 33                 : 1 enable tag
+**             byte 34                 : 1 enable cache
+**             byte 35                 : speed
+**             (0/1/2/3/4->async/20/40/80/160 for scsi)
+**             (0/1/2/3/4->33/66/100/133/150 for IDE  )
+**     GUI_DELETE_VOLUME : Delete volume set
+**             byte 0,1        : length
+**             byte 2          : command code 0x62
+**             byte 3          : volumeset#
+**     GUI_START_CHECK_VOLUME : Start volume consistency check
+**             byte 0,1        : length
+**             byte 2          : command code 0x63
+**             byte 3          : volumeset#
+**     GUI_STOP_CHECK_VOLUME : Stop volume consistency check
+**             byte 0,1        : length
+**             byte 2          : command code 0x64
+** ---------------------------------------------------------------------
+**    4. Returned data
+** ---------------------------------------------------------------------
+**     (A) Header          : 3 bytes sequence (0x5E, 0x01, 0x61)
+**     (B) Length          : 2 bytes
+**                     (low byte 1st, excludes length and checksum byte)
+**     (C) status or data  :
+**           <1> If length == 1 ==> 1 byte status code
+**             #define GUI_OK                    0x41
+**             #define GUI_RAIDSET_NOT_NORMAL    0x42
+**             #define GUI_VOLUMESET_NOT_NORMAL  0x43
+**             #define GUI_NO_RAIDSET            0x44
+**             #define GUI_NO_VOLUMESET          0x45
+**             #define GUI_NO_PHYSICAL_DRIVE     0x46
+**             #define GUI_PARAMETER_ERROR       0x47
+**             #define GUI_UNSUPPORTED_COMMAND   0x48
+**             #define GUI_DISK_CONFIG_CHANGED   0x49
+**             #define GUI_INVALID_PASSWORD      0x4a
+**             #define GUI_NO_DISK_SPACE         0x4b
+**             #define GUI_CHECKSUM_ERROR        0x4c
+**             #define GUI_PASSWORD_REQUIRED     0x4d
+**           <2> If length > 1 ==>
+**             data block returned from controller
+**             and the contents depends on the command code
+**     (E) Checksum        : checksum of length and status or data byte
+**************************************************************************
diff --git a/Documentation/scsi/libsas.txt b/Documentation/scsi/libsas.txt
new file mode 100644 (file)
index 0000000..9e2078b
--- /dev/null
@@ -0,0 +1,484 @@
+SAS Layer
+---------
+
+The SAS Layer is a management infrastructure which manages
+SAS LLDDs.  It sits between SCSI Core and SAS LLDDs.  The
+layout is as follows: while SCSI Core is concerned with
+SAM/SPC issues, and a SAS LLDD+sequencer is concerned with
+phy/OOB/link management, the SAS layer is concerned with:
+
+      * SAS Phy/Port/HA event management (LLDD generates,
+        SAS Layer processes),
+      * SAS Port management (creation/destruction),
+      * SAS Domain discovery and revalidation,
+      * SAS Domain device management,
+      * SCSI Host registration/unregistration,
+      * Device registration with SCSI Core (SAS) or libata
+        (SATA), and
+      * Expander management and exporting expander control
+        to user space.
+
+A SAS LLDD is a PCI device driver.  It is concerned with
+phy/OOB management, and vendor specific tasks and generates
+events to the SAS layer.
+
+The SAS Layer does most SAS tasks as outlined in the SAS 1.1
+spec.
+
+The sas_ha_struct describes the SAS LLDD to the SAS layer.
+Most of it is used by the SAS Layer but a few fields need to
+be initialized by the LLDDs.
+
+After initializing your hardware, from the probe() function
+you call sas_register_ha(). It will register your LLDD with
+the SCSI subsystem, creating a SCSI host and it will
+register your SAS driver with the sysfs SAS tree it creates.
+It will then return.  Then you enable your phys to actually
+start OOB (at which point your driver will start calling the
+notify_* event callbacks).
+
+Structure descriptions:
+
+struct sas_phy --------------------
+Normally this is statically embedded to your driver's
+phy structure:
+       struct my_phy {
+              blah;
+              struct sas_phy sas_phy;
+              bleh;
+       };
+And then all the phys are an array of my_phy in your HA
+struct (shown below).
+
+Then as you go along and initialize your phys you also
+initialize the sas_phy struct, along with your own
+phy structure.
+
+In general, the phys are managed by the LLDD and the ports
+are managed by the SAS layer.  So the phys are initialized
+and updated by the LLDD and the ports are initialized and
+updated by the SAS layer.
+
+There is a scheme where the LLDD can RW certain fields,
+and the SAS layer can only read such ones, and vice versa.
+The idea is to avoid unnecessary locking.
+
+enabled -- must be set (0/1)
+id -- must be set [0,MAX_PHYS)
+class, proto, type, role, oob_mode, linkrate -- must be set
+oob_mode --  you set this when OOB has finished and then notify
+the SAS Layer.
+
+sas_addr -- this normally points to an array holding the sas
+address of the phy, possibly somewhere in your my_phy
+struct.
+
+attached_sas_addr -- set this when you (LLDD) receive an
+IDENTIFY frame or a FIS frame, _before_ notifying the SAS
+layer.  The idea is that sometimes the LLDD may want to fake
+or provide a different SAS address on that phy/port and this
+allows it to do this.  At best you should copy the sas
+address from the IDENTIFY frame or maybe generate a SAS
+address for SATA directly attached devices.  The Discover
+process may later change this.
+
+frame_rcvd -- this is where you copy the IDENTIFY/FIS frame
+when you get it; you lock, copy, set frame_rcvd_size and
+unlock the lock, and then call the event.  It is a pointer
+since there's no way to know your hw frame size _exactly_,
+so you define the actual array in your phy struct and let
+this pointer point to it.  You copy the frame from your
+DMAable memory to that area holding the lock.
+
+sas_prim -- this is where primitives go when they're
+received.  See sas.h. Grab the lock, set the primitive,
+release the lock, notify.
+
+port -- this points to the sas_port if the phy belongs
+to a port -- the LLDD only reads this. It points to the
+sas_port this phy is part of.  Set by the SAS Layer.
+
+ha -- may be set; the SAS layer sets it anyway.
+
+lldd_phy -- you should set this to point to your phy so you
+can find your way around faster when the SAS layer calls one
+of your callbacks and passes you a phy.  If the sas_phy is
+embedded you can also use container_of -- whatever you
+prefer.
+
+
+struct sas_port --------------------
+The LLDD doesn't set any fields of this struct -- it only
+reads them.  They should be self explanatory.
+
+phy_mask is 32 bit, this should be enough for now, as I
+haven't heard of a HA having more than 8 phys.
+
+lldd_port -- I haven't found use for that -- maybe other
+LLDD who wish to have internal port representation can make
+use of this.
+
+
+struct sas_ha_struct --------------------
+It normally is statically declared in your own LLDD
+structure describing your adapter:
+struct my_sas_ha {
+       blah;
+       struct sas_ha_struct sas_ha;
+       struct my_phy phys[MAX_PHYS];
+       struct sas_port sas_ports[MAX_PHYS]; /* (1) */
+       bleh;
+};
+
+(1) If your LLDD doesn't have its own port representation.
+
+What needs to be initialized (sample function given below).
+
+pcidev
+sas_addr -- since the SAS layer doesn't want to mess with
+        memory allocation, etc, this points to statically
+        allocated array somewhere (say in your host adapter
+        structure) and holds the SAS address of the host
+        adapter as given by you or the manufacturer, etc.
+sas_port
+sas_phy -- an array of pointers to structures. (see
+       note above on sas_addr).
+       These must be set.  See more notes below.
+num_phys -- the number of phys present in the sas_phy array,
+        and the number of ports present in the sas_port
+        array.  There can be a maximum num_phys ports (one per
+        port) so we drop the num_ports, and only use
+        num_phys.
+
+The event interface:
+
+       /* LLDD calls these to notify the class of an event. */
+       void (*notify_ha_event)(struct sas_ha_struct *, enum ha_event);
+       void (*notify_port_event)(struct sas_phy *, enum port_event);
+       void (*notify_phy_event)(struct sas_phy *, enum phy_event);
+
+When sas_register_ha() returns, those are set and can be
+called by the LLDD to notify the SAS layer of such events
+the SAS layer.
+
+The port notification:
+
+       /* The class calls these to notify the LLDD of an event. */
+       void (*lldd_port_formed)(struct sas_phy *);
+       void (*lldd_port_deformed)(struct sas_phy *);
+
+If the LLDD wants notification when a port has been formed
+or deformed it sets those to a function satisfying the type.
+
+A SAS LLDD should also implement at least one of the Task
+Management Functions (TMFs) described in SAM:
+
+       /* Task Management Functions. Must be called from process context. */
+       int (*lldd_abort_task)(struct sas_task *);
+       int (*lldd_abort_task_set)(struct domain_device *, u8 *lun);
+       int (*lldd_clear_aca)(struct domain_device *, u8 *lun);
+       int (*lldd_clear_task_set)(struct domain_device *, u8 *lun);
+       int (*lldd_I_T_nexus_reset)(struct domain_device *);
+       int (*lldd_lu_reset)(struct domain_device *, u8 *lun);
+       int (*lldd_query_task)(struct sas_task *);
+
+For more information please read SAM from T10.org.
+
+Port and Adapter management:
+
+       /* Port and Adapter management */
+       int (*lldd_clear_nexus_port)(struct sas_port *);
+       int (*lldd_clear_nexus_ha)(struct sas_ha_struct *);
+
+A SAS LLDD should implement at least one of those.
+
+Phy management:
+
+       /* Phy management */
+       int (*lldd_control_phy)(struct sas_phy *, enum phy_func);
+
+lldd_ha -- set this to point to your HA struct. You can also
+use container_of if you embedded it as shown above.
+
+A sample initialization and registration function
+can look like this (called last thing from probe())
+*but* before you enable the phys to do OOB:
+
+static int register_sas_ha(struct my_sas_ha *my_ha)
+{
+       int i;
+       static struct sas_phy   *sas_phys[MAX_PHYS];
+       static struct sas_port  *sas_ports[MAX_PHYS];
+
+       my_ha->sas_ha.sas_addr = &my_ha->sas_addr[0];
+
+       for (i = 0; i < MAX_PHYS; i++) {
+               sas_phys[i] = &my_ha->phys[i].sas_phy;
+               sas_ports[i] = &my_ha->sas_ports[i];
+       }
+
+       my_ha->sas_ha.sas_phy  = sas_phys;
+       my_ha->sas_ha.sas_port = sas_ports;
+       my_ha->sas_ha.num_phys = MAX_PHYS;
+
+       my_ha->sas_ha.lldd_port_formed = my_port_formed;
+
+       my_ha->sas_ha.lldd_dev_found = my_dev_found;
+       my_ha->sas_ha.lldd_dev_gone = my_dev_gone;
+
+       my_ha->sas_ha.lldd_max_execute_num = lldd_max_execute_num; (1)
+
+       my_ha->sas_ha.lldd_queue_size = ha_can_queue;
+       my_ha->sas_ha.lldd_execute_task = my_execute_task;
+
+       my_ha->sas_ha.lldd_abort_task     = my_abort_task;
+       my_ha->sas_ha.lldd_abort_task_set = my_abort_task_set;
+       my_ha->sas_ha.lldd_clear_aca      = my_clear_aca;
+       my_ha->sas_ha.lldd_clear_task_set = my_clear_task_set;
+       my_ha->sas_ha.lldd_I_T_nexus_reset= NULL; (2)
+       my_ha->sas_ha.lldd_lu_reset       = my_lu_reset;
+       my_ha->sas_ha.lldd_query_task     = my_query_task;
+
+       my_ha->sas_ha.lldd_clear_nexus_port = my_clear_nexus_port;
+       my_ha->sas_ha.lldd_clear_nexus_ha = my_clear_nexus_ha;
+
+       my_ha->sas_ha.lldd_control_phy = my_control_phy;
+
+       return sas_register_ha(&my_ha->sas_ha);
+}
+
+(1) This is normally a LLDD parameter, something of the
+lines of a task collector.  What it tells the SAS Layer is
+whether the SAS layer should run in Direct Mode (default:
+value 0 or 1) or Task Collector Mode (value greater than 1).
+
+In Direct Mode, the SAS Layer calls Execute Task as soon as
+it has a command to send to the SDS, _and_ this is a single
+command, i.e. not linked.
+
+Some hardware (e.g. aic94xx) has the capability to DMA more
+than one task at a time (interrupt) from host memory.  Task
+Collector Mode is an optional feature for HAs which support
+this in their hardware.  (Again, it is completely optional
+even if your hardware supports it.)
+
+In Task Collector Mode, the SAS Layer would do _natural_
+coalescing of tasks and at the appropriate moment it would
+call your driver to DMA more than one task in a single HA
+interrupt. DMBS may want to use this by insmod/modprobe
+setting the lldd_max_execute_num to something greater than
+1.
+
+(2) SAS 1.1 does not define I_T Nexus Reset TMF.
+
+Events
+------
+
+Events are _the only way_ a SAS LLDD notifies the SAS layer
+of anything.  There is no other method or way a LLDD to tell
+the SAS layer of anything happening internally or in the SAS
+domain.
+
+Phy events:
+       PHYE_LOSS_OF_SIGNAL, (C)
+       PHYE_OOB_DONE,
+       PHYE_OOB_ERROR,      (C)
+       PHYE_SPINUP_HOLD.
+
+Port events, passed on a _phy_:
+       PORTE_BYTES_DMAED,      (M)
+       PORTE_BROADCAST_RCVD,   (E)
+       PORTE_LINK_RESET_ERR,   (C)
+       PORTE_TIMER_EVENT,      (C)
+       PORTE_HARD_RESET.
+
+Host Adapter event:
+       HAE_RESET
+
+A SAS LLDD should be able to generate
+       - at least one event from group C (choice),
+       - events marked M (mandatory) are mandatory (only one),
+       - events marked E (expander) if it wants the SAS layer
+         to handle domain revalidation (only one such).
+       - Unmarked events are optional.
+
+Meaning:
+
+HAE_RESET -- when your HA got internal error and was reset.
+
+PORTE_BYTES_DMAED -- on receiving an IDENTIFY/FIS frame
+PORTE_BROADCAST_RCVD -- on receiving a primitive
+PORTE_LINK_RESET_ERR -- timer expired, loss of signal, loss
+of DWS, etc. (*)
+PORTE_TIMER_EVENT -- DWS reset timeout timer expired (*)
+PORTE_HARD_RESET -- Hard Reset primitive received.
+
+PHYE_LOSS_OF_SIGNAL -- the device is gone (*)
+PHYE_OOB_DONE -- OOB went fine and oob_mode is valid
+PHYE_OOB_ERROR -- Error while doing OOB, the device probably
+got disconnected. (*)
+PHYE_SPINUP_HOLD -- SATA is present, COMWAKE not sent.
+
+(*) should set/clear the appropriate fields in the phy,
+    or alternatively call the inlined sas_phy_disconnected()
+    which is just a helper, from their tasklet.
+
+The Execute Command SCSI RPC:
+
+       int (*lldd_execute_task)(struct sas_task *, int num,
+                                unsigned long gfp_flags);
+
+Used to queue a task to the SAS LLDD.  @task is the tasks to
+be executed.  @num should be the number of tasks being
+queued at this function call (they are linked listed via
+task::list), @gfp_mask should be the gfp_mask defining the
+context of the caller.
+
+This function should implement the Execute Command SCSI RPC,
+or if you're sending a SCSI Task as linked commands, you
+should also use this function.
+
+That is, when lldd_execute_task() is called, the command(s)
+go out on the transport *immediately*.  There is *no*
+queuing of any sort and at any level in a SAS LLDD.
+
+The use of task::list is two-fold, one for linked commands,
+the other discussed below.
+
+It is possible to queue up more than one task at a time, by
+initializing the list element of struct sas_task, and
+passing the number of tasks enlisted in this manner in num.
+
+Returns: -SAS_QUEUE_FULL, -ENOMEM, nothing was queued;
+        0, the task(s) were queued.
+
+If you want to pass num > 1, then either
+A) you're the only caller of this function and keep track
+   of what you've queued to the LLDD, or
+B) you know what you're doing and have a strategy of
+   retrying.
+
+As opposed to queuing one task at a time (function call),
+batch queuing of tasks, by having num > 1, greatly
+simplifies LLDD code, sequencer code, and _hardware design_,
+and has some performance advantages in certain situations
+(DBMS).
+
+The LLDD advertises if it can take more than one command at
+a time at lldd_execute_task(), by setting the
+lldd_max_execute_num parameter (controlled by "collector"
+module parameter in aic94xx SAS LLDD).
+
+You should leave this to the default 1, unless you know what
+you're doing.
+
+This is a function of the LLDD, to which the SAS layer can
+cater to.
+
+int lldd_queue_size
+       The host adapter's queue size.  This is the maximum
+number of commands the lldd can have pending to domain
+devices on behalf of all upper layers submitting through
+lldd_execute_task().
+
+You really want to set this to something (much) larger than
+1.
+
+This _really_ has absolutely nothing to do with queuing.
+There is no queuing in SAS LLDDs.
+
+struct sas_task {
+       dev -- the device this task is destined to
+       list -- must be initialized (INIT_LIST_HEAD)
+       task_proto -- _one_ of enum sas_proto
+       scatter -- pointer to scatter gather list array
+       num_scatter -- number of elements in scatter
+       total_xfer_len -- total number of bytes expected to be transfered
+       data_dir -- PCI_DMA_...
+       task_done -- callback when the task has finished execution
+};
+
+When an external entity, entity other than the LLDD or the
+SAS Layer, wants to work with a struct domain_device, it
+_must_ call kobject_get() when getting a handle on the
+device and kobject_put() when it is done with the device.
+
+This does two things:
+     A) implements proper kfree() for the device;
+     B) increments/decrements the kref for all players:
+     domain_device
+       all domain_device's ... (if past an expander)
+           port
+               host adapter
+                    pci device
+                        and up the ladder, etc.
+
+DISCOVERY
+---------
+
+The sysfs tree has the following purposes:
+    a) It shows you the physical layout of the SAS domain at
+       the current time, i.e. how the domain looks in the
+       physical world right now.
+    b) Shows some device parameters _at_discovery_time_.
+
+This is a link to the tree(1) program, very useful in
+viewing the SAS domain:
+ftp://mama.indstate.edu/linux/tree/
+I expect user space applications to actually create a
+graphical interface of this.
+
+That is, the sysfs domain tree doesn't show or keep state if
+you e.g., change the meaning of the READY LED MEANING
+setting, but it does show you the current connection status
+of the domain device.
+
+Keeping internal device state changes is responsibility of
+upper layers (Command set drivers) and user space.
+
+When a device or devices are unplugged from the domain, this
+is reflected in the sysfs tree immediately, and the device(s)
+removed from the system.
+
+The structure domain_device describes any device in the SAS
+domain.  It is completely managed by the SAS layer.  A task
+points to a domain device, this is how the SAS LLDD knows
+where to send the task(s) to.  A SAS LLDD only reads the
+contents of the domain_device structure, but it never creates
+or destroys one.
+
+Expander management from User Space
+-----------------------------------
+
+In each expander directory in sysfs, there is a file called
+"smp_portal".  It is a binary sysfs attribute file, which
+implements an SMP portal (Note: this is *NOT* an SMP port),
+to which user space applications can send SMP requests and
+receive SMP responses.
+
+Functionality is deceptively simple:
+
+1. Build the SMP frame you want to send. The format and layout
+   is described in the SAS spec.  Leave the CRC field equal 0.
+open(2)
+2. Open the expander's SMP portal sysfs file in RW mode.
+write(2)
+3. Write the frame you built in 1.
+read(2)
+4. Read the amount of data you expect to receive for the frame you built.
+   If you receive different amount of data you expected to receive,
+   then there was some kind of error.
+close(2)
+All this process is shown in detail in the function do_smp_func()
+and its callers, in the file "expander_conf.c".
+
+The kernel functionality is implemented in the file
+"sas_expander.c".
+
+The program "expander_conf.c" implements this. It takes one
+argument, the sysfs file name of the SMP portal to the
+expander, and gives expander information, including routing
+tables.
+
+The SMP portal gives you complete control of the expander,
+so please be careful.
index 5a311c3..f9c99c9 100644 (file)
@@ -69,10 +69,10 @@ recompiled, or use "make C=2" to run sparse on the files whether they need to
 be recompiled or not.  The latter is a fast way to check the whole tree if you
 have already built it.
 
-The optional make variable CF can be used to pass arguments to sparse.  The
-build system passes -Wbitwise to sparse automatically.  To perform endianness
-checks, you may define __CHECK_ENDIAN__:
+The optional make variable CHECKFLAGS can be used to pass arguments to sparse.
+The build system passes -Wbitwise to sparse automatically.  To perform
+endianness checks, you may define __CHECK_ENDIAN__:
 
-        make C=2 CF="-D__CHECK_ENDIAN__"
+        make C=2 CHECKFLAGS="-D__CHECK_ENDIAN__"
 
 These checks are disabled by default as they generate a host of warnings.
diff --git a/Kbuild b/Kbuild
index 2d4f95e..0451f69 100644 (file)
--- a/Kbuild
+++ b/Kbuild
@@ -28,7 +28,7 @@ define cmd_offsets
         echo "/*"; \
         echo " * DO NOT MODIFY."; \
         echo " *"; \
-        echo " * This file was generated by $(srctree)/Kbuild"; \
+        echo " * This file was generated by Kbuild"; \
         echo " *"; \
         echo " */"; \
         echo ""; \
index b08c537..16af51b 100644 (file)
@@ -457,9 +457,9 @@ L:  linux-hams@vger.kernel.org
 W:     http://www.baycom.org/~tom/ham/ham.html
 S:     Maintained
 
-BCM43XX WIRELESS DRIVER
-P:     Michael Buesch
-M:     mb@bu3sch.de
+BCM43XX WIRELESS DRIVER (SOFTMAC BASED VERSION)
+P:     Larry Finger
+M:     Larry.Finger@lwfinger.net
 P:     Stefano Brivio
 M:     st3@riseup.net
 W:     http://bcm43xx.berlios.de/
@@ -2389,6 +2389,12 @@ M:       linux-driver@qlogic.com
 L:     linux-scsi@vger.kernel.org
 S:     Supported
 
+QLOGIC QLA3XXX NETWORK DRIVER
+P:     Ron Mercer
+M:     linux-driver@qlogic.com
+L:     netdev@vger.kernel.org
+S:     Supported
+
 QNX4 FILESYSTEM
 P:     Anders Larsen
 M:     al@alarsen.net
@@ -2484,8 +2490,8 @@ W:        http://www.ibm.com/developerworks/linux/linux390/
 S:     Supported
 
 S390 ZFCP DRIVER
-P:     Andreas Herrmann
-M:     aherrman@de.ibm.com
+P:     Swen Schillig
+M:     swen@vnet.ibm.com
 M:     linux390@de.ibm.com
 L:     linux-390@vm.marist.edu
 W:     http://www.ibm.com/developerworks/linux/linux390/
@@ -2641,6 +2647,18 @@ P:       Nicolas Pitre
 M:     nico@cam.org
 S:     Maintained
 
+SOFTMAC LAYER (IEEE 802.11)
+P:     Johannes Berg
+M:     johannes@sipsolutions.net
+P:     Joe Jezak
+M:     josejx@gentoo.org
+P:     Daniel Drake
+M:     dsd@gentoo.org
+W:     http://softmac.sipsolutions.net/
+L:     softmac-dev@sipsolutions.net
+L:     netdev@vger.kernel.org
+S:     Maintained
+
 SOFTWARE RAID (Multiple Disks) SUPPORT
 P:     Ingo Molnar
 M:     mingo@redhat.com
@@ -2922,8 +2940,8 @@ W:        http://www.auk.cx/tms380tr/
 S:     Maintained
 
 TULIP NETWORK DRIVER
-P:     Jeff Garzik
-M:     jgarzik@pobox.com
+P:     Valerie Henson
+M:     val_henson@linux.intel.com
 L:     tulip-users@lists.sourceforge.net
 W:     http://sourceforge.net/projects/tulip/
 S:     Maintained
@@ -3374,6 +3392,15 @@ W:       http://www.qsl.net/dl1bke/
 L:     linux-hams@vger.kernel.org
 S:     Maintained
 
+ZD1211RW WIRELESS DRIVER
+P:     Daniel Drake
+M:     dsd@gentoo.org
+P:     Ulrich Kunitz
+M:     kune@deine-taler.de
+W:     http://zd1211.ath.cx/wiki/DriverRewrite
+L:     zd1211-devs@lists.sourceforge.net (subscribers-only)
+S:     Maintained
+
 ZF MACHZ WATCHDOG
 P:     Fernando Fuganti
 M:     fuganti@netbank.com.br
index edfc2fd..80dac02 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -41,9 +41,15 @@ ifndef KBUILD_VERBOSE
   KBUILD_VERBOSE = 0
 endif
 
-# Call checker as part of compilation of C files
-# Use 'make C=1' to enable checking (sparse, by default)
-# Override with 'make C=1 CHECK=checker_executable CHECKFLAGS=....'
+# Call a source code checker (by default, "sparse") as part of the
+# C compilation.
+#
+# Use 'make C=1' to enable checking of only re-compiled files.
+# Use 'make C=2' to enable checking of *all* source files, regardless
+# of whether they are re-compiled or not.
+#
+# See the file "Documentation/sparse.txt" for more details, including
+# where to get the "sparse" utility.
 
 ifdef C
   ifeq ("$(origin C)", "command line")
@@ -639,12 +645,12 @@ define rule_vmlinux__
        $(call cmd,vmlinux__)
        $(Q)echo 'cmd_$@ := $(cmd_vmlinux__)' > $(@D)/.$(@F).cmd
 
-       $(Q)$(if $($(quiet)cmd_sysmap),                 \
-         echo '  $($(quiet)cmd_sysmap) System.map' &&) \
-       $(cmd_sysmap) $@ System.map;                    \
-       if [ $$? -ne 0 ]; then                          \
-               rm -f $@;                               \
-               /bin/false;                             \
+       $(Q)$(if $($(quiet)cmd_sysmap),                                      \
+         echo '  $($(quiet)cmd_sysmap)  System.map' &&)                     \
+       $(cmd_sysmap) $@ System.map;                                         \
+       if [ $$? -ne 0 ]; then                                               \
+               rm -f $@;                                                    \
+               /bin/false;                                                  \
        fi;
        $(verify_kallsyms)
 endef
@@ -677,12 +683,12 @@ endif
 kallsyms.o := .tmp_kallsyms$(last_kallsyms).o
 
 define verify_kallsyms
-       $(Q)$(if $($(quiet)cmd_sysmap),                       \
-         echo '  $($(quiet)cmd_sysmap) .tmp_System.map' &&)  \
+       $(Q)$(if $($(quiet)cmd_sysmap),                                      \
+         echo '  $($(quiet)cmd_sysmap)  .tmp_System.map' &&)                \
          $(cmd_sysmap) .tmp_vmlinux$(last_kallsyms) .tmp_System.map
-       $(Q)cmp -s System.map .tmp_System.map ||              \
-               (echo Inconsistent kallsyms data;             \
-                echo Try setting CONFIG_KALLSYMS_EXTRA_PASS; \
+       $(Q)cmp -s System.map .tmp_System.map ||                             \
+               (echo Inconsistent kallsyms data;                            \
+                echo Try setting CONFIG_KALLSYMS_EXTRA_PASS;                \
                 rm .tmp_kallsyms* ; /bin/false )
 endef
 
@@ -736,6 +742,7 @@ endif # ifdef CONFIG_KALLSYMS
 # vmlinux image - including updated kernel symbols
 vmlinux: $(vmlinux-lds) $(vmlinux-init) $(vmlinux-main) $(kallsyms.o) FORCE
        $(call if_changed_rule,vmlinux__)
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost $@
        $(Q)rm -f .old_version
 
 # The actual objects are generated when descending, 
@@ -753,12 +760,34 @@ $(vmlinux-dirs): prepare scripts
        $(Q)$(MAKE) $(build)=$@
 
 # Build the kernel release string
-# The KERNELRELEASE is stored in a file named include/config/kernel.release
-# to be used when executing for example make install or make modules_install
 #
-# Take the contents of any files called localversion* and the config
-# variable CONFIG_LOCALVERSION and append them to KERNELRELEASE.
-# LOCALVERSION from the command line override all of this
+# The KERNELRELEASE value built here is stored in the file
+# include/config/kernel.release, and is used when executing several
+# make targets, such as "make install" or "make modules_install."
+#
+# The eventual kernel release string consists of the following fields,
+# shown in a hierarchical format to show how smaller parts are concatenated
+# to form the larger and final value, with values coming from places like
+# the Makefile, kernel config options, make command line options and/or
+# SCM tag information.
+#
+#      $(KERNELVERSION)
+#        $(VERSION)                    eg, 2
+#        $(PATCHLEVEL)                 eg, 6
+#        $(SUBLEVEL)                   eg, 18
+#        $(EXTRAVERSION)               eg, -rc6
+#      $(localver-full)
+#        $(localver)
+#          localversion*               (all localversion* files)
+#          $(CONFIG_LOCALVERSION)      (from kernel config setting)
+#        $(localver-auto)              (only if CONFIG_LOCALVERSION_AUTO is set)
+#          ./scripts/setlocalversion   (SCM tag, if one exists)
+#          $(LOCALVERSION)             (from make command line if provided)
+#
+#  Note how the final $(localver-auto) string is included *only* if the
+# kernel config option CONFIG_LOCALVERSION_AUTO is selected.  Also, at the
+# moment, only git is supported but other SCMs can edit the script
+# scripts/setlocalversion and add the appropriate checks as needed.
 
 nullstring :=
 space      := $(nullstring) # end of line
@@ -892,15 +921,26 @@ depend dep:
 INSTALL_HDR_PATH=$(objtree)/usr
 export INSTALL_HDR_PATH
 
+HDRARCHES=$(filter-out generic,$(patsubst $(srctree)/include/asm-%/Kbuild,%,$(wildcard $(srctree)/include/asm-*/Kbuild)))
+
+PHONY += headers_install_all
+headers_install_all: include/linux/version.h scripts_basic FORCE
+       $(Q)$(MAKE) $(build)=scripts scripts/unifdef
+       $(Q)for arch in $(HDRARCHES); do \
+        $(MAKE) ARCH=$$arch -f $(srctree)/scripts/Makefile.headersinst obj=include BIASMDIR=-bi-$$arch ;\
+        done
+
 PHONY += headers_install
-headers_install: include/linux/version.h
-       $(Q)unifdef -Ux /dev/null
-       $(Q)rm -rf $(INSTALL_HDR_PATH)/include
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include
+headers_install: include/linux/version.h scripts_basic FORCE
+       @if [ ! -r include/asm-$(ARCH)/Kbuild ]; then \
+         echo '*** Error: Headers not exportable for this architecture ($(ARCH))'; \
+         exit 1 ; fi
+       $(Q)$(MAKE) $(build)=scripts scripts/unifdef
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include
 
 PHONY += headers_check
 headers_check: headers_install
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.headersinst obj=include HDRCHECK=1
 
 # ---------------------------------------------------------------------------
 # Modules
@@ -916,7 +956,7 @@ all: modules
 PHONY += modules
 modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux)
        @echo '  Building modules, stage 2.';
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
 
 # Target to prepare building external modules
@@ -942,7 +982,7 @@ _modinst_:
                rm -f $(MODLIB)/build ; \
                ln -s $(objtree) $(MODLIB)/build ; \
        fi
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
 
 # If System.map exists, run depmod.  This deliberately does not have a
 # dependency on System.map since that would run the dependency tree on
@@ -1057,8 +1097,10 @@ boards := $(notdir $(boards))
 
 help:
        @echo  'Cleaning targets:'
-       @echo  '  clean           - remove most generated files but keep the config'
+       @echo  '  clean           - remove most generated files but keep the config and'
+       @echo  '                    enough build support to build external modules'
        @echo  '  mrproper        - remove all generated files + config + various backup files'
+       @echo  '  distclean       - mrproper + remove editor backup and patch files'
        @echo  ''
        @echo  'Configuration targets:'
        @$(MAKE) -f $(srctree)/scripts/kconfig/Makefile help
@@ -1076,13 +1118,17 @@ help:
        @echo  '  cscope          - Generate cscope index'
        @echo  '  kernelrelease   - Output the release version string'
        @echo  '  kernelversion   - Output the version stored in Makefile'
-       @echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'
+       @if [ -r include/asm-$(ARCH)/Kbuild ]; then \
+        echo  '  headers_install - Install sanitised kernel headers to INSTALL_HDR_PATH'; \
+        fi
        @echo  '                    (default: $(INSTALL_HDR_PATH))'
        @echo  ''
        @echo  'Static analysers'
        @echo  '  checkstack      - Generate a list of stack hogs'
        @echo  '  namespacecheck  - Name space analysis on compiled kernel'
-       @echo  '  headers_check   - Sanity check on exported headers'
+       @if [ -r include/asm-$(ARCH)/Kbuild ]; then \
+        echo  '  headers_check   - Sanity check on exported headers'; \
+        fi
        @echo  ''
        @echo  'Kernel packaging:'
        @$(MAKE) $(build)=$(package-dir) help
@@ -1100,6 +1146,7 @@ help:
                echo '')
 
        @echo  '  make V=0|1 [targets] 0 => quiet build (default), 1 => verbose build'
+       @echo  '  make V=2   [targets] 2 => give reason for rebuild of target'
        @echo  '  make O=dir [targets] Locate all output files in "dir", including .config'
        @echo  '  make C=1   [targets] Check all c source with $$CHECK (sparse by default)'
        @echo  '  make C=2   [targets] Force check of all c source with $$CHECK'
@@ -1154,7 +1201,7 @@ $(module-dirs): crmodverdir $(objtree)/Module.symvers
 
 modules: $(module-dirs)
        @echo '  Building modules, stage 2.';
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
 PHONY += modules_install
 modules_install: _emodinst_ _emodinst_post
@@ -1163,7 +1210,7 @@ install-dir := $(if $(INSTALL_MOD_DIR),$(INSTALL_MOD_DIR),extra)
 PHONY += _emodinst_
 _emodinst_:
        $(Q)mkdir -p $(MODLIB)/$(install-dir)
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modinst
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modinst
 
 # Run depmod only is we have System.map and depmod is executable
 quiet_cmd_depmod = DEPMOD  $(KERNELRELEASE)
@@ -1264,6 +1311,31 @@ define all-defconfigs
        $(call find-sources,'defconfig')
 endef
 
+define xtags
+       if $1 --version 2>&1 | grep -iq exuberant; then \
+           $(all-sources) | xargs $1 -a \
+               -I __initdata,__exitdata,__acquires,__releases \
+               -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL \
+               --extra=+f --c-kinds=+px; \
+           $(all-kconfigs) | xargs $1 -a \
+               --langdef=kconfig \
+               --language-force=kconfig \
+               --regex-kconfig='/^[[:blank:]]*config[[:blank:]]+([[:alnum:]_]+)/\1/'; \
+           $(all-defconfigs) | xargs $1 -a \
+               --langdef=dotconfig \
+               --language-force=dotconfig \
+               --regex-dotconfig='/^#?[[:blank:]]*(CONFIG_[[:alnum:]_]+)/\1/'; \
+       elif $1 --version 2>&1 | grep -iq emacs; then \
+           $(all-sources) | xargs $1 -a; \
+           $(all-kconfigs) | xargs $1 -a \
+               --regex='/^[ \t]*config[ \t]+\([a-zA-Z0-9_]+\)/\1/'; \
+           $(all-defconfigs) | xargs $1 -a \
+               --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/'; \
+       else \
+           $(all-sources) | xargs $1 -a; \
+       fi
+endef
+
 quiet_cmd_cscope-file = FILELST cscope.files
       cmd_cscope-file = (echo \-k; echo \-q; $(all-sources)) > cscope.files
 
@@ -1277,31 +1349,16 @@ cscope: FORCE
 quiet_cmd_TAGS = MAKE   $@
 define cmd_TAGS
        rm -f $@; \
-       ETAGSF=`etags --version | grep -i exuberant >/dev/null &&     \
-                echo "-I __initdata,__exitdata,__acquires,__releases  \
-                      -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL              \
-                      --extra=+f --c-kinds=+px"`;                     \
-                $(all-sources) | xargs etags $$ETAGSF -a;             \
-       if test "x$$ETAGSF" = x; then                                 \
-               $(all-kconfigs) | xargs etags -a                      \
-               --regex='/^config[ \t]+\([a-zA-Z0-9_]+\)/\1/';        \
-               $(all-defconfigs) | xargs etags -a                    \
-               --regex='/^#?[ \t]?\(CONFIG_[a-zA-Z0-9_]+\)/\1/';     \
-       fi
+       $(call xtags,etags)
 endef
 
 TAGS: FORCE
        $(call cmd,TAGS)
 
-
 quiet_cmd_tags = MAKE   $@
 define cmd_tags
        rm -f $@; \
-       CTAGSF=`ctags --version | grep -i exuberant >/dev/null &&     \
-                echo "-I __initdata,__exitdata,__acquires,__releases  \
-                      -I EXPORT_SYMBOL,EXPORT_SYMBOL_GPL              \
-                      --extra=+f --c-kinds=+px"`;                     \
-                $(all-sources) | xargs ctags $$CTAGSF -a
+       $(call xtags,ctags)
 endef
 
 tags: FORCE
@@ -1379,7 +1436,7 @@ endif
 %.ko: prepare scripts FORCE
        $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1)   \
        $(build)=$(build-dir) $(@:.ko=.o)
-       $(Q)$(MAKE) -rR -f $(srctree)/scripts/Makefile.modpost
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
 
 # FIXME Should go into a make.lib or something 
 # ===========================================================================
index 22dc9c2..f203131 100644 (file)
@@ -26,6 +26,7 @@
 #include <asm/uaccess.h>
 #include <asm/mmu_context.h>
 #include <asm/elf.h>
+#include <asm/ubc.h>
 
 static int hlt_counter=0;
 
index 43d9229..51cf602 100644 (file)
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
-# Linux kernel version: 2.6.18-rc2
-# Fri Jul 21 14:19:24 2006
+# Linux kernel version: 2.6.18
+# Sat Sep 23 18:32:19 2006
 #
 CONFIG_SPARC=y
 CONFIG_SPARC64=y
@@ -9,6 +9,7 @@ CONFIG_64BIT=y
 CONFIG_MMU=y
 CONFIG_TIME_INTERPOLATION=y
 CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_AUDIT_ARCH=y
 CONFIG_SPARC64_PAGE_SIZE_8KB=y
 # CONFIG_SPARC64_PAGE_SIZE_64KB is not set
 # CONFIG_SPARC64_PAGE_SIZE_512KB is not set
@@ -37,14 +38,14 @@ CONFIG_SYSVIPC=y
 CONFIG_POSIX_MQUEUE=y
 # CONFIG_BSD_PROCESS_ACCT is not set
 # CONFIG_TASKSTATS is not set
-CONFIG_SYSCTL=y
 # CONFIG_AUDIT is not set
 # CONFIG_IKCONFIG is not set
 CONFIG_RELAY=y
 CONFIG_INITRAMFS_SOURCE=""
-CONFIG_UID16=y
 CONFIG_CC_OPTIMIZE_FOR_SIZE=y
 # CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL=y
 CONFIG_KALLSYMS=y
 # CONFIG_KALLSYMS_ALL is not set
 # CONFIG_KALLSYMS_EXTRA_PASS is not set
@@ -53,12 +54,12 @@ CONFIG_PRINTK=y
 CONFIG_BUG=y
 CONFIG_ELF_CORE=y
 CONFIG_BASE_FULL=y
-CONFIG_RT_MUTEXES=y
 CONFIG_FUTEX=y
 CONFIG_EPOLL=y
 CONFIG_SHMEM=y
 CONFIG_SLAB=y
 CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
 # CONFIG_TINY_SHMEM is not set
 CONFIG_BASE_SMALL=0
 # CONFIG_SLOB is not set
@@ -169,6 +170,7 @@ CONFIG_PACKET_MMAP=y
 CONFIG_UNIX=y
 CONFIG_XFRM=y
 CONFIG_XFRM_USER=m
+# CONFIG_XFRM_SUB_POLICY is not set
 CONFIG_NET_KEY=m
 CONFIG_INET=y
 CONFIG_IP_MULTICAST=y
@@ -214,11 +216,15 @@ CONFIG_IPV6_ROUTE_INFO=y
 CONFIG_INET6_AH=m
 CONFIG_INET6_ESP=m
 CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
 CONFIG_INET6_XFRM_TUNNEL=m
 CONFIG_INET6_TUNNEL=m
 CONFIG_INET6_XFRM_MODE_TRANSPORT=m
 CONFIG_INET6_XFRM_MODE_TUNNEL=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
 CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_SUBTREES is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
 # CONFIG_NETWORK_SECMARK is not set
 # CONFIG_NETFILTER is not set
 
@@ -233,6 +239,7 @@ CONFIG_IP_DCCP_ACKVEC=y
 # DCCP CCIDs Configuration (EXPERIMENTAL)
 #
 CONFIG_IP_DCCP_CCID2=m
+# CONFIG_IP_DCCP_CCID2_DEBUG is not set
 CONFIG_IP_DCCP_CCID3=m
 CONFIG_IP_DCCP_TFRC_LIB=m
 
@@ -259,7 +266,6 @@ CONFIG_VLAN_8021Q=m
 # CONFIG_ATALK is not set
 # CONFIG_X25 is not set
 # CONFIG_LAPB is not set
-# CONFIG_NET_DIVERT is not set
 # CONFIG_ECONET is not set
 # CONFIG_WAN_ROUTER is not set
 
@@ -1386,6 +1392,10 @@ CONFIG_KEYS=y
 # Cryptographic options
 #
 CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_MANAGER=m
 CONFIG_CRYPTO_HMAC=y
 CONFIG_CRYPTO_NULL=m
 CONFIG_CRYPTO_MD4=y
@@ -1395,9 +1405,12 @@ CONFIG_CRYPTO_SHA256=m
 CONFIG_CRYPTO_SHA512=m
 CONFIG_CRYPTO_WP512=m
 CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
 CONFIG_CRYPTO_DES=y
 CONFIG_CRYPTO_BLOWFISH=m
 CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
 CONFIG_CRYPTO_SERPENT=m
 CONFIG_CRYPTO_AES=m
 CONFIG_CRYPTO_CAST5=m
index 094d3e3..b0b4fee 100644 (file)
@@ -983,7 +983,7 @@ static struct time_interpolator sparc64_cpu_interpolator = {
 };
 
 /* The quotient formula is taken from the IA64 port. */
-#define SPARC64_NSEC_PER_CYC_SHIFT     30UL
+#define SPARC64_NSEC_PER_CYC_SHIFT     10UL
 void __init time_init(void)
 {
        unsigned long clock = sparc64_init_timers();
index dcbd6ff..9c3a06b 100644 (file)
@@ -848,21 +848,18 @@ struct request *blk_queue_find_tag(request_queue_t *q, int tag)
 EXPORT_SYMBOL(blk_queue_find_tag);
 
 /**
- * __blk_queue_free_tags - release tag maintenance info
- * @q:  the request queue for the device
+ * __blk_free_tags - release a given set of tag maintenance info
+ * @bqt:       the tag map to free
  *
- *  Notes:
- *    blk_cleanup_queue() will take care of calling this function, if tagging
- *    has been used. So there's no need to call this directly.
- **/
-static void __blk_queue_free_tags(request_queue_t *q)
+ * Tries to free the specified @bqt@.  Returns true if it was
+ * actually freed and false if there are still references using it
+ */
+static int __blk_free_tags(struct blk_queue_tag *bqt)
 {
-       struct blk_queue_tag *bqt = q->queue_tags;
-
-       if (!bqt)
-               return;
+       int retval;
 
-       if (atomic_dec_and_test(&bqt->refcnt)) {
+       retval = atomic_dec_and_test(&bqt->refcnt);
+       if (retval) {
                BUG_ON(bqt->busy);
                BUG_ON(!list_empty(&bqt->busy_list));
 
@@ -873,12 +870,49 @@ static void __blk_queue_free_tags(request_queue_t *q)
                bqt->tag_map = NULL;
 
                kfree(bqt);
+
        }
 
+       return retval;
+}
+
+/**
+ * __blk_queue_free_tags - release tag maintenance info
+ * @q:  the request queue for the device
+ *
+ *  Notes:
+ *    blk_cleanup_queue() will take care of calling this function, if tagging
+ *    has been used. So there's no need to call this directly.
+ **/
+static void __blk_queue_free_tags(request_queue_t *q)
+{
+       struct blk_queue_tag *bqt = q->queue_tags;
+
+       if (!bqt)
+               return;
+
+       __blk_free_tags(bqt);
+
        q->queue_tags = NULL;
        q->queue_flags &= ~(1 << QUEUE_FLAG_QUEUED);
 }
 
+
+/**
+ * blk_free_tags - release a given set of tag maintenance info
+ * @bqt:       the tag map to free
+ *
+ * For externally managed @bqt@ frees the map.  Callers of this
+ * function must guarantee to have released all the queues that
+ * might have been using this tag map.
+ */
+void blk_free_tags(struct blk_queue_tag *bqt)
+{
+       if (unlikely(!__blk_free_tags(bqt)))
+               BUG();
+}
+EXPORT_SYMBOL(blk_free_tags);
+
 /**
  * blk_queue_free_tags - release tag maintenance info
  * @q:  the request queue for the device
@