From patchwork Tue Jan 3 16:53:36 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fenghua Yu X-Patchwork-Id: 38519 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp4718255wrt; Tue, 3 Jan 2023 08:57:32 -0800 (PST) X-Google-Smtp-Source: AMrXdXvLnLv6fhs3bo5Ze0wsfi1n59lGLZipPBx6VFVAHFgHk07x46gK/8BfbCwYh1cBl5QRmDGg X-Received: by 2002:a17:906:711a:b0:801:d814:3c77 with SMTP id x26-20020a170906711a00b00801d8143c77mr44696718ejj.25.1672765052170; Tue, 03 Jan 2023 08:57:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672765052; cv=none; d=google.com; s=arc-20160816; b=QDGimumcl4otEDhSifmO2tyb8dlP+F/A9Dg2hXVlsZCei0hdXRExK2K8w7oMsJkSmX J5aoSnAoHfm+Ha1e3ndUSK6RDjRm01MVodXRc+vLLgo0PT9w7V90yc+MA6C0iDiGV9i0 qOQbu2qAUCB37jPQkbjRmqnHp5FzBfr8hlxISdTLcxs4zuCEn8dUPLyZcYVF3aij+jJT 4RsIqa/0tcXCNTvYFCad46K5ndxeWq2alKYCi+cGoWrWVwdY+kz2dKUWVHdVKdlbGGXT 2FRvnLzexWSPSmwtqu1Rw+oX/YzFnAYeGCTFI5GkaWkUVpMxE85aRLK5XjgY8QxBwvqb YXfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=tF0Z4qBdmsk9fv0QVItSRlhCNdd5L6t5UDzsHehbmso=; b=C1xuSU9xFP5NYGWGStTTyq8R9P6T0I+oYFRWYKcBRlpub21xiT2OlcCGd/SYiMmI9W MRgc2hso6e8bQbQAR4JGsPOV5en8q4R8y7mpBs/CXhuqEQ9IxLwSYYQ02fCVwMYj8nvv l6EyhwUOypoIV8fvYO4kF94SHhjnUnOhKOso8ZVLLWc9Lhw6ThwH3mQWKnlF4XuiSX+t AuCoPP9sRy6uSsAcb9Zp6+1F25UoDZe28lOljRaXhBIa064JlbASLNx5sDIYlFJ17K7+ 68CLOb+Cn7Puz4ZGEl3Gj10EupEL3C2by0+KNkwdi4i4iMBoJ01nuiUWIhAJGUoFHahv 87Hg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=mp+Fu9p4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h8-20020a056402280800b004678fd66f41si34582140ede.71.2023.01.03.08.57.08; Tue, 03 Jan 2023 08:57:32 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=mp+Fu9p4; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233544AbjACQyH (ORCPT + 99 others); Tue, 3 Jan 2023 11:54:07 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34356 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233837AbjACQxx (ORCPT ); Tue, 3 Jan 2023 11:53:53 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C2ADB101D5; Tue, 3 Jan 2023 08:53:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1672764832; x=1704300832; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=XBn7aa7KKmD9c2/FhVefs5yUCJ80XX0hDWmahUMXXac=; b=mp+Fu9p4paVRZ1bzmKpJePDc8rYzjH736eZC0/siKLjMQzd8uO4SHV4g R3pQU8vJ38wgJzAUClZYA0/LikxxsLZl8S0MDrtc/aIwi4yPCsRR8UzYB oF67m8th9TooGlNyZJuFQox8gSUaEvnKZAETnirB/4oiJMAOrmgar+KGt Poi9HeG6IaR2nCnjk8fkIOEaheiBc/TA+exH0JlKUgnCq3eQo1JmmYmQI Lt99x0cWdfjaS02SOTWJq+x+LPSiYthOFKLnbISY2UadLMpRnLfHYpUfp cnuUGC8tB4p5zt678APZ9dXEjI1/6y4aUv4j5PgsNgxlc7w/HQoJ2lra+ g==; X-IronPort-AV: E=McAfee;i="6500,9779,10579"; a="322932868" X-IronPort-AV: E=Sophos;i="5.96,297,1665471600"; d="scan'208";a="322932868" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jan 2023 08:53:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10579"; a="828896811" X-IronPort-AV: E=Sophos;i="5.96,297,1665471600"; d="scan'208";a="828896811" Received: from fyu1.sc.intel.com ([172.25.103.126]) by orsmga005.jf.intel.com with ESMTP; 03 Jan 2023 08:53:51 -0800 From: Fenghua Yu To: "Vinod Koul" , "Dave Jiang" Cc: "Fenghua Yu" , dmaengine@vger.kernel.org, "linux-kernel" Subject: [PATCH 1/2] dmaengine: idxd: reformat swerror output to standard Linux bitmap output Date: Tue, 3 Jan 2023 08:53:36 -0800 Message-Id: <20230103165337.1570238-2-fenghua.yu@intel.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230103165337.1570238-1-fenghua.yu@intel.com> References: <20230103165337.1570238-1-fenghua.yu@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754021287076628396?= X-GMAIL-MSGID: =?utf-8?q?1754021287076628396?= From: Dave Jiang SWERROR register is 4 64bit wide registers. Currently the sysfs attribute just outputs 4 64bit hex integers. Covert to output with %*pb format specifier. Signed-off-by: Dave Jiang Co-developed-by: Fenghua Yu Signed-off-by: Fenghua Yu --- drivers/dma/idxd/idxd.h | 1 + drivers/dma/idxd/init.c | 2 +- drivers/dma/idxd/sysfs.c | 10 ++++------ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h index f92f8ec83722..e449d905bea3 100644 --- a/drivers/dma/idxd/idxd.h +++ b/drivers/dma/idxd/idxd.h @@ -654,6 +654,7 @@ int idxd_register_driver(void); void idxd_unregister_driver(void); void idxd_wqs_quiesce(struct idxd_device *idxd); bool idxd_queue_int_handle_resubmit(struct idxd_desc *desc); +void multi_u64_to_bmap(unsigned long *bmap, u64 *val, int count); /* device interrupt control */ irqreturn_t idxd_misc_thread(int vec, void *data); diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index 564c025b9b7e..996bd3e4e50f 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -425,7 +425,7 @@ static void idxd_read_table_offsets(struct idxd_device *idxd) dev_dbg(dev, "IDXD Perfmon Offset: %#x\n", idxd->perfmon_offset); } -static void multi_u64_to_bmap(unsigned long *bmap, u64 *val, int count) +void multi_u64_to_bmap(unsigned long *bmap, u64 *val, int count) { int i, j, nr; diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c index c772172d4ceb..dae28509e6ed 100644 --- a/drivers/dma/idxd/sysfs.c +++ b/drivers/dma/idxd/sysfs.c @@ -1506,15 +1506,13 @@ static ssize_t errors_show(struct device *dev, struct device_attribute *attr, char *buf) { struct idxd_device *idxd = confdev_to_idxd(dev); - int i, out = 0; + DECLARE_BITMAP(swerr_bmap, 256); + bitmap_zero(swerr_bmap, 256); spin_lock(&idxd->dev_lock); - for (i = 0; i < 4; i++) - out += sysfs_emit_at(buf, out, "%#018llx ", idxd->sw_err.bits[i]); + multi_u64_to_bmap(swerr_bmap, &idxd->sw_err.bits[0], 4); spin_unlock(&idxd->dev_lock); - out--; - out += sysfs_emit_at(buf, out, "\n"); - return out; + return sysfs_emit(buf, "%*pb\n", 256, swerr_bmap); } static DEVICE_ATTR_RO(errors); From patchwork Tue Jan 3 16:53:37 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Fenghua Yu X-Patchwork-Id: 38520 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4e01:0:0:0:0:0 with SMTP id p1csp4718287wrt; Tue, 3 Jan 2023 08:57:37 -0800 (PST) X-Google-Smtp-Source: AMrXdXuBkwPUSNI14PD2zAUsiEQCERo7b92PDip0oF8+Cg7LfTlq0WGa2L9PCs3omPXOABKs8gJZ X-Received: by 2002:a17:906:3095:b0:809:c1f4:ea09 with SMTP id 21-20020a170906309500b00809c1f4ea09mr35079763ejv.69.1672765057202; Tue, 03 Jan 2023 08:57:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1672765057; cv=none; d=google.com; s=arc-20160816; b=VqLK3VUddeW4oX+kIIsCptyvxrrcnC1ktUSkqIQfQdCwNnfm/j45sRL78fuocdL4nz kp2rwGuafhTeKiyCAgfs/LKlRzvt3Fr3Ra0zTZ+NCmBQAFMYO+fGbxThzbeSFZQ3V4Wy dtyxBQz22CC9xwmnDihAcgBhc/PSlZhbqWz4UOnhq0ijnYyhXwQbA2IC6Di10H8e21R1 JYWv9lgZ5RgYwMFzr9lTEzSEuna/M09VkuPfEqKzklP8cTqlQ7xURQy0ckRmZ9QYKyV+ LlEzQOl5FchRCSS92mbnjrLyj3qE8D3lS6RC1DsGdXBJttZGIW2XvcGlY7F+eluEw1bw rhOw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=ocjbIeWi7Ed9Yhw/HNTiUbpVNULRDXl/EdN9HNN+d+I=; b=UJHtgNh+fQ0Il69UbS5MdJEF746mcM7KdtcEagYfrsKd8IbsWNkhiVxOha/fLBQeqP agMD//IsIYxZFsD1D4ajZZWBpATHJ7YIgcPLRZ6aSuw0pTW5ksRtBLKNL8zD/oruO2uU dedQ8Txya38JQooLKblJr81zVitN7nr51W8Eq1EyTe2v7abFrwIcW/zY3+1ESz8Z614s VJdj3QG4fFfU41Ka1b2HlUtKdN+PTJPrX4QqBev2yEnfhKRQa2QbpCQlPSf+9o0EGO1h hX0Y9tb8t/S93DtbhwYF/YArDoYL5EVZLLoE6dKYZM5SBN/mbjh/QbzGAmXY7Z/NOfSQ QxYg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=l6f6UfTa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id wv1-20020a170907080100b007c0c5cb19f6si25912793ejb.684.2023.01.03.08.57.14; Tue, 03 Jan 2023 08:57:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=l6f6UfTa; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233694AbjACQyK (ORCPT + 99 others); Tue, 3 Jan 2023 11:54:10 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34132 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233545AbjACQxy (ORCPT ); Tue, 3 Jan 2023 11:53:54 -0500 Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B1E9A1A4; Tue, 3 Jan 2023 08:53:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1672764833; x=1704300833; h=from:to:cc:subject:date:message-id:in-reply-to: references:mime-version:content-transfer-encoding; bh=ViB6/yD80AcwdRZIzZyoeNUKUtdaAjrqYFetGoEMJ6U=; b=l6f6UfTajmbWF5CYG3D9CUQn991MwuwW3yk3G4xGwBPYUxDFnrGEnUTF /hvE2RRVkSk7UKfQhThFlgfM4UyksEb09RlwaeW+4JDDw5PQxMTmCzPHB mWlk8F7Mfxmu0q6ZS92dkdm81DWUeuVN/Lafub86B3xrunTFDCrYZxvI1 p/q/xgDgt7aMFs90AqcceXRwB2CZ0C2Rj+wyw2R41oUljhqvesZ7dQmzb +tjxi9jhCtBnJrqWiA+xX3faxBcnPhNpNcuDw8zOv6qGH7fvTda6rHE4o pT1vZH+VxOj0C3GFO4uIqLCH1eINDFFdbvXfbW7oWrPDO2fkiTifxFFJ/ A==; X-IronPort-AV: E=McAfee;i="6500,9779,10579"; a="322932870" X-IronPort-AV: E=Sophos;i="5.96,297,1665471600"; d="scan'208";a="322932870" Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 03 Jan 2023 08:53:52 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10579"; a="828896816" X-IronPort-AV: E=Sophos;i="5.96,297,1665471600"; d="scan'208";a="828896816" Received: from fyu1.sc.intel.com ([172.25.103.126]) by orsmga005.jf.intel.com with ESMTP; 03 Jan 2023 08:53:51 -0800 From: Fenghua Yu To: "Vinod Koul" , "Dave Jiang" Cc: "Fenghua Yu" , dmaengine@vger.kernel.org, "linux-kernel" Subject: [PATCH 2/2] dmaengine: idxd: expose IAA CAP register via sysfs knob Date: Tue, 3 Jan 2023 08:53:37 -0800 Message-Id: <20230103165337.1570238-3-fenghua.yu@intel.com> X-Mailer: git-send-email 2.32.0 In-Reply-To: <20230103165337.1570238-1-fenghua.yu@intel.com> References: <20230103165337.1570238-1-fenghua.yu@intel.com> MIME-Version: 1.0 X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1754021292438995284?= X-GMAIL-MSGID: =?utf-8?q?1754021292438995284?= From: Dave Jiang Add IAA (IAX) capability mask sysfs attribute to expose to applications. The mask provides application knowledge of what capabilities this IAA device supports. This mask is available for IAA 2.0 device or later. Signed-off-by: Dave Jiang Co-developed-by: Fenghua Yu Signed-off-by: Fenghua Yu --- This patch is applied cleanly on top of DSA 2.0 Event Log and Completion Record Faulting series: https://lore.kernel.org/dmaengine/20230103163505.1569356-1-fenghua.yu@intel.com/T/#m13ba6167994f3add6446d2d7e242ecb637c54426 .../ABI/stable/sysfs-driver-dma-idxd | 8 +++++++ drivers/dma/idxd/idxd.h | 1 + drivers/dma/idxd/init.c | 4 ++++ drivers/dma/idxd/registers.h | 21 ++++++++++++++++ drivers/dma/idxd/sysfs.c | 24 +++++++++++++++++++ 5 files changed, 58 insertions(+) diff --git a/Documentation/ABI/stable/sysfs-driver-dma-idxd b/Documentation/ABI/stable/sysfs-driver-dma-idxd index 603869112887..796a5dccdf04 100644 --- a/Documentation/ABI/stable/sysfs-driver-dma-idxd +++ b/Documentation/ABI/stable/sysfs-driver-dma-idxd @@ -144,6 +144,14 @@ Description: The event log size to be configured. Default is 64 entries and occupies 4k size if the evl entry is 64 bytes. It's visible only on platforms that support the capability. +What: /sys/bus/dsa/devices/dsa/iaa_cap +Date: Sept 14, 2022 +KernelVersion: 6.0.0 +Contact: dmaengine@vger.kernel.org +Description: IAA (IAX) capability mask. Exported to user space for application + consumption. This attribute should only be visible on IAA devices + that are version 2 or later. + What: /sys/bus/dsa/devices/wq./block_on_fault Date: Oct 27, 2020 KernelVersion: 5.11.0 diff --git a/drivers/dma/idxd/idxd.h b/drivers/dma/idxd/idxd.h index e449d905bea3..3a20e4933d07 100644 --- a/drivers/dma/idxd/idxd.h +++ b/drivers/dma/idxd/idxd.h @@ -245,6 +245,7 @@ struct idxd_hw { union engine_cap_reg engine_cap; struct opcap opcap; u32 cmd_cap; + union iaa_cap_reg iaa_cap; }; enum idxd_device_state { diff --git a/drivers/dma/idxd/init.c b/drivers/dma/idxd/init.c index 996bd3e4e50f..6c1d1682fce9 100644 --- a/drivers/dma/idxd/init.c +++ b/drivers/dma/idxd/init.c @@ -497,6 +497,10 @@ static void idxd_read_caps(struct idxd_device *idxd) dev_dbg(dev, "opcap[%d]: %#llx\n", i, idxd->hw.opcap.bits[i]); } multi_u64_to_bmap(idxd->opcap_bmap, &idxd->hw.opcap.bits[0], 4); + + /* read iaa cap */ + if (idxd->data->type == IDXD_TYPE_IAX && idxd->hw.version >= DEVICE_VERSION_2) + idxd->hw.iaa_cap.bits = ioread64(idxd->reg_base + IDXD_IAACAP_OFFSET); } static struct idxd_device *idxd_alloc(struct pci_dev *pdev, struct idxd_driver_data *data) diff --git a/drivers/dma/idxd/registers.h b/drivers/dma/idxd/registers.h index 6155dc7d2152..6de810d2d2d8 100644 --- a/drivers/dma/idxd/registers.h +++ b/drivers/dma/idxd/registers.h @@ -302,6 +302,27 @@ union evlcfg_reg { #define IDXD_EVL_SIZE_MIN 0x0040 #define IDXD_EVL_SIZE_MAX 0xffff +union iaa_cap_reg { + struct { + u64 dec_aecs_format_ver:1; + u64 drop_init_bits:1; + u64 chaining:1; + u64 force_array_output_mod:1; + u64 load_part_aecs:1; + u64 comp_early_abort:1; + u64 nested_comp:1; + u64 diction_comp:1; + u64 header_gen:1; + u64 crypto_gcm:1; + u64 crypto_cfb:1; + u64 crypto_xts:1; + u64 rsvd:52; + }; + u64 bits; +} __packed; + +#define IDXD_IAACAP_OFFSET 0x180 + union msix_perm { struct { u32 rsvd:2; diff --git a/drivers/dma/idxd/sysfs.c b/drivers/dma/idxd/sysfs.c index dae28509e6ed..80a81d441252 100644 --- a/drivers/dma/idxd/sysfs.c +++ b/drivers/dma/idxd/sysfs.c @@ -1656,6 +1656,18 @@ static ssize_t event_log_size_store(struct device *dev, } static DEVICE_ATTR_RW(event_log_size); +static ssize_t iaa_cap_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + struct idxd_device *idxd = confdev_to_idxd(dev); + + if (idxd->hw.version < DEVICE_VERSION_2) + return -EOPNOTSUPP; + + return sysfs_emit(buf, "%#llx\n", idxd->hw.iaa_cap.bits); +} +static DEVICE_ATTR_RO(iaa_cap); + static bool idxd_device_attr_max_batch_size_invisible(struct attribute *attr, struct idxd_device *idxd) { @@ -1685,6 +1697,14 @@ static bool idxd_device_attr_event_log_size_invisible(struct attribute *attr, !idxd->hw.gen_cap.evl_support); } +static bool idxd_device_attr_iaa_cap_invisible(struct attribute *attr, + struct idxd_device *idxd) +{ + return attr == &dev_attr_iaa_cap.attr && + (idxd->data->type != IDXD_TYPE_IAX || + idxd->hw.version < DEVICE_VERSION_2); +} + static umode_t idxd_device_attr_visible(struct kobject *kobj, struct attribute *attr, int n) { @@ -1700,6 +1720,9 @@ static umode_t idxd_device_attr_visible(struct kobject *kobj, if (idxd_device_attr_event_log_size_invisible(attr, idxd)) return 0; + if (idxd_device_attr_iaa_cap_invisible(attr, idxd)) + return 0; + return attr->mode; } @@ -1726,6 +1749,7 @@ static struct attribute *idxd_device_attributes[] = { &dev_attr_cdev_major.attr, &dev_attr_cmd_status.attr, &dev_attr_event_log_size.attr, + &dev_attr_iaa_cap.attr, NULL, };