Author: jhb
Date: Mon Oct 26 18:57:57 2009
New Revision: 198496
URL: http://svn.freebsd.org/changeset/base/198496

Log:
  MFC 196200,196211,196280-196282:
  Introduce mfiutil, a basic utility for managing LSI SAS-RAID & Dell PERC5/6
  controllers.  Controller, array, and drive status can be checked, basic
  attributes can be changed, and arrays and spares can be created and deleted.
  Controller firmware can also be flashed.
  
  This does not replace MegaCLI, found in ports, as that is officially 
sanctioned
  and supported by LSI and includes vastly more functionality.  However, mfiutil
  is open source and guaranteed to provide basic functionality, which can be
  especially useful if you have a problem and can't get MegaCLI to work.

Added:
  stable/7/usr.sbin/mfiutil/   (props changed)
     - copied from r196200, head/usr.sbin/mfiutil/
  stable/7/usr.sbin/mfiutil/mfiutil.8   (contents, props changed)
     - copied, changed from r196280, head/usr.sbin/mfiutil/mfiutil.8
Modified:
  stable/7/etc/   (props changed)
  stable/7/etc/mtree/BSD.include.dist
  stable/7/etc/termcap.small   (props changed)
  stable/7/include/   (props changed)
  stable/7/include/Makefile
  stable/7/sys/   (props changed)
  stable/7/sys/contrib/pf/   (props changed)
  stable/7/sys/dev/mfi/mfi_ioctl.h
  stable/7/sys/dev/mfi/mfireg.h
  stable/7/usr.sbin/   (props changed)
  stable/7/usr.sbin/Makefile
  stable/7/usr.sbin/acpi/   (props changed)
  stable/7/usr.sbin/adduser/   (props changed)
  stable/7/usr.sbin/arp/   (props changed)
  stable/7/usr.sbin/bluetooth/   (props changed)
  stable/7/usr.sbin/bluetooth/btpand/   (props changed)
  stable/7/usr.sbin/bluetooth/hcsecd/   (props changed)
  stable/7/usr.sbin/bluetooth/hcseriald/   (props changed)
  stable/7/usr.sbin/bluetooth/rfcomm_pppd/   (props changed)
  stable/7/usr.sbin/bluetooth/sdpd/   (props changed)
  stable/7/usr.sbin/bsnmpd/modules/snmp_pf/   (props changed)
  stable/7/usr.sbin/burncd/   (props changed)
  stable/7/usr.sbin/cdcontrol/   (props changed)
  stable/7/usr.sbin/chown/   (props changed)
  stable/7/usr.sbin/chroot/   (props changed)
  stable/7/usr.sbin/config/   (props changed)
  stable/7/usr.sbin/cpucontrol/   (props changed)
  stable/7/usr.sbin/crashinfo/   (props changed)
  stable/7/usr.sbin/cron/   (props changed)
  stable/7/usr.sbin/cron/cron/   (props changed)
  stable/7/usr.sbin/crunch/   (props changed)
  stable/7/usr.sbin/eeprom/   (props changed)
  stable/7/usr.sbin/extattr/   (props changed)
  stable/7/usr.sbin/fdcontrol/   (props changed)
  stable/7/usr.sbin/fdformat/   (props changed)
  stable/7/usr.sbin/fdread/   (props changed)
  stable/7/usr.sbin/fdwrite/   (props changed)
  stable/7/usr.sbin/freebsd-update/   (props changed)
  stable/7/usr.sbin/fwcontrol/   (props changed)
  stable/7/usr.sbin/gstat/   (props changed)
  stable/7/usr.sbin/iostat/   (props changed)
  stable/7/usr.sbin/jail/   (props changed)
  stable/7/usr.sbin/jexec/   (props changed)
  stable/7/usr.sbin/jls/   (props changed)
  stable/7/usr.sbin/lpr/   (props changed)
  stable/7/usr.sbin/makefs/   (props changed)
  stable/7/usr.sbin/makefs/ffs/ffs_bswap.c   (props changed)
  stable/7/usr.sbin/makefs/ffs/ffs_subr.c   (props changed)
  stable/7/usr.sbin/makefs/ffs/ufs_bswap.h   (props changed)
  stable/7/usr.sbin/makefs/getid.c   (props changed)
  stable/7/usr.sbin/mergemaster/   (props changed)
  stable/7/usr.sbin/mfiutil/Makefile
  stable/7/usr.sbin/mfiutil/mfi_drive.c
  stable/7/usr.sbin/mountd/   (props changed)
  stable/7/usr.sbin/mtree/   (props changed)
  stable/7/usr.sbin/ndiscvt/   (props changed)
  stable/7/usr.sbin/newsyslog/newsyslog.conf.5   (props changed)
  stable/7/usr.sbin/nscd/   (props changed)
  stable/7/usr.sbin/ntp/   (props changed)
  stable/7/usr.sbin/pciconf/   (props changed)
  stable/7/usr.sbin/pkg_install/   (props changed)
  stable/7/usr.sbin/pmcstat/   (props changed)
  stable/7/usr.sbin/portsnap/   (props changed)
  stable/7/usr.sbin/powerd/   (props changed)
  stable/7/usr.sbin/ppp/   (props changed)
  stable/7/usr.sbin/pstat/   (props changed)
  stable/7/usr.sbin/pw/   (props changed)
  stable/7/usr.sbin/pwd_mkdb/   (props changed)
  stable/7/usr.sbin/rpc.lockd/   (props changed)
  stable/7/usr.sbin/rpc.statd/   (props changed)
  stable/7/usr.sbin/rpc.yppasswdd/   (props changed)
  stable/7/usr.sbin/sade/   (props changed)
  stable/7/usr.sbin/setfib/   (props changed)
  stable/7/usr.sbin/sysinstall/   (props changed)
  stable/7/usr.sbin/syslogd/   (props changed)
  stable/7/usr.sbin/traceroute/   (props changed)
  stable/7/usr.sbin/traceroute6/   (props changed)
  stable/7/usr.sbin/tzsetup/   (props changed)
  stable/7/usr.sbin/wpa/wpa_supplicant/   (props changed)
  stable/7/usr.sbin/ypserv/   (props changed)
  stable/7/usr.sbin/zic/   (props changed)

Modified: stable/7/etc/mtree/BSD.include.dist
==============================================================================
--- stable/7/etc/mtree/BSD.include.dist Mon Oct 26 18:32:06 2009        
(r198495)
+++ stable/7/etc/mtree/BSD.include.dist Mon Oct 26 18:57:57 2009        
(r198496)
@@ -102,6 +102,8 @@
         ..
         lmc
         ..
+       mfi
+       ..
         mpt
             mpilib
             ..

Modified: stable/7/include/Makefile
==============================================================================
--- stable/7/include/Makefile   Mon Oct 26 18:32:06 2009        (r198495)
+++ stable/7/include/Makefile   Mon Oct 26 18:57:57 2009        (r198496)
@@ -43,7 +43,7 @@ LDIRS=        bsm cam geom net net80211 netatal
 
 LSUBDIRS=      cam/scsi \
        dev/acpica dev/an dev/bktr dev/firewire dev/hwpmc \
-       dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/ofw \
+       dev/ic dev/iicbus ${_dev_ieee488} dev/lmc dev/mfi dev/ofw \
        dev/pbio ${_dev_powermac_nvram} dev/ppbus dev/smbus \
        dev/speaker dev/usb dev/utopia dev/vkbd dev/wi \
        fs/devfs fs/fdescfs fs/fifofs fs/msdosfs fs/ntfs fs/nullfs \

Modified: stable/7/sys/dev/mfi/mfi_ioctl.h
==============================================================================
--- stable/7/sys/dev/mfi/mfi_ioctl.h    Mon Oct 26 18:32:06 2009        
(r198495)
+++ stable/7/sys/dev/mfi/mfi_ioctl.h    Mon Oct 26 18:57:57 2009        
(r198496)
@@ -27,6 +27,8 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include <dev/mfi/mfireg.h>
+
 #if defined(__amd64__) /* Assume amd64 wants 32 bit Linux */
 struct iovec32 {
        u_int32_t       iov_base;

Modified: stable/7/sys/dev/mfi/mfireg.h
==============================================================================
--- stable/7/sys/dev/mfi/mfireg.h       Mon Oct 26 18:32:06 2009        
(r198495)
+++ stable/7/sys/dev/mfi/mfireg.h       Mon Oct 26 18:57:57 2009        
(r198496)
@@ -89,7 +89,7 @@ __FBSDID("$FreeBSD$");
 #define MFI_ODCR0      0xa0            /* outbound doorbell clear register0  */
 #define MFI_OSP0       0xb0            /* outbound scratch pad0  */
 #define MFI_1078_EIM   0x80000004      /* 1078 enable intrrupt mask  */
-#define MFI_RMI                0x2             /* reply message interrupt  */
+#define MFI_RMI                0x2             /* reply message interrupt  */  
     
 #define MFI_1078_RM    0x80000000      /* reply 1078 message interrupt  */
 #define MFI_ODC                0x4             /* outbound doorbell change 
interrupt */
 
@@ -151,15 +151,41 @@ typedef enum {
        MFI_DCMD_CTRL_EVENT_GETINFO =   0x01040100,
        MFI_DCMD_CTRL_EVENT_GET =       0x01040300,
        MFI_DCMD_CTRL_EVENT_WAIT =      0x01040500,
+       MFI_DCMD_PR_GET_STATUS =        0x01070100,
+       MFI_DCMD_PR_GET_PROPERTIES =    0x01070200,
+       MFI_DCMD_PR_SET_PROPERTIES =    0x01070300,
+       MFI_DCMD_PR_START =             0x01070400,
+       MFI_DCMD_PR_STOP =              0x01070500,
+       MFI_DCMD_TIME_SECS_GET =        0x01080201,
+       MFI_DCMD_FLASH_FW_OPEN =        0x010f0100,
+       MFI_DCMD_FLASH_FW_DOWNLOAD =    0x010f0200,
+       MFI_DCMD_FLASH_FW_FLASH =       0x010f0300,
+       MFI_DCMD_FLASH_FW_CLOSE =       0x010f0400,
+       MFI_DCMD_PD_GET_LIST =          0x02010000,
+       MFI_DCMD_PD_GET_INFO =          0x02020000,
+       MFI_DCMD_PD_STATE_SET =         0x02030100,
+       MFI_DCMD_PD_REBUILD_START =     0x02040100,
+       MFI_DCMD_PD_REBUILD_ABORT =     0x02040200,
+       MFI_DCMD_PD_CLEAR_START =       0x02050100,
+       MFI_DCMD_PD_CLEAR_ABORT =       0x02050200,
+       MFI_DCMD_PD_GET_PROGRESS =      0x02060000,
+       MFI_DCMD_PD_LOCATE_START =      0x02070100,
+       MFI_DCMD_PD_LOCATE_STOP =       0x02070200,
        MFI_DCMD_LD_GET_LIST =          0x03010000,
        MFI_DCMD_LD_GET_INFO =          0x03020000,
        MFI_DCMD_LD_GET_PROP =          0x03030000,
        MFI_DCMD_LD_SET_PROP =          0x03040000,
+       MFI_DCMD_LD_INIT_START =        0x03060100,
        MFI_DCMD_LD_DELETE =            0x03090000,
        MFI_DCMD_CFG_READ =             0x04010000,
        MFI_DCMD_CFG_ADD =              0x04020000,
        MFI_DCMD_CFG_CLEAR =            0x04030000,
+       MFI_DCMD_CFG_MAKE_SPARE =       0x04040000,
+       MFI_DCMD_CFG_REMOVE_SPARE =     0x04050000,     
        MFI_DCMD_CFG_FOREIGN_IMPORT =   0x04060400,
+       MFI_DCMD_BBU_GET_STATUS =       0x05010000,
+       MFI_DCMD_BBU_GET_CAPACITY_INFO =0x05020000,
+       MFI_DCMD_BBU_GET_DESIGN_INFO =  0x05030000,
        MFI_DCMD_CLUSTER =              0x08000000,
        MFI_DCMD_CLUSTER_RESET_ALL =    0x08010100,
        MFI_DCMD_CLUSTER_RESET_LD =     0x08010200
@@ -245,6 +271,9 @@ typedef enum {
        MFI_STAT_RESERVATION_IN_PROGRESS,
        MFI_STAT_I2C_ERRORS_DETECTED,
        MFI_STAT_PCI_ERRORS_DETECTED,
+       MFI_STAT_DIAG_FAILED,
+       MFI_STAT_BOOT_MSG_PENDING,
+       MFI_STAT_FOREIGN_CONFIG_INCOMPLETE,
        MFI_STAT_INVALID_STATUS =       0xFF
 } mfi_status_t;
 
@@ -303,6 +332,17 @@ typedef enum {
        MR_LD_CACHE_ALLOW_WRITE_CACHE = 0x20,
        MR_LD_CACHE_ALLOW_READ_CACHE =  0x40
 } mfi_ld_cache;
+#define        MR_LD_CACHE_MASK        0x7f
+
+#define        MR_LD_CACHE_POLICY_READ_AHEAD_NONE              0
+#define        MR_LD_CACHE_POLICY_READ_AHEAD_ALWAYS            
MR_LD_CACHE_READ_AHEAD
+#define        MR_LD_CACHE_POLICY_READ_AHEAD_ADAPTIVE          \
+       (MR_LD_CACHE_READ_AHEAD | MR_LD_CACHE_READ_ADAPTIVE)
+#define        MR_LD_CACHE_POLICY_WRITE_THROUGH                0
+#define        MR_LD_CACHE_POLICY_WRITE_BACK                   
MR_LD_CACHE_WRITE_BACK
+#define        MR_LD_CACHE_POLICY_IO_CACHED                    \
+       (MR_LD_CACHE_ALLOW_WRITE_CACHE | MR_LD_CACHE_ALLOW_READ_CACHE)
+#define        MR_LD_CACHE_POLICY_IO_DIRECT                    0
 
 typedef enum {
        MR_PD_CACHE_UNCHANGED  =        0,
@@ -320,6 +360,7 @@ typedef enum {
 #define MFI_DEFAULT_ID         -1
 #define MFI_MAX_LUN            8
 #define MFI_MAX_LD             64
+#define        MFI_MAX_PD              256
 
 #define MFI_FRAME_SIZE         64
 #define MFI_MBOX_SIZE          12
@@ -866,12 +907,10 @@ union mfi_pd_ddf_type {
 } __packed;
 
 struct mfi_pd_progress {
-       struct {
-               uint32_t                rbld    : 1;
-               uint32_t                patrol  : 1;
-               uint32_t                clear   : 1;
-               uint32_t                reserved: 29;
-       } active;
+       uint32_t                        active;
+#define        MFI_PD_PROGRESS_REBUILD (1<<0)
+#define        MFI_PD_PROGRESS_PATROL  (1<<1)
+#define        MFI_PD_PROGRESS_CLEAR   (1<<2)
        struct mfi_progress             rbld;
        struct mfi_progress             patrol;
        struct mfi_progress             clear;
@@ -890,8 +929,8 @@ struct mfi_pd_info {
        uint32_t                        other_err_count;
        uint32_t                        pred_fail_count;
        uint32_t                        last_pred_fail_event_seq_num;
-       uint16_t                        fw_state;
-       uint8_t                         disable_for_removal;
+       uint16_t                        fw_state;       /* MFI_PD_STATE_* */
+       uint8_t                         disabled_for_removal;
        uint8_t                         link_speed;
        union mfi_pd_ddf_type           state;
        struct {
@@ -918,7 +957,7 @@ struct mfi_pd_address {
        uint16_t                encl_device_id;
        uint8_t                 encl_index;
        uint8_t                 slot_number;
-       uint8_t                 scsi_dev_type;
+       uint8_t                 scsi_dev_type;  /* 0 = disk */
        uint8_t                 connect_port_bitmap;
        uint64_t                sas_addr[2];
 } __packed;
@@ -926,12 +965,19 @@ struct mfi_pd_address {
 struct mfi_pd_list {
        uint32_t                size;
        uint32_t                count;
-       uint8_t                 data;
-       /*
-       struct mfi_pd_address   addr[];
-       */
+       struct mfi_pd_address   addr[0];
 } __packed;
 
+enum mfi_pd_state {
+       MFI_PD_STATE_UNCONFIGURED_GOOD = 0x00,
+       MFI_PD_STATE_UNCONFIGURED_BAD = 0x01,
+       MFI_PD_STATE_HOT_SPARE = 0x02,
+       MFI_PD_STATE_OFFLINE = 0x10,
+       MFI_PD_STATE_FAILED = 0x11,
+       MFI_PD_STATE_REBUILD = 0x14,
+       MFI_PD_STATE_ONLINE = 0x18
+};
+
 union mfi_ld_ref {
        struct {
                uint8_t         target_id;
@@ -986,6 +1032,9 @@ struct mfi_ld_params {
        uint8_t                 span_depth;
        uint8_t                 state;
        uint8_t                 init_state;
+#define        MFI_LD_PARAMS_INIT_NO           0
+#define        MFI_LD_PARAMS_INIT_QUICK        1
+#define        MFI_LD_PARAMS_INIT_FULL         2
        uint8_t                 is_consistent;
        uint8_t                 reserved[23];
 } __packed;
@@ -995,7 +1044,7 @@ struct mfi_ld_progress {
 #define        MFI_LD_PROGRESS_CC      (1<<0)
 #define        MFI_LD_PROGRESS_BGI     (1<<1)
 #define        MFI_LD_PROGRESS_FGI     (1<<2)
-#define        MFI_LD_PORGRESS_RECON   (1<<3)
+#define        MFI_LD_PROGRESS_RECON   (1<<3)
        struct mfi_progress     cc;
        struct mfi_progress     bgi;
        struct mfi_progress     fgi;
@@ -1028,26 +1077,18 @@ struct mfi_ld_info {
        uint8_t                 reserved2[16];
 } __packed;
 
-union mfi_spare_type {
-       struct {
-               uint8_t         is_dedicate             :1;
-               uint8_t         is_revertable           :1;
-               uint8_t         is_encl_affinity        :1;
-               uint8_t         reserved                :5;
-       } v;
-       uint8_t         type;
-} __packed;
-
 #define MAX_ARRAYS 16
 struct mfi_spare {
        union mfi_pd_ref        ref;
-       union mfi_spare_type    spare_type;
+       uint8_t                 spare_type;
+#define        MFI_SPARE_DEDICATED     (1 << 0)
+#define        MFI_SPARE_REVERTIBLE    (1 << 1)
+#define        MFI_SPARE_ENCL_AFFINITY (1 << 2)
        uint8_t                 reserved[2];
        uint8_t                 array_count;
-       uint16_t                array_refd[MAX_ARRAYS];
+       uint16_t                array_ref[MAX_ARRAYS];
 } __packed;
 
-#define MAX_ROW_SIZE 32
 struct mfi_array {
        uint64_t                        size;
        uint8_t                         num_drives;
@@ -1055,13 +1096,13 @@ struct mfi_array {
        uint16_t                        array_ref;
        uint8_t                         pad[20];
        struct {
-               union mfi_pd_ref        ref;
-               uint16_t                fw_state;
+               union mfi_pd_ref        ref;    /* 0xffff == missing drive */
+               uint16_t                fw_state;       /* MFI_PD_STATE_* */
                struct {
                        uint8_t         pd;
                        uint8_t         slot;
                } encl;
-       } pd[MAX_ROW_SIZE];
+       } pd[0];
 } __packed;
 
 struct mfi_config_data {
@@ -1073,13 +1114,117 @@ struct mfi_config_data {
        uint16_t                spares_count;
        uint16_t                spares_size;
        uint8_t                 reserved[16];
-       uint8_t                 data;
-       /*
-       struct mfi_array        array[];
-       struct mfi_ld_config    ld[];
-       struct mfi_spare        spare[];
-       */
-} __packed;
+       struct mfi_array        array[0];
+       struct mfi_ld_config    ld[0];
+       struct mfi_spare        spare[0];
+} __packed;
+
+struct mfi_bbu_capacity_info {
+       uint16_t                relative_charge;
+       uint16_t                absolute_charge;
+       uint16_t                remaining_capacity;
+       uint16_t                full_charge_capacity;
+       uint16_t                run_time_to_empty;
+       uint16_t                average_time_to_empty;
+       uint16_t                average_time_to_full;
+       uint16_t                cycle_count;
+       uint16_t                max_error;
+       uint16_t                remaining_capacity_alarm;
+       uint16_t                remaining_time_alarm;
+       uint8_t                 reserved[26];
+} __packed;
+
+struct mfi_bbu_design_info {
+       uint32_t                mfg_date;
+       uint16_t                design_capacity;
+       uint16_t                design_voltage;
+       uint16_t                spec_info;
+       uint16_t                serial_number;
+       uint16_t                pack_stat_config;
+       uint8_t                 mfg_name[12];
+       uint8_t                 device_name[8];
+       uint8_t                 device_chemistry[8];
+       uint8_t                 mfg_data[8];
+       uint8_t                 reserved[17];
+} __packed;
+
+struct mfi_ibbu_state {
+       uint16_t                gas_guage_status;
+       uint16_t                relative_charge;
+       uint16_t                charger_system_state;
+       uint16_t                charger_system_ctrl;
+       uint16_t                charging_current;
+       uint16_t                absolute_charge;
+       uint16_t                max_error;
+       uint8_t                 reserved[18];
+} __packed;
+
+struct mfi_bbu_state {
+       uint16_t                gas_guage_status;
+       uint16_t                relative_charge;
+       uint16_t                charger_status;
+       uint16_t                remaining_capacity;
+       uint16_t                full_charge_capacity;
+       uint8_t                 is_SOH_good;
+       uint8_t                 reserved[21];
+} __packed;
+
+union mfi_bbu_status_detail {
+       struct mfi_ibbu_state   ibbu;
+       struct mfi_bbu_state    bbu;
+};
+
+struct mfi_bbu_status {
+       uint8_t                 battery_type;
+#define        MFI_BBU_TYPE_NONE       0
+#define        MFI_BBU_TYPE_IBBU       1
+#define        MFI_BBU_TYPE_BBU        2       
+       uint8_t                 reserved;
+       uint16_t                voltage;
+       int16_t                 current;
+       uint16_t                temperature;
+       uint32_t                fw_status;
+#define        MFI_BBU_STATE_PACK_MISSING      (1 << 0)
+#define        MFI_BBU_STATE_VOLTAGE_LOW       (1 << 1)
+#define        MFI_BBU_STATE_TEMPERATURE_HIGH  (1 << 2)
+#define        MFI_BBU_STATE_CHARGE_ACTIVE     (1 << 0)
+#define        MFI_BBU_STATE_DISCHARGE_ACTIVE  (1 << 0)
+       uint8_t                 pad[20];
+       union mfi_bbu_status_detail detail;
+} __packed;
+
+enum mfi_pr_state {
+       MFI_PR_STATE_STOPPED = 0,
+       MFI_PR_STATE_READY = 1,
+       MFI_PR_STATE_ACTIVE = 2,
+       MFI_PR_STATE_ABORTED = 0xff
+};
+
+struct mfi_pr_status {
+       uint32_t                num_iteration;
+       uint8_t                 state;
+       uint8_t                 num_pd_done;
+       uint8_t                 reserved[10];
+};
+
+enum mfi_pr_opmode {
+       MFI_PR_OPMODE_AUTO = 0,
+       MFI_PR_OPMODE_MANUAL = 1,
+       MFI_PR_OPMODE_DISABLED = 2
+};
+
+struct mfi_pr_properties {
+       uint8_t                 op_mode;
+       uint8_t                 max_pd;
+       uint8_t                 reserved;
+       uint8_t                 exclude_ld_count;
+       uint16_t                excluded_ld[MFI_MAX_LD];
+       uint8_t                 cur_pd_map[MFI_MAX_PD / 8];
+       uint8_t                 last_pd_map[MFI_MAX_PD / 8];
+       uint32_t                next_exec;
+       uint32_t                exec_freq;
+       uint32_t                clear_freq;
+};
 
 #define MFI_SCSI_MAX_TARGETS   128
 #define MFI_SCSI_MAX_LUNS      8

Modified: stable/7/usr.sbin/Makefile
==============================================================================
--- stable/7/usr.sbin/Makefile  Mon Oct 26 18:32:06 2009        (r198495)
+++ stable/7/usr.sbin/Makefile  Mon Oct 26 18:57:57 2009        (r198496)
@@ -91,6 +91,7 @@ SUBDIR=       ${_ac} \
        manctl \
        memcontrol \
        mergemaster \
+       mfiutil \
        mixer \
        ${_mld6query} \
        mlxcontrol \

Modified: stable/7/usr.sbin/mfiutil/Makefile
==============================================================================
--- head/usr.sbin/mfiutil/Makefile      Thu Aug 13 23:18:45 2009        
(r196200)
+++ stable/7/usr.sbin/mfiutil/Makefile  Mon Oct 26 18:57:57 2009        
(r198496)
@@ -3,6 +3,7 @@ PROG=   mfiutil
 
 SRCS=  mfiutil.c mfi_cmd.c mfi_config.c mfi_drive.c mfi_evt.c mfi_flash.c \
        mfi_patrol.c mfi_show.c mfi_volume.c
+MAN8=  mfiutil.8
 
 CFLAGS+= -fno-builtin-strftime
 WARNS?=3

Modified: stable/7/usr.sbin/mfiutil/mfi_drive.c
==============================================================================
--- head/usr.sbin/mfiutil/mfi_drive.c   Thu Aug 13 23:18:45 2009        
(r196200)
+++ stable/7/usr.sbin/mfiutil/mfi_drive.c       Mon Oct 26 18:57:57 2009        
(r198496)
@@ -75,8 +75,9 @@ int
 mfi_lookup_drive(int fd, char *drive, uint16_t *device_id)
 {
        struct mfi_pd_list *list;
-       long val;
        uint8_t encl, slot;
+       long val;
+       u_int i;
        char *cp;
 
        /* Look for a raw device id first. */
@@ -117,15 +118,15 @@ mfi_lookup_drive(int fd, char *drive, ui
                        return (errno);
                }
 
-               for (val = 0; val < list->count; val++) {
-                       if (list->addr[val].scsi_dev_type != 0)
+               for (i = 0; i < list->count; i++) {
+                       if (list->addr[i].scsi_dev_type != 0)
                                continue;
 
                        if (((encl == 0xff &&
-                           list->addr[val].encl_device_id == 0xffff) ||
-                           list->addr[val].encl_index == encl) &&
-                           list->addr[val].slot_number == slot) {
-                               *device_id = list->addr[val].device_id;
+                           list->addr[i].encl_device_id == 0xffff) ||
+                           list->addr[i].encl_index == encl) &&
+                           list->addr[i].slot_number == slot) {
+                               *device_id = list->addr[i].device_id;
                                free(list);
                                return (0);
                        }

Copied and modified: stable/7/usr.sbin/mfiutil/mfiutil.8 (from r196280, 
head/usr.sbin/mfiutil/mfiutil.8)
==============================================================================
--- head/usr.sbin/mfiutil/mfiutil.8     Mon Aug 17 06:05:55 2009        
(r196280, copy source)
+++ stable/7/usr.sbin/mfiutil/mfiutil.8 Mon Oct 26 18:57:57 2009        
(r198496)
@@ -27,8 +27,8 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd June 17, 2008
-.Dt MFIUTIL 1
+.Dd August 16, 2009
+.Dt MFIUTIL 8
 .Os
 .Sh NAME
 .Nm mfiutil
@@ -161,9 +161,6 @@ on the volume may be specified by the co
 device,
 such as
 .Em mfid0 .
-Note that this second method only works on OS versions
-.Dv 6.2-YAHOO-20070510
-and later.
 .Pp
 Drives may be specified in two forms.
 First,
@@ -562,13 +559,8 @@ patrol read starting in 5 minutes:
 .Pp
 .Sh SEE ALSO
 .Xr mfi 4
-.Sh BUGS
-On 64-bit OS versions
-.Dv 6.2-YAHOO-20070514
-and earlier,
-the 
-.Xr mfi 4
-driver does not properly report firmware errors to 32-bit versions of
-.Nm .
-As a result,
-some commands may fail even though they do not report any errors.
+.Sh HISTORY
+The
+.Nm
+utility first appeared in
+.Fx 8.0 .
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to