Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp6570838rwl; Wed, 22 Mar 2023 12:19:18 -0700 (PDT) X-Google-Smtp-Source: AK7set8+5pkzAw1mYlDRT2l1Ys+KPFvdAFFVlKlWVioYw6Lvakk4bPVxyj8WbRU7fOpLvIOIA/BS X-Received: by 2002:a05:6a20:c10a:b0:db:5ff5:8f21 with SMTP id bh10-20020a056a20c10a00b000db5ff58f21mr624292pzb.15.1679512758614; Wed, 22 Mar 2023 12:19:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1679512758; cv=none; d=google.com; s=arc-20160816; b=sBt8LqrOjpUM4AgOgXf0IXXyEKCUlUMrCmFT12t8GSI4ftz0MA/XlDODmJDbSXN/YC rLN9N3UX8IEPNkCwj4z89BfUXIMCOsdQBPF8QVEkhBf99JPax75MB4LBICDVrQeXzSII /LWt37xYHxnrq8tYIuRUvJZlv45f8G3yffs28jcUjnaCGHIy6PA6mSgzMW1jWwOQlGkA XKM8mzi5qcpbmHwozqiQ3Gn2hStBWEPrkhZek4WrUBdZXiHUlkgvfmpARDlkggtXsZ6h CtW9gVhjhw09o8XdS4EZr7BjDfY+Gkyc0SuvEuHNA6jKvLpStB/2J2b5DY+efzQVnnGB hxvA== 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 :message-id:date:subject:cc:to:from:dkim-signature; bh=1ERw1mXy9hOOmwPagani3egRpzRLvSxAGC6TgRPqYzI=; b=YXdtYMT8cgNdr4t8xo3uUNZjfCwvhiMg37IwyYzJbX0earSbghOPPg+ddpu0Az+N2x juU0jR/vojqMnt3/rluGsXunuqy3yIzN+hVL28T2S0RfO0IF1Prb9zDyTu9QvwGOf5JD ls0awnLVlMenVI+XOmW38jD2jJ20FDiB7P72C7HD6hVoGnnlSBQFjvxgFnS3V20uEtgF ZEtphWw3zj7Y4074ws+X/abQxVR9FB0d9O08YSid4D/qrZCyIy/TzoyfR3HRgxUEe/3V Un7tnyGXda/jEqjdpqVmLSNAvd9MDptoqSuPVCxM3JqxuGQSZS6wsORETRg5d2hvixEx I/+w== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@intel.com header.s=Intel header.b=d67NLz1K; 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 Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id r10-20020a638f4a000000b0050f57e80cdbsi12571828pgn.283.2023.03.22.12.19.00; Wed, 22 Mar 2023 12:19:18 -0700 (PDT) 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=d67NLz1K; 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 S229999AbjCVTNy (ORCPT + 99 others); Wed, 22 Mar 2023 15:13:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34946 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229529AbjCVTNx (ORCPT ); Wed, 22 Mar 2023 15:13:53 -0400 Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 37D2C4AFF8; Wed, 22 Mar 2023 12:13:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1679512431; x=1711048431; h=from:to:cc:subject:date:message-id:mime-version: content-transfer-encoding; bh=ptLcWk9srDFCxKrQ2KuZ2G9eHwppFRvlMA0y7UxLp98=; b=d67NLz1KfVVsT4bDqhm9aO6WAzMfZn3W49Q6h0dzRSPDt3GpGy/6YDx+ 6mCJKA/lwBzyzGH5RWhqTAMfA6gQD7TzXO3dvbx54gwqoIzT1Tnni7ofF x6QdLtZXfcCuG1v35vXc/oY8n0oo74auDub3pXMg8M369+k6ffe+CuvIK J39EdMo61u5rZRs+dYE5szotfMqZQWIIeu5MCo5++8HoJ7/+l9MOAPpsn 5d4Ns2mfiQzs8VSGyWwuHeO7/q/Sa8wXdBGQR03DKSTdftUhycF9Uas9/ 67+9CVUxBSRx47dYB3V1B8Khfahwq712TkS0Hx/Ls1WT4kH00OAqiYC9K g==; X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="401881514" X-IronPort-AV: E=Sophos;i="5.98,282,1673942400"; d="scan'208";a="401881514" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 12:13:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10657"; a="682025126" X-IronPort-AV: E=Sophos;i="5.98,282,1673942400"; d="scan'208";a="682025126" Received: from rfbarbee-mobl.amr.corp.intel.com (HELO skuppusw-desk1.amr.corp.intel.com) ([10.251.1.54]) by orsmga002-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Mar 2023 12:13:50 -0700 From: Kuppuswamy Sathyanarayanan To: Rafael J Wysocki Cc: Len Brown , linux-acpi@vger.kernel.org, linux-kernel@vger.kernel.org, Kuppuswamy Sathyanarayanan Subject: [PATCH v3] ACPI: sysfs: Enable ACPI sysfs support for CCEL records Date: Wed, 22 Mar 2023 12:13:13 -0700 Message-Id: <20230322191313.22804-1-sathyanarayanan.kuppuswamy@linux.intel.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-2.4 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE,SPF_NONE, URIBL_BLOCKED autolearn=unavailable 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 The Confidential Computing Event Log (CCEL) table provides the address and length of the CCEL records area in UEFI reserved memory. To allow user space access to these records, expose a sysfs interface similar to the BERT table. More details about the CCEL table can be found in the ACPI specification r6.5 [1], sec 5.2.34. Link: https://uefi.org/specs/ACPI/6.5/05_ACPI_Software_Programming_Model.html#cc-event-log-acpi-table # [1] Co-developed-by: Haibo Xu Signed-off-by: Haibo Xu Signed-off-by: Kuppuswamy Sathyanarayanan --- Changes since v2: * Fixed the commit log as per review suggestion. Changes since v1: * Removed unnecessary parenthesis as per Rafael's suggestion. drivers/acpi/sysfs.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c index 7f4ff56c9d42..687524b50085 100644 --- a/drivers/acpi/sysfs.c +++ b/drivers/acpi/sysfs.c @@ -458,11 +458,28 @@ static int acpi_bert_data_init(void *th, struct acpi_data_attr *data_attr) return sysfs_create_bin_file(tables_data_kobj, &data_attr->attr); } +static int acpi_ccel_data_init(void *th, struct acpi_data_attr *data_attr) +{ + struct acpi_table_ccel *ccel = th; + + if (ccel->header.length < sizeof(struct acpi_table_ccel) || + !ccel->log_area_start_address || !ccel->log_area_minimum_length) { + kfree(data_attr); + return -EINVAL; + } + data_attr->addr = ccel->log_area_start_address; + data_attr->attr.size = ccel->log_area_minimum_length; + data_attr->attr.attr.name = "CCEL"; + + return sysfs_create_bin_file(tables_data_kobj, &data_attr->attr); +} + static struct acpi_data_obj { char *name; int (*fn)(void *, struct acpi_data_attr *); } acpi_data_objs[] = { { ACPI_SIG_BERT, acpi_bert_data_init }, + { ACPI_SIG_CCEL, acpi_ccel_data_init }, }; #define NUM_ACPI_DATA_OBJS ARRAY_SIZE(acpi_data_objs) -- 2.34.1