Received: by 2002:a05:6a10:22f:0:0:0:0 with SMTP id 15csp1692974pxk; Fri, 4 Sep 2020 16:58:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzfjXgiVnFXH1z0vLnD8hgVxI809WNkms0XejkSUwPQS2RWpqufjXJ/3lXoxpTqyKOcJKWq X-Received: by 2002:a05:6402:110e:: with SMTP id u14mr11314795edv.297.1599263921261; Fri, 04 Sep 2020 16:58:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1599263921; cv=none; d=google.com; s=arc-20160816; b=Q6U9oO1MrdRRrvcdw/dhgxmbsPM2gj9vueLFGxXaytQl4m1DQ469gJooodXgzY5Rht mP9AYbNaTAwxTOKOlxNl6zMUW6GF6b0BTdsIBciR0qEyhubrIV5w38G8ZZOPejBlips8 r+anIrwHpUyrlCSv3hoGqN0joTucAvoxqM2GV6TUDv2cHE6pDP8JcdvK3EkPoPqLppKM bhqKdfoDm51V7lgVpzJ5C1qqoUiOlgchl/xHLjf95Q2/g9DbVV1wB+YqHMaBQOZ3lg12 h3wyA3sNKF2VzVH7Qgi75OBFetoAjAgUl3kQHeK2RCJTkXmYQwbkaBC9i6W5WuMORHhs 1OYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from:ironport-sdr:ironport-sdr; bh=Ua9uu8faTbbtC0Qa9Wta+eDbg63tELi4RA5Qc2F4rcM=; b=SyPJzIUctbepJ2O/+cUpxG64Cnw/IyHV8d8VtkDjjiWofISD5NSBq5hfymorzGKFYu 75Ay+zQoZJD+d0XIACrccF/RvizlG99doxmXXtl/B83BJH+H40kbja8gZJXgTq9nxeOs +9UB4hn2fQZ9CBOdSg/+cgFkr9pVEp1SMzoYU5s/zAgizqi+utzQklsmLQ7/DRHh7ot3 Y1iiWgUTY4oaNO8EfpPiF/Q72GEIhaCYH+MdBxyEPnCIHYldyF0QBDn8oAf7URljuK6Q 137e8xI1CGvWxLLddyiPZ+mWCWRiAi8ZqKHgWsn6L7Tknf2c0lJJsDbtjoZiuWQgtysJ 2TUA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id g17si4804826eji.729.2020.09.04.16.58.18; Fri, 04 Sep 2020 16:58:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728367AbgIDXyF (ORCPT + 99 others); Fri, 4 Sep 2020 19:54:05 -0400 Received: from mga06.intel.com ([134.134.136.31]:64701 "EHLO mga06.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727800AbgIDXxR (ORCPT ); Fri, 4 Sep 2020 19:53:17 -0400 IronPort-SDR: wXZzE7G/Cfs3my7w763kKgrOWbnA0VjtAJYMHaT/36iIV6xW5xxf3EOsJAu+LI6rnWmQwNiijr 8ZDpATMneUMA== X-IronPort-AV: E=McAfee;i="6000,8403,9734"; a="219386190" X-IronPort-AV: E=Sophos;i="5.76,391,1592895600"; d="scan'208";a="219386190" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Sep 2020 16:53:15 -0700 IronPort-SDR: 7uAvyzgKfXtYLIKsTQnUbnhvYtRNTXkDlnIRQIqmSAufRqNMrgaSuZw3kV3pnSu4vTTExlNrS0 55/i2LEGnssw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.76,391,1592895600"; d="scan'208";a="284656204" Received: from rhweight-mobl2.amr.corp.intel.com (HELO rhweight-mobl2.ra.intel.com) ([10.251.151.80]) by fmsmga008.fm.intel.com with ESMTP; 04 Sep 2020 16:53:15 -0700 From: Russ Weight To: mdf@kernel.org, lee.jones@linaro.org, linux-fpga@vger.kernel.org, linux-kernel@vger.kernel.org Cc: trix@redhat.com, lgoncalv@redhat.com, yilun.xu@intel.com, hao.wu@intel.com, matthew.gerlach@intel.com, Russ Weight Subject: [PATCH v1 03/12] fpga: expose max10 flash update counts in sysfs Date: Fri, 4 Sep 2020 16:52:56 -0700 Message-Id: <20200904235305.6254-4-russell.h.weight@intel.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20200904235305.6254-1-russell.h.weight@intel.com> References: <20200904235305.6254-1-russell.h.weight@intel.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Extend the MAX10 BMC Security Engine driver to provide a handler to expose the flash update count for the FPGA user image. Signed-off-by: Russ Weight Reviewed-by: Wu Hao --- drivers/fpga/intel-m10-bmc-secure.c | 32 +++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/drivers/fpga/intel-m10-bmc-secure.c b/drivers/fpga/intel-m10-bmc-secure.c index 1f86bfb694b4..b824790e43aa 100644 --- a/drivers/fpga/intel-m10-bmc-secure.c +++ b/drivers/fpga/intel-m10-bmc-secure.c @@ -10,6 +10,7 @@ #include #include #include +#include #include struct m10bmc_sec { @@ -99,7 +100,38 @@ SYSFS_GET_REH(bmc, BMC_REH_ADDR) SYSFS_GET_REH(sr, SR_REH_ADDR) SYSFS_GET_REH(pr, PR_REH_ADDR) +#define FLASH_COUNT_SIZE 4096 +#define USER_FLASH_COUNT 0x17ffb000 + +static int get_qspi_flash_count(struct ifpga_sec_mgr *imgr) +{ + struct m10bmc_sec *sec = imgr->priv; + unsigned int stride = regmap_get_reg_stride(sec->m10bmc->regmap); + unsigned int cnt, num_bits = FLASH_COUNT_SIZE * 8; + u8 *flash_buf; + int ret; + + flash_buf = kmalloc(FLASH_COUNT_SIZE, GFP_KERNEL); + if (!flash_buf) + return -ENOMEM; + + ret = m10bmc_raw_bulk_read(sec->m10bmc, USER_FLASH_COUNT, flash_buf, + FLASH_COUNT_SIZE / stride); + if (ret) { + dev_err(sec->dev, "%s failed to read %d\n", __func__, ret); + goto exit_free; + } + + cnt = num_bits - bitmap_weight((unsigned long *)flash_buf, num_bits); + +exit_free: + kfree(flash_buf); + + return ret ? : cnt; +} + static const struct ifpga_sec_mgr_ops m10bmc_iops = { + .user_flash_count = get_qspi_flash_count, .bmc_root_entry_hash = get_bmc_root_entry_hash, .sr_root_entry_hash = get_sr_root_entry_hash, .pr_root_entry_hash = get_pr_root_entry_hash, -- 2.17.1