From patchwork Fri Sep 13 05:28:38 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ben Widawsky X-Patchwork-Id: 2881651 Return-Path: X-Original-To: patchwork-intel-gfx@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork1.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork1.web.kernel.org (Postfix) with ESMTP id 6F39E9F1E3 for ; Fri, 13 Sep 2013 05:36:48 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 91B8E2026F for ; Fri, 13 Sep 2013 05:36:47 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) by mail.kernel.org (Postfix) with ESMTP id ADF642026D for ; Fri, 13 Sep 2013 05:36:46 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AB6EEE665A for ; Thu, 12 Sep 2013 22:36:46 -0700 (PDT) X-Original-To: intel-gfx@lists.freedesktop.org Delivered-To: intel-gfx@lists.freedesktop.org Received: from mail.bwidawsk.net (bwidawsk.net [166.78.191.112]) by gabe.freedesktop.org (Postfix) with ESMTP id 39964E630B for ; Thu, 12 Sep 2013 22:29:09 -0700 (PDT) Received: by mail.bwidawsk.net (Postfix, from userid 5001) id C81F159D14; Thu, 12 Sep 2013 22:29:08 -0700 (PDT) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-5.1 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1 Received: from lundgren.intel.com (c-24-21-100-90.hsd1.or.comcast.net [24.21.100.90]) by mail.bwidawsk.net (Postfix) with ESMTPSA id A445859D10; Thu, 12 Sep 2013 22:28:54 -0700 (PDT) From: Ben Widawsky To: intel-gfx@lists.freedesktop.org Date: Thu, 12 Sep 2013 22:28:38 -0700 Message-Id: <1379050122-12774-13-git-send-email-benjamin.widawsky@intel.com> X-Mailer: git-send-email 1.8.4 In-Reply-To: <1379050122-12774-1-git-send-email-benjamin.widawsky@intel.com> References: <1379050122-12774-1-git-send-email-benjamin.widawsky@intel.com> Cc: bryan.j.bell@intel.com, Ben Widawsky , Ben Widawsky , vishnu.venkatesh@intel.com Subject: [Intel-gfx] [PATCH 12/16] intel_l3_parity: Hardware info argument X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+patchwork-intel-gfx=patchwork.kernel.org@lists.freedesktop.org X-Virus-Scanned: ClamAV using ClamSMTP Add a new command line argument to the tool which will spit out various parameters for the giving hardware. As a result of this, some new defines are added to help with the various info. Signed-off-by: Ben Widawsky --- tools/intel_l3_parity.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/tools/intel_l3_parity.c b/tools/intel_l3_parity.c index fa5adaa..5031fbd 100644 --- a/tools/intel_l3_parity.c +++ b/tools/intel_l3_parity.c @@ -38,9 +38,19 @@ #include "intel_gpu_tools.h" #include "drmtest.h" -#define NUM_BANKS 4 +static unsigned int devid; +/* L3 size is always a function of banks. The number of banks cannot be + * determined by number of slices however */ +#define MAX_BANKS 4 +#define NUM_BANKS \ + ((devid == PCI_CHIP_IVYBRIDGE_GT1 || devid == PCI_CHIP_IVYBRIDGE_M_GT1) ? 2 : 4) #define NUM_SUBBANKS 8 +#define BYTES_PER_BANK (128 << 10) +/* Each row addresses [up to] 4b. This multiplied by the number of subbanks + * will give the L3 size per bank. + * TODO: Row size is fixed on IVB, and variable on HSW.*/ #define MAX_ROW (1<<12) +#define L3_SIZE ((MAX_ROW * 4) * NUM_SUBBANKS * NUM_BANKS) #define NUM_REGS (NUM_BANKS * NUM_SUBBANKS) struct __attribute__ ((__packed__)) l3_log_register { @@ -50,7 +60,7 @@ struct __attribute__ ((__packed__)) l3_log_register { uint32_t row1_enable : 1; uint32_t rsvd1 : 4; uint32_t row1 : 11; -} l3log[NUM_BANKS][NUM_SUBBANKS]; +} l3log[MAX_BANKS][NUM_SUBBANKS]; static void dumpit(void) { @@ -118,6 +128,7 @@ static void usage(const char *name) " -s, --subbank=[subbank] The subbank to act upon (default 0)\n" " ACTIONS (only 1 may be specified at a time):\n" " -h, --help Display this help\n" + " -H, --hw-info Display the current L3 properties\n" " -l, --list List the current L3 logs\n" " -a, --clear-all Clear all disabled rows\n" " -e, --enable Enable row, bank, subbank (undo -d)\n" @@ -129,7 +140,6 @@ int main(int argc, char *argv[]) { const int device = drm_get_card(); char *path; - unsigned int devid; int row = 0, bank = 0, sbank = 0; int drm_fd, fd, ret; int action = '0'; @@ -163,13 +173,14 @@ int main(int argc, char *argv[]) { "clear-all", no_argument, 0, 'a' }, { "enable", no_argument, 0, 'e' }, { "disable", optional_argument, 0, 'd' }, + { "hw-info", no_argument, 0, 'H' }, { "row", required_argument, 0, 'r' }, { "bank", required_argument, 0, 'b' }, { "subbank", required_argument, 0, 's' }, {0, 0, 0, 0} }; - c = getopt_long(argc, argv, "hr:b:s:aled::", long_options, + c = getopt_long(argc, argv, "hHr:b:s:aled::", long_options, &option_index); if (c == -1) break; @@ -179,6 +190,11 @@ int main(int argc, char *argv[]) case 'h': usage(argv[0]); exit(EXIT_SUCCESS); + case 'H': + printf("Number of banks: %d\n", NUM_BANKS); + printf("Subbanks per bank: %d\n", NUM_SUBBANKS); + printf("L3 size: %dK\n", L3_SIZE >> 10); + exit(EXIT_SUCCESS); case 'r': row = atoi(optarg); if (row >= MAX_ROW)