From owner-svn-src-projects@freebsd.org Sun May 22 07:05:36 2016 Return-Path: Delivered-To: svn-src-projects@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id B4F84B44407 for ; Sun, 22 May 2016 07:05:36 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::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 852EB1816; Sun, 22 May 2016 07:05:36 +0000 (UTC) (envelope-from ngie@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id u4M75ZNM071789; Sun, 22 May 2016 07:05:35 GMT (envelope-from ngie@FreeBSD.org) Received: (from ngie@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id u4M75Zkq071787; Sun, 22 May 2016 07:05:35 GMT (envelope-from ngie@FreeBSD.org) Message-Id: <201605220705.u4M75Zkq071787@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: ngie set sender to ngie@FreeBSD.org using -f From: Garrett Cooper Date: Sun, 22 May 2016 07:05:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r300399 - projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 May 2016 07:05:36 -0000 Author: ngie Date: Sun May 22 07:05:35 2016 New Revision: 300399 URL: https://svnweb.freebsd.org/changeset/base/300399 Log: Remove Isilon specific features and make the kld compile with CURRENT Some of the previous code was originally written for older versions of FreeBSD Modified: projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.c projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.h Modified: projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.c ============================================================================== --- projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.c Sun May 22 07:04:33 2016 (r300398) +++ projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.c Sun May 22 07:05:35 2016 (r300399) @@ -106,7 +106,7 @@ typedef struct pvscsi_adapter pvscsinst_ #define MODNM pvscsi enum { PVSCSI_MSIX_VEC0 = 0, /* Only one MSI-X interrupt required */ - PVSCSI_NUM_MSIX + PVSCSI_NUM_MSIX }; MALLOC_DEFINE(M_PVSCSI, "pvscsi", "VMware's para-virtualized scsi driver"); @@ -237,7 +237,6 @@ pvscsi_acquire_context(struct pvscsi_ada #else ctx->cmd = cmd->qsc_csio; ctx->toed = false; - ctx->debugerr_checked = false; #endif /* __FreeBSD__ */ list_del(&ctx->list); @@ -524,64 +523,15 @@ static void pvscsi_map_buffers(struct pv #ifdef __FreeBSD__ struct ccb_scsiio *csio = cmd->qsc_csio; - device_t device = pvscsi_dev(adapter); - ctx->e = e; ctx->dmamapping_errno = 0; - switch(csio->ccb_h.flags & (CAM_DATA_PHYS|CAM_SCATTER_VALID)) { - case CAM_DATA_PHYS|CAM_SCATTER_VALID: { - pvscsi_queue_io(ctx, - (struct bus_dma_segment *)csio->data_ptr, - csio->sglist_cnt, 0); - LOG(0, "CAM_DATA_PHYS|CAM_SCATTER_VALID\n"); - break; - } - - case CAM_SCATTER_VALID: { - device_printf(device, "No support yet for list of VAs\n"); - csio->ccb_h.status = CAM_REQ_CMP_ERR; - LOG(0, "CAM_SCATTER_VALID\n"); - break; - } - - case CAM_DATA_PHYS: { - struct bus_dma_segment seg; - seg.ds_addr = (bus_addr_t)(vm_offset_t)csio->data_ptr; - seg.ds_len = csio->dxfer_len; - pvscsi_queue_io(ctx, &seg, 1, 0); - LOG(0, "CAM_DATA_PHYS\n"); - break; - } - - case 0: { - int error; - - if (csio->bio && !csio->data_ptr) - error = bus_dmamap_load_bio(adapter->pvs_dmat, - ctx->dmap, csio->bio, - pvscsi_queue_io, ctx, - BUS_DMA_NOWAIT); - else - error = bus_dmamap_load(adapter->pvs_dmat, - ctx->dmap, csio->data_ptr, - csio->dxfer_len, - pvscsi_queue_io, ctx, - BUS_DMA_NOWAIT); - if (error) - ctx->dmamapping_errno = error; - - LOG(0, "single VA %p %p %lx\n", csio->bio, - csio->data_ptr, virt_to_phys(csio->data_ptr)); - break; - } + int error; - default: { - panic("Unknown case %d", - (csio->ccb_h.flags & - (CAM_DATA_PHYS|CAM_SCATTER_VALID))); - } - } + error = bus_dmamap_load_ccb(adapter->pvs_dmat, ctx->dmap, + (union ccb *)csio, pvscsi_queue_io, ctx, BUS_DMA_NOWAIT); + if (error) + ctx->dmamapping_errno = error; if (ctx->dmamapping_errno) { if (ctx->dmamapping_errno == EFBIG) @@ -654,10 +604,8 @@ static void pvscsi_unmap_buffers(const s #else /* __FreeBSD__ */ struct ccb_scsiio *csio = ctx->cmd; - if (csio->dxfer_len && - !(csio->ccb_h.flags & (CAM_DATA_PHYS|CAM_SCATTER_VALID))) { + if (csio->dxfer_len) bus_dmamap_unload(adapter->pvs_dmat, ctx->dmap); - } #endif /* __FreeBSD__ */ } @@ -775,28 +723,15 @@ void pvscsi_complete_request(struct pvsc bool toed = false; struct ccb_scsiio *cmd; device_t device = pvscsi_dev(adapter); - int debugerr = 0; #endif /* __FreeBSD__ */ u32 btstat = e->hostStatus; u32 sdstat = e->scsiStatus; + u64 edataLen = e->dataLen; + mtx_assert(&adapter->pvs_camlock, MA_OWNED); ctx = pvscsi_get_context(adapter, e->context); cmd = ctx->cmd; #ifdef __FreeBSD__ - - /* - * check debugerr failpoints now so that we can do nothing if we're - * delaying the completion with a timer. Only check them once per - * command. - */ - if (!ctx->debugerr_checked) { - ctx->debugerr_checked = true; /* For when this very routine is - * invoked from the FP callout */ - debugerr = pvscsi_debugerr_check(adapter, ctx); - if (debugerr == PVSCSI_DEBUGERR_QUEUED) - return; - } - callout_stop(&ctx->calloutx); /* disables ABORT or SCSI IO callout */ toed = ctx->toed; if (toed) { @@ -857,7 +792,7 @@ void pvscsi_complete_request(struct pvsc #else /* __FreeBSD__ */ cmd->scsi_status = sdstat; cmd->ccb_h.status = CAM_DATA_RUN_ERR; - cmd->resid = cmd->dxfer_len - e->dataLen; + cmd->resid = cmd->dxfer_len - edataLen; #endif /* __FreeBSD__ */ break; @@ -956,12 +891,6 @@ void pvscsi_complete_request(struct pvsc cmd->scsi_done(cmd); #else /* __FreeBSD__ */ - if (debugerr != 0) { - /* inject an error */ - union ccb *ccb = (union ccb *)cmd; - ccb->ccb_h.status = CAM_UNCOR_PARITY; - ccb->csio.scsi_status = SCSI_STATUS_CHECK_COND; - } xpt_done((union ccb *)cmd); #endif /* __FreeBSD__ */ } @@ -1001,43 +930,6 @@ static void pvscsi_process_completion_ri } } -static inline void -PRINT_CTX(struct pvscsi_ctx *ctx) -{ - printf("pvscsi:ctx %p [0]>%lx [l]>%x %lx %lx %lx %d %p %p\n", - ctx->sgl, - ctx->sgl->sge[0].addr, - ctx->sgl->sge[0].length, - ctx->dataPA, - ctx->sensePA, - ctx->sglPA, - ctx->dmamapping_errno, - ctx->e, - ctx->dmap); -} - - -static inline void -PRINT_REQ(struct PVSCSIRingReqDesc *e) -{ - printf("pvscsi:req cid>%lx dat>%lx dlen>%lx sns>%lx slen>%x fl>%x " - "c0>%u cl>%u lu>%u tg>%u b>%u trg>%u cpu>%u\n", - e->context, - e->dataAddr, - e->dataLen, - e->senseAddr, - e->senseLen, - e->flags, - e->cdb[0], - e->cdbLen, - e->lun[0], - e->tag, - e->bus, - e->target, - e->vcpuHint); -} - - /* * Translate a Linux SCSI request into a request ring entry. */ @@ -1261,7 +1153,6 @@ static int pvscsi_queue_locked(struct sc spin_unlock_irqrestore(&adapter->hw_lock, flags); #else /* __FreeBSD__ */ - ctx->debugerr_checked = false; ctx->toed = false; if (adapter->pvs_timeout_one_comm_targ == cmd->qsc_csio->ccb_h.target_id) { @@ -1537,8 +1428,6 @@ pvscsi_device_lost_or_found(pvscsinst_t struct cam_path *path; struct ccb_getdev ccb = { }; cam_status err; - diskevt_event_t diskevent; - int eventnum = -1; if (lun) { device_printf(pvscsi_dev(adapter), "hotplug/removal event for " @@ -1570,24 +1459,7 @@ pvscsi_device_lost_or_found(pvscsinst_t } xpt_free_path(path); - if (adapter->pvs_camsim) { - eventnum = ISI_UNIT(IDSK_TYPE_DA, - CAM_BTL_2ISIUNIT(cam_sim_path(adapter->pvs_camsim), trg, - lun)); - } PVSCSIULCK; - - if (eventnum >= 0) { - bzero(&diskevent, sizeof(diskevent)); - diskevent.unitnum = eventnum; - diskevent.type = lost ? DISKEVT_DISK_ABSENT : - DISKEVT_DISK_PRESENT; - diskevt_cdev_notify_event(&diskevent); - } else { - device_printf(pvscsi_dev(adapter), - "Could'nt post drive %s DISKEVT. e:t:l %d:%d:%d\n", - lost ? "remove" : "add", eventnum, trg, lun); - } } #endif /* __FreeBSD__ */ @@ -1722,7 +1594,7 @@ static int pvscsi_setup_msg_workqueue(st #else snprintf(name, sizeof name, "pvscsi_wq_%u", device_get_unit(adapter->pvs_dev)); -#endif /* */ +#endif /* __FreeBSD__ */ adapter->workqueue = create_singlethread_workqueue(name); if (!adapter->workqueue) { @@ -1831,35 +1703,37 @@ pvscsi_setup_intr(pvscsinst_t *adapter, rid++; /* RID 1 in the interrupt space is for MSIX interrupts */ if (pci_msix_count(adapter->pvs_dev) < PVSCSI_NUM_MSIX) { - device_printf(device, "pci_msix_count():%d < " - "PVSCSI_NUM_MSIX\n", - pci_msix_count(adapter->pvs_dev)); + device_printf(device, + "pci_msix_count():%d < PVSCSI_NUM_MSIX\n", + pci_msix_count(adapter->pvs_dev)); return false; } err = pci_alloc_msix(adapter->pvs_dev, &msix_vecs_needed); - if (err || (msix_vecs_needed < PVSCSI_NUM_MSIX)) { - device_printf(device, "retval>%d, " - "msix_vecs_needed>%d\n", - err, msix_vecs_needed); + if (err != 0 || msix_vecs_needed < PVSCSI_NUM_MSIX) { + device_printf(device, + "retval>%d, msix_vecs_needed>%d\n", + err, msix_vecs_needed); return false; } } res = bus_alloc_resource_any(adapter->pvs_dev, SYS_RES_IRQ, &rid, - RF_ACTIVE); - if (!res) { - device_printf(device, "Could'nt allocate interrupt resource\n"); - if (msix) pci_release_msi(adapter->pvs_dev); + RF_SHAREABLE|RF_ACTIVE); + if (res == NULL) { + device_printf(device, "Couldn't allocate interrupt resource\n"); + if (msix) + pci_release_msi(adapter->pvs_dev); return false; } - err = bus_setup_intr(adapter->pvs_dev, res, INTR_MPSAFE | INTR_TYPE_CAM, - NULL, isr, adapter, &adapter->pvs_intcookie); - if (err) { - device_printf(device, "bus_setup_intr()>%d\n", err); + err = bus_setup_intr(adapter->pvs_dev, res, INTR_MPSAFE|INTR_TYPE_CAM, + NULL, isr, adapter, &adapter->pvs_intcookie); + if (err != 0) { + device_printf(device, "bus_setup_intr failed: %d\n", err); bus_release_resource(adapter->pvs_dev, SYS_RES_IRQ, rid, res); - if (msix) pci_release_msi(adapter->pvs_dev); + if (msix) + pci_release_msi(adapter->pvs_dev); return false; } @@ -1867,8 +1741,6 @@ pvscsi_setup_intr(pvscsinst_t *adapter, adapter->pvs_intres = res; adapter->pvs_intrid = rid; - device_printf(device, "Interrupt successfully installed\n"); - return true; } #endif /* __FreeBSD__ */ @@ -1920,7 +1792,7 @@ static void pvscsi_release_resources(str pvscsi_free_sgls(adapter); kfree(adapter->cmd_map); #else - ASSERT(adapter->cmd_map_size); + KASSERT((adapter->cmd_map_size > 0), "adapter->"); pvscsi_free_sgls(adapter); kfree(adapter->cmd_map, adapter->cmd_map_size); #endif @@ -2343,9 +2215,9 @@ pvscsi_action(struct cam_sim *psim, unio else cmd->cmnd = (void *)&csio->cdb_io.cdb_bytes; - ASSERT(!(csio->ccb_h.flags & - (CAM_SENSE_PHYS|CAM_SENSE_PTR)), "%x", - csio->ccb_h.flags); /* We expect a struct */ + KASSERT(!(csio->ccb_h.flags & + (CAM_SENSE_PHYS|CAM_SENSE_PTR)), ("%x", + csio->ccb_h.flags)); /* We expect a struct */ cmd->sense_buffer = &csio->sense_data; #define CSIODIR (csio->ccb_h.flags & CAM_DIR_MASK) @@ -2410,7 +2282,7 @@ pvscsi_action(struct cam_sim *psim, unio target_id_t trg = pccb->ccb_h.target_id; if (pccb->ccb_h.target_lun) { - device_printf(device, "Non-zero LU number %d\n", + device_printf(device, "Non-zero LU number %lu\n", pccb->ccb_h.target_lun); pccb->ccb_h.status = CAM_LUN_INVALID; xpt_done(pccb); @@ -2572,14 +2444,6 @@ pvscsi_pci_attach(device_t device) if (!adapter->pvs_tarrg) { goto out_reset_adapter; } - - adapter->pvscsi_dbgfail_cnt = 0; - adapter->pvscsi_dbgfails = malloc(sizeof(struct pvscsi_dbgfail) * - IDISKFP_DBGFAILCNT, M_PVSCSI,M_WAITOK|M_ZERO); - if (!adapter->pvscsi_dbgfails) { - goto out_free_pvs_tarrg; - } - mtx_init(&adapter->pvs_camlock, "pvscsi camlock", NULL, MTX_DEF); INIT_LIST_HEAD(&adapter->cmd_pool); @@ -2622,8 +2486,6 @@ pvscsi_pci_attach(device_t device) &adapter->pvs_reset_target_on_timeout, 0U, "Reset the target on I/O timing out(for test purposes)"); - pvscsi_debugerr_add_sysctls(adapter); - /* Register with CAM as a SIM */ adapter->pvs_camdevq = cam_simq_alloc(adapter->req_depth); if (!adapter->pvs_camdevq) { @@ -2641,7 +2503,6 @@ pvscsi_pci_attach(device_t device) device_printf(device, "cam_sim_alloc() failed\n"); goto out_cam_simq; } - cam_sim_set_unmapped(adapter->pvs_camsim, 1); PVSCSILCK; if (xpt_bus_register(adapter->pvs_camsim, NULL, 0) != CAM_SUCCESS) { @@ -2677,9 +2538,6 @@ out_cam_simq: out_delete_dmat: bus_dma_tag_destroy(adapter->pvs_dmat); mtx_destroy(&adapter->pvs_camlock); - free(adapter->pvscsi_dbgfails, M_PVSCSI); - adapter->pvscsi_dbgfails = NULL; -out_free_pvs_tarrg: free(adapter->pvs_tarrg, M_PVSCSI); adapter->pvs_tarrg = NULL; out_reset_adapter: Modified: projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.h ============================================================================== --- projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.h Sun May 22 07:04:33 2016 (r300398) +++ projects/vmware_pvscsi/sys/dev/vmware/vmw_pvscsi/vmw_pvscsi.h Sun May 22 07:05:35 2016 (r300399) @@ -1,5 +1,6 @@ -/* ************************************************************************ - * Copyright 2008 VMware, Inc. All rights reserved. +/*- + * Copyright 2008 VMware, Inc. + * Copyright 2014-2016 EMC Corp. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -19,7 +20,9 @@ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - * ************************************************************************/ + * + * $FreeBSD$ + */ #ifndef _VMW_PVSCSI_H_ #define _VMW_PVSCSI_H_ @@ -28,10 +31,6 @@ #include #else #include "compat_freebsd.h" - -#include -#include -#include #endif /* __FreeBSD__ */ #define PVSCSI_DRIVER_VERSION_STRING "1.0.1.0-k" @@ -518,7 +517,6 @@ struct pvscsi_ctx { bus_dmamap_t dmap; struct callout calloutx; bool toed; - bool debugerr_checked; struct pvscsi_adapter *adapter; #endif /* __FreeBSD__ */ }; @@ -531,13 +529,6 @@ typedef struct pvscsitarg { #include -struct pvscsi_dbgfail { - uint32_t ctrl; /* See sys/geom/isi_disk.h */ - uint32_t unit; - uint64_t lba; - struct fail_point rate; -}; - /* Expects a pvscsinst_t *adapter has been initialized */ #define PVSCSILCK mtx_lock(&((adapter)->pvs_camlock)) #define PVSCSIULCK mtx_unlock(&((adapter)->pvs_camlock)) @@ -606,12 +597,10 @@ struct pvscsi_adapter { pvscsitarg_t *pvs_tarrg; target_id_t pvs_timeout_one_comm_targ; uint32 pvs_reset_target_on_timeout; - struct pvscsi_dbgfail *pvscsi_dbgfails; - int pvscsi_dbgfail_cnt; #endif /* __FreeBSD__ */ }; void pvscsi_complete_request(struct pvscsi_adapter *adapter, const struct PVSCSIRingCmpDesc *e); -#include "isln_pvscsi.h" + #endif /* _VMW_PVSCSI_H_ */