Received: by 10.223.185.116 with SMTP id b49csp8805521wrg; Fri, 2 Mar 2018 08:14:24 -0800 (PST) X-Google-Smtp-Source: AG47ELvAKjp/s+JUFhJnsXUgjbtDyqpwWxVOezhUNbLrbY/0hycWhzBpw2X12vcfkUJfXC0K3Jwr X-Received: by 10.99.123.80 with SMTP id k16mr5121813pgn.134.1520007264183; Fri, 02 Mar 2018 08:14:24 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1520007264; cv=none; d=google.com; s=arc-20160816; b=CvT0uolZ8UBUTwsGv/pgswYlgX4k5gdgVOQtiGR8Rf+yIDQKMPXCfzfZUoWiJTp5WM fkj80daX4QGWp2YZokogyRit9MI9hoz4nmyhCUACk3/Mx1t8vMqTnFhl1J6FzBQpwa/4 AkFl7uqJgs702IaCwR4a7WA5dj837qsUXS2ROU7rFD94kHbM+l2Yksc08YS+limArodJ hQHZz6tCWN/HvzRFTHZjf8hXT0hAgD7Mk6l45Fk9XUErqIlPcB/IzxiwHdcA4UvWs1Ou WMNnBwjRjgYEs2A4iYP/0GhVDv8Up+l50qU6IoMzmBIlNVCh6EwDqiOxwzp/YiWfLedA Dg+g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature:arc-authentication-results; bh=tifpS9l54knkRd5TzPCoHa7opVD0T4Fo1z7t3coxLY4=; b=tkGlRkhx1v9hSPPHVyco9WEhj6UKYogOH3QjMGazkRQszdHCf4O1ztXuDSa0cxAXSu qtjQFs5/7ZQelMZ6pfpeDze/JgqXmZQCoDrFmYZiiOaEi0tfrjAkLb7hLQjueEzwlDDe HyL9G4373VVi8t0fvlAusGmJFFBjAH7e+HnDlhQobXVzAuCtpHZZYJL7dRvqDTTOrHlm dYVIkSydOTCmecK/LGPeNbda/MbaCPjAAZzIgU7jdp4iKLudfkSP2PDauQ6pNDDDnhQO 7iQYOcs9O+eGqe8C51hCGsYO30tYZGPU3c/qiiN89II8b8jWDApITy7LG+CcfHoYSuGK PG1A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@javigon-com.20150623.gappssmtp.com header.s=20150623 header.b=iJQZBi9W; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id y5-v6si4878036plr.350.2018.03.02.08.14.08; Fri, 02 Mar 2018 08:14:24 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@javigon-com.20150623.gappssmtp.com header.s=20150623 header.b=iJQZBi9W; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1427642AbeCBP1M (ORCPT + 99 others); Fri, 2 Mar 2018 10:27:12 -0500 Received: from mail-wm0-f65.google.com ([74.125.82.65]:53221 "EHLO mail-wm0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1423352AbeCBPV6 (ORCPT ); Fri, 2 Mar 2018 10:21:58 -0500 Received: by mail-wm0-f65.google.com with SMTP id t3so3816972wmc.2 for ; Fri, 02 Mar 2018 07:21:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=javigon-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=tifpS9l54knkRd5TzPCoHa7opVD0T4Fo1z7t3coxLY4=; b=iJQZBi9Wc3zrQXoDQdZJYffW7QU+ECkblzHqvkn3xck/HHLJxZL34LN9mi6QXQL1gy IAifxbsiJ2OU7iu/4HG+PZzd0qL3HKEnYVXYPWpm85PKkT6K44pcwzfCzHv3aS9dt+z0 V12F1bKMhugRH1c32q3Exyz8T/PG2Pu9ypDmow5nIqEWy3A4kPAwgvhnuTLZXph8B2Pi GoXwPjieiwCmFGhC9CsMV0Nb7JfH00v382PdMeiZ85G5f4Xbnz4kToxVp62qLSG3h1FU 1ut9p74n1fpXXLFesniQtvLWjBBMSdnUrjawBpiexOvegiWVH4OnXXAmx/m2hzH/ZuFH qENw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=tifpS9l54knkRd5TzPCoHa7opVD0T4Fo1z7t3coxLY4=; b=nuq/Q1Eqhcj2ZSJfSlQO33uLiY1RZqu4EG3nKxaj6MD7JOefAqJJTBpAkmj+SG3sUN 6MitsbqNs8RbF9Y+WZY7uJtdTbtRjHvZHwLx9zmdg5G0NBQB/5O1NOwGRQ8l1CZg7BR8 ZcXczm2QRYDCvqBtLTjM8BCp1Oz6VJa7mkAOZ3lC2dMDnfQzhyXcXS47EQ841aNrLiAl MQx/D+tQIdfSbEi63qV/DO0kuMtXiXtbQ+QaxtB3SyEO3iOebxJwIAdhUlryFnyN0xWc me4AGSVYsasEaEbErqCQryKE3gI8cDDe4NElXiHrYrLIthhgru+DQ/8mq+KIX3fUhVpO L3ag== X-Gm-Message-State: APf1xPCiG3a8vBcgUrrMiz+6kT110978o8pc9Q1bwBDxhz8ubhiZ1YV+ ryNb+Sp1u+LzlE3HxXZ1zLJkDA== X-Received: by 10.80.163.7 with SMTP id 7mr7693501edn.258.1520004117027; Fri, 02 Mar 2018 07:21:57 -0800 (PST) Received: from uHalley.cnexlabs.com (6164211-cl69.boa.fiberby.dk. [193.106.164.211]) by smtp.gmail.com with ESMTPSA id o93sm5545893edb.18.2018.03.02.07.21.56 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Fri, 02 Mar 2018 07:21:56 -0800 (PST) From: "=?UTF-8?q?Javier=20Gonz=C3=A1lez?=" X-Google-Original-From: =?UTF-8?q?Javier=20Gonz=C3=A1lez?= To: mb@lightnvm.io Cc: linux-block@vger.kernel.org, linux-kernel@vger.kernel.org, =?UTF-8?q?Javier=20Gonz=C3=A1lez?= Subject: [PATCH 02/12] lightnvm: add minor version to generic geometry Date: Fri, 2 Mar 2018 16:21:10 +0100 Message-Id: <1520004080-27760-3-git-send-email-javier@cnexlabs.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1520004080-27760-1-git-send-email-javier@cnexlabs.com> References: <1520004080-27760-1-git-send-email-javier@cnexlabs.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Separate the version between major and minor on the generic geometry and represent it through sysfs in the 2.0 path. The 1.2 path only shows the major version to preserve the existing user space interface. Signed-off-by: Javier González --- drivers/lightnvm/core.c | 4 ++-- drivers/nvme/host/lightnvm.c | 25 ++++++++++++++++++++----- include/linux/lightnvm.h | 3 ++- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/drivers/lightnvm/core.c b/drivers/lightnvm/core.c index 9a417d9cdf0c..c4f72fbad2bf 100644 --- a/drivers/lightnvm/core.c +++ b/drivers/lightnvm/core.c @@ -890,8 +890,8 @@ static int nvm_init(struct nvm_dev *dev) goto err; } - pr_debug("nvm: ver:%u nvm_vendor:%x\n", - geo->ver_id, + pr_debug("nvm: ver:%u.%u nvm_vendor:%x\n", + geo->major_ver_id, geo->minor_ver_id, geo->vmnt); ret = nvm_core_init(dev); diff --git a/drivers/nvme/host/lightnvm.c b/drivers/nvme/host/lightnvm.c index 29c8f44eb25b..de4105544956 100644 --- a/drivers/nvme/host/lightnvm.c +++ b/drivers/nvme/host/lightnvm.c @@ -295,7 +295,9 @@ static int nvme_nvm_setup_12(struct nvme_nvm_id12 *id, return -EINVAL; } - geo->ver_id = id->ver_id; + /* 1.2 spec. only reports a single version id - unfold */ + geo->major_ver_id = id->ver_id; + geo->minor_ver_id = 2; geo->nr_chnls = src->num_ch; geo->nr_luns = src->num_lun; @@ -379,7 +381,14 @@ static void nvme_nvm_set_addr_20(struct nvm_addrf *dst, static int nvme_nvm_setup_20(struct nvme_nvm_id20 *id, struct nvm_geo *geo) { - geo->ver_id = id->mjr; + geo->major_ver_id = id->mjr; + geo->minor_ver_id = id->mnr; + + if (!(geo->major_ver_id == 2 && geo->minor_ver_id == 0)) { + pr_err("nvm: OCSSD version not supported (v%d.%d)\n", + geo->major_ver_id, geo->minor_ver_id); + return -EINVAL; + } geo->nr_chnls = le16_to_cpu(id->num_grp); geo->nr_luns = le16_to_cpu(id->num_pu); @@ -914,7 +923,13 @@ static ssize_t nvm_dev_attr_show(struct device *dev, attr = &dattr->attr; if (strcmp(attr->name, "version") == 0) { - return scnprintf(page, PAGE_SIZE, "%u\n", geo->ver_id); + if (geo->major_ver_id == 1) + return scnprintf(page, PAGE_SIZE, "%u\n", + geo->major_ver_id); + else + return scnprintf(page, PAGE_SIZE, "%u.%u\n", + geo->major_ver_id, + geo->minor_ver_id); } else if (strcmp(attr->name, "capabilities") == 0) { return scnprintf(page, PAGE_SIZE, "%u\n", geo->cap); } else if (strcmp(attr->name, "read_typ") == 0) { @@ -1167,7 +1182,7 @@ int nvme_nvm_register_sysfs(struct nvme_ns *ns) if (!ndev) return -EINVAL; - switch (geo->ver_id) { + switch (geo->major_ver_id) { case 1: return sysfs_create_group(&disk_to_dev(ns->disk)->kobj, &nvm_dev_attr_group_12); @@ -1184,7 +1199,7 @@ void nvme_nvm_unregister_sysfs(struct nvme_ns *ns) struct nvm_dev *ndev = ns->ndev; struct nvm_geo *geo = &ndev->geo; - switch (geo->ver_id) { + switch (geo->major_ver_id) { case 1: sysfs_remove_group(&disk_to_dev(ns->disk)->kobj, &nvm_dev_attr_group_12); diff --git a/include/linux/lightnvm.h b/include/linux/lightnvm.h index 6e650563b379..7ed8b92d6744 100644 --- a/include/linux/lightnvm.h +++ b/include/linux/lightnvm.h @@ -263,7 +263,8 @@ enum { /* Instance geometry */ struct nvm_geo { /* device reported version */ - u8 ver_id; + u8 major_ver_id; + u8 minor_ver_id; /* instance specific geometry */ int nr_chnls; -- 2.7.4