From owner-svn-src-all@FreeBSD.ORG Sun May 4 01:03:55 2014 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2253B270; Sun, 4 May 2014 01:03:55 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0DE1A1993; Sun, 4 May 2014 01:03:55 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.8/8.14.8) with ESMTP id s4413sxq078242; Sun, 4 May 2014 01:03:54 GMT (envelope-from bryanv@svn.freebsd.org) Received: (from bryanv@localhost) by svn.freebsd.org (8.14.8/8.14.8/Submit) id s4413sfw078241; Sun, 4 May 2014 01:03:54 GMT (envelope-from bryanv@svn.freebsd.org) Message-Id: <201405040103.s4413sfw078241@svn.freebsd.org> From: Bryan Venteicher Date: Sun, 4 May 2014 01:03:54 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org Subject: svn commit: r265302 - stable/9/sys/dev/virtio/scsi X-SVN-Group: stable-9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.17 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 May 2014 01:03:55 -0000 Author: bryanv Date: Sun May 4 01:03:54 2014 New Revision: 265302 URL: http://svnweb.freebsd.org/changeset/base/265302 Log: MFC r261147, r261149: - Remove spaces before tabs in the function prototype list - Read each field of the configuration individually Modified: stable/9/sys/dev/virtio/scsi/virtio_scsi.c Directory Properties: stable/9/sys/ (props changed) stable/9/sys/dev/ (props changed) Modified: stable/9/sys/dev/virtio/scsi/virtio_scsi.c ============================================================================== --- stable/9/sys/dev/virtio/scsi/virtio_scsi.c Sun May 4 00:57:38 2014 (r265301) +++ stable/9/sys/dev/virtio/scsi/virtio_scsi.c Sun May 4 01:03:54 2014 (r265302) @@ -75,13 +75,15 @@ static int vtscsi_suspend(device_t); static int vtscsi_resume(device_t); static void vtscsi_negotiate_features(struct vtscsi_softc *); +static void vtscsi_read_config(struct vtscsi_softc *, + struct virtio_scsi_config *); static int vtscsi_maximum_segments(struct vtscsi_softc *, int); static int vtscsi_alloc_virtqueues(struct vtscsi_softc *); static void vtscsi_write_device_config(struct vtscsi_softc *); static int vtscsi_reinit(struct vtscsi_softc *); static int vtscsi_alloc_cam(struct vtscsi_softc *); -static int vtscsi_register_cam(struct vtscsi_softc *); +static int vtscsi_register_cam(struct vtscsi_softc *); static void vtscsi_free_cam(struct vtscsi_softc *); static void vtscsi_cam_async(void *, uint32_t, struct cam_path *, void *); static int vtscsi_register_async(struct vtscsi_softc *); @@ -91,7 +93,7 @@ static void vtscsi_cam_poll(struct cam_s static void vtscsi_cam_scsi_io(struct vtscsi_softc *, struct cam_sim *, union ccb *); -static void vtscsi_cam_get_tran_settings(struct vtscsi_softc *, +static void vtscsi_cam_get_tran_settings(struct vtscsi_softc *, union ccb *); static void vtscsi_cam_reset_bus(struct vtscsi_softc *, union ccb *); static void vtscsi_cam_reset_dev(struct vtscsi_softc *, union ccb *); @@ -99,69 +101,69 @@ static void vtscsi_cam_abort(struct vtsc static void vtscsi_cam_path_inquiry(struct vtscsi_softc *, struct cam_sim *, union ccb *); -static int vtscsi_sg_append_scsi_buf(struct vtscsi_softc *, +static int vtscsi_sg_append_scsi_buf(struct vtscsi_softc *, struct sglist *, struct ccb_scsiio *); -static int vtscsi_fill_scsi_cmd_sglist(struct vtscsi_softc *, +static int vtscsi_fill_scsi_cmd_sglist(struct vtscsi_softc *, struct vtscsi_request *, int *, int *); -static int vtscsi_execute_scsi_cmd(struct vtscsi_softc *, +static int vtscsi_execute_scsi_cmd(struct vtscsi_softc *, struct vtscsi_request *); -static int vtscsi_start_scsi_cmd(struct vtscsi_softc *, union ccb *); +static int vtscsi_start_scsi_cmd(struct vtscsi_softc *, union ccb *); static void vtscsi_complete_abort_timedout_scsi_cmd(struct vtscsi_softc *, struct vtscsi_request *); -static int vtscsi_abort_timedout_scsi_cmd(struct vtscsi_softc *, +static int vtscsi_abort_timedout_scsi_cmd(struct vtscsi_softc *, struct vtscsi_request *); static void vtscsi_timedout_scsi_cmd(void *); static cam_status vtscsi_scsi_cmd_cam_status(struct virtio_scsi_cmd_resp *); static cam_status vtscsi_complete_scsi_cmd_response(struct vtscsi_softc *, struct ccb_scsiio *, struct virtio_scsi_cmd_resp *); -static void vtscsi_complete_scsi_cmd(struct vtscsi_softc *, +static void vtscsi_complete_scsi_cmd(struct vtscsi_softc *, struct vtscsi_request *); static void vtscsi_poll_ctrl_req(struct vtscsi_softc *, struct vtscsi_request *); -static int vtscsi_execute_ctrl_req(struct vtscsi_softc *, +static int vtscsi_execute_ctrl_req(struct vtscsi_softc *, struct vtscsi_request *, struct sglist *, int, int, int); -static void vtscsi_complete_abort_task_cmd(struct vtscsi_softc *c, +static void vtscsi_complete_abort_task_cmd(struct vtscsi_softc *c, struct vtscsi_request *); -static int vtscsi_execute_abort_task_cmd(struct vtscsi_softc *, +static int vtscsi_execute_abort_task_cmd(struct vtscsi_softc *, struct vtscsi_request *); -static int vtscsi_execute_reset_dev_cmd(struct vtscsi_softc *, +static int vtscsi_execute_reset_dev_cmd(struct vtscsi_softc *, struct vtscsi_request *); -static void vtscsi_get_request_lun(uint8_t [], target_id_t *, lun_id_t *); +static void vtscsi_get_request_lun(uint8_t [], target_id_t *, lun_id_t *); static void vtscsi_set_request_lun(struct ccb_hdr *, uint8_t []); static void vtscsi_init_scsi_cmd_req(struct ccb_scsiio *, struct virtio_scsi_cmd_req *); static void vtscsi_init_ctrl_tmf_req(struct ccb_hdr *, uint32_t, uintptr_t, struct virtio_scsi_ctrl_tmf_req *); -static void vtscsi_freeze_simq(struct vtscsi_softc *, int); +static void vtscsi_freeze_simq(struct vtscsi_softc *, int); static int vtscsi_thaw_simq(struct vtscsi_softc *, int); -static void vtscsi_announce(struct vtscsi_softc *, uint32_t, target_id_t, +static void vtscsi_announce(struct vtscsi_softc *, uint32_t, target_id_t, lun_id_t); -static void vtscsi_execute_rescan(struct vtscsi_softc *, target_id_t, +static void vtscsi_execute_rescan(struct vtscsi_softc *, target_id_t, lun_id_t); -static void vtscsi_execute_rescan_bus(struct vtscsi_softc *); +static void vtscsi_execute_rescan_bus(struct vtscsi_softc *); -static void vtscsi_handle_event(struct vtscsi_softc *, +static void vtscsi_handle_event(struct vtscsi_softc *, struct virtio_scsi_event *); -static int vtscsi_enqueue_event_buf(struct vtscsi_softc *, +static int vtscsi_enqueue_event_buf(struct vtscsi_softc *, struct virtio_scsi_event *); static int vtscsi_init_event_vq(struct vtscsi_softc *); -static void vtscsi_reinit_event_vq(struct vtscsi_softc *); -static void vtscsi_drain_event_vq(struct vtscsi_softc *); +static void vtscsi_reinit_event_vq(struct vtscsi_softc *); +static void vtscsi_drain_event_vq(struct vtscsi_softc *); -static void vtscsi_complete_vqs_locked(struct vtscsi_softc *); -static void vtscsi_complete_vqs(struct vtscsi_softc *); -static void vtscsi_drain_vqs(struct vtscsi_softc *); -static void vtscsi_cancel_request(struct vtscsi_softc *, +static void vtscsi_complete_vqs_locked(struct vtscsi_softc *); +static void vtscsi_complete_vqs(struct vtscsi_softc *); +static void vtscsi_drain_vqs(struct vtscsi_softc *); +static void vtscsi_cancel_request(struct vtscsi_softc *, struct vtscsi_request *); static void vtscsi_drain_vq(struct vtscsi_softc *, struct virtqueue *); static void vtscsi_stop(struct vtscsi_softc *); static int vtscsi_reset_bus(struct vtscsi_softc *); -static void vtscsi_init_request(struct vtscsi_softc *, +static void vtscsi_init_request(struct vtscsi_softc *, struct vtscsi_request *); static int vtscsi_alloc_requests(struct vtscsi_softc *); static void vtscsi_free_requests(struct vtscsi_softc *); @@ -170,18 +172,18 @@ static void vtscsi_enqueue_request(struc static struct vtscsi_request * vtscsi_dequeue_request(struct vtscsi_softc *); static void vtscsi_complete_request(struct vtscsi_request *); -static void vtscsi_complete_vq(struct vtscsi_softc *, struct virtqueue *); +static void vtscsi_complete_vq(struct vtscsi_softc *, struct virtqueue *); static void vtscsi_control_vq_intr(void *); static void vtscsi_event_vq_intr(void *); static void vtscsi_request_vq_intr(void *); -static void vtscsi_disable_vqs_intr(struct vtscsi_softc *); -static void vtscsi_enable_vqs_intr(struct vtscsi_softc *); +static void vtscsi_disable_vqs_intr(struct vtscsi_softc *); +static void vtscsi_enable_vqs_intr(struct vtscsi_softc *); -static void vtscsi_get_tunables(struct vtscsi_softc *); -static void vtscsi_add_sysctl(struct vtscsi_softc *); +static void vtscsi_get_tunables(struct vtscsi_softc *); +static void vtscsi_add_sysctl(struct vtscsi_softc *); -static void vtscsi_printf_req(struct vtscsi_request *, const char *, +static void vtscsi_printf_req(struct vtscsi_request *, const char *, const char *, ...); /* Global tunables. */ @@ -287,8 +289,7 @@ vtscsi_attach(device_t dev) if (virtio_with_feature(dev, VIRTIO_SCSI_F_HOTPLUG)) sc->vtscsi_flags |= VTSCSI_FLAG_HOTPLUG; - virtio_read_device_config(dev, 0, &scsicfg, - sizeof(struct virtio_scsi_config)); + vtscsi_read_config(sc, &scsicfg); sc->vtscsi_max_channel = scsicfg.max_channel; sc->vtscsi_max_target = scsicfg.max_target; @@ -408,6 +409,35 @@ vtscsi_negotiate_features(struct vtscsi_ sc->vtscsi_features = features; } +#define VTSCSI_GET_CONFIG(_dev, _field, _cfg) \ + virtio_read_device_config(_dev, \ + offsetof(struct virtio_scsi_config, _field), \ + &(_cfg)->_field, sizeof((_cfg)->_field)) \ + +static void +vtscsi_read_config(struct vtscsi_softc *sc, + struct virtio_scsi_config *scsicfg) +{ + device_t dev; + + dev = sc->vtscsi_dev; + + bzero(scsicfg, sizeof(struct virtio_scsi_config)); + + VTSCSI_GET_CONFIG(dev, num_queues, scsicfg); + VTSCSI_GET_CONFIG(dev, seg_max, scsicfg); + VTSCSI_GET_CONFIG(dev, max_sectors, scsicfg); + VTSCSI_GET_CONFIG(dev, cmd_per_lun, scsicfg); + VTSCSI_GET_CONFIG(dev, event_info_size, scsicfg); + VTSCSI_GET_CONFIG(dev, sense_size, scsicfg); + VTSCSI_GET_CONFIG(dev, cdb_size, scsicfg); + VTSCSI_GET_CONFIG(dev, max_channel, scsicfg); + VTSCSI_GET_CONFIG(dev, max_target, scsicfg); + VTSCSI_GET_CONFIG(dev, max_lun, scsicfg); +} + +#undef VTSCSI_GET_CONFIG + static int vtscsi_maximum_segments(struct vtscsi_softc *sc, int seg_max) {