From owner-svn-src-all@FreeBSD.ORG Tue Mar 26 18:43:54 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.FreeBSD.org [8.8.178.115]) by hub.freebsd.org (Postfix) with ESMTP id 19C565C7; Tue, 26 Mar 2013 18:43:54 +0000 (UTC) (envelope-from jimharris@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id E841669B; Tue, 26 Mar 2013 18:43:53 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.6/8.14.6) with ESMTP id r2QIhrIF067124; Tue, 26 Mar 2013 18:43:53 GMT (envelope-from jimharris@svn.freebsd.org) Received: (from jimharris@localhost) by svn.freebsd.org (8.14.6/8.14.5/Submit) id r2QIhrkS067122; Tue, 26 Mar 2013 18:43:53 GMT (envelope-from jimharris@svn.freebsd.org) Message-Id: <201303261843.r2QIhrkS067122@svn.freebsd.org> From: Jim Harris Date: Tue, 26 Mar 2013 18:43:53 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r248740 - head/sys/dev/nvme X-SVN-Group: head 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.14 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: Tue, 26 Mar 2013 18:43:54 -0000 Author: jimharris Date: Tue Mar 26 18:43:53 2013 New Revision: 248740 URL: http://svnweb.freebsd.org/changeset/base/248740 Log: Create a generic nvme_ctrlr_cmd_get_log_page function, and change the health information log page function to use it. Sponsored by: Intel Modified: head/sys/dev/nvme/nvme.h head/sys/dev/nvme/nvme_ctrlr_cmd.c Modified: head/sys/dev/nvme/nvme.h ============================================================================== --- head/sys/dev/nvme/nvme.h Tue Mar 26 18:42:05 2013 (r248739) +++ head/sys/dev/nvme/nvme.h Tue Mar 26 18:43:53 2013 (r248740) @@ -713,6 +713,10 @@ void nvme_ctrlr_cmd_get_feature(struct n uint8_t feature, uint32_t cdw11, void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn, void *cb_arg); +void nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, + uint8_t log_page, uint32_t nsid, + void *payload, uint32_t payload_size, + nvme_cb_fn_t cb_fn, void *cb_arg); /* NVM I/O functions */ int nvme_ns_cmd_write(struct nvme_namespace *ns, void *payload, Modified: head/sys/dev/nvme/nvme_ctrlr_cmd.c ============================================================================== --- head/sys/dev/nvme/nvme_ctrlr_cmd.c Tue Mar 26 18:42:05 2013 (r248739) +++ head/sys/dev/nvme/nvme_ctrlr_cmd.c Tue Mar 26 18:43:53 2013 (r248740) @@ -249,24 +249,35 @@ nvme_ctrlr_cmd_set_interrupt_coalescing( } void -nvme_ctrlr_cmd_get_health_information_page(struct nvme_controller *ctrlr, - uint32_t nsid, struct nvme_health_information_page *payload, - nvme_cb_fn_t cb_fn, void *cb_arg) +nvme_ctrlr_cmd_get_log_page(struct nvme_controller *ctrlr, uint8_t log_page, + uint32_t nsid, void *payload, uint32_t payload_size, nvme_cb_fn_t cb_fn, + void *cb_arg) { struct nvme_request *req; struct nvme_command *cmd; - req = nvme_allocate_request(payload, sizeof(*payload), cb_fn, cb_arg); + req = nvme_allocate_request(payload, payload_size, cb_fn, cb_arg); cmd = &req->cmd; cmd->opc = NVME_OPC_GET_LOG_PAGE; cmd->nsid = nsid; - cmd->cdw10 = ((sizeof(*payload)/sizeof(uint32_t)) - 1) << 16; - cmd->cdw10 |= NVME_LOG_HEALTH_INFORMATION; + cmd->cdw10 = ((payload_size/sizeof(uint32_t)) - 1) << 16; + cmd->cdw10 |= log_page; nvme_ctrlr_submit_admin_request(ctrlr, req); } + +void +nvme_ctrlr_cmd_get_health_information_page(struct nvme_controller *ctrlr, + uint32_t nsid, struct nvme_health_information_page *payload, + nvme_cb_fn_t cb_fn, void *cb_arg) +{ + + nvme_ctrlr_cmd_get_log_page(ctrlr, NVME_LOG_HEALTH_INFORMATION, + nsid, payload, sizeof(*payload), cb_fn, cb_arg); +} + void nvme_ctrlr_cmd_abort(struct nvme_controller *ctrlr, uint16_t cid, uint16_t sqid, nvme_cb_fn_t cb_fn, void *cb_arg)