From c9188e59fd27d208a975187da285a9b5938bb00d Mon Sep 17 00:00:00 2001
From: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>
Date: Thu, 16 Dec 2021 13:29:58 +0000
Subject: [PATCH] Add logs to functions in SMM gateway SP

Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>

Upstream-Status: Pending [Not submitted to upstream yet]
Signed-off-by: Gowtham Suresh Kumar <gowtham.sureshkumar@arm.com>


---
 .../backend/uefi_variable_store.c             | 29 +++++++++++++++++--
 .../provider/smm_variable_provider.c          |  7 +++--
 2 files changed, 32 insertions(+), 4 deletions(-)

diff --git a/components/service/smm_variable/backend/uefi_variable_store.c b/components/service/smm_variable/backend/uefi_variable_store.c
index ed50eaf9..0c371e94 100644
--- a/components/service/smm_variable/backend/uefi_variable_store.c
+++ b/components/service/smm_variable/backend/uefi_variable_store.c
@@ -11,6 +11,7 @@
 #include "uefi_variable_store.h"
 #include "variable_index_iterator.h"
 #include "variable_checker.h"
+#include <trace.h>
 
 /* Private functions */
 static void load_variable_index(
@@ -151,12 +152,15 @@ void uefi_variable_store_set_storage_limits(
 	size_t total_capacity,
 	size_t max_variable_size)
 {
+	EMSG("In func %s\n", __func__);
 	struct delegate_variable_store *delegate_store = select_delegate_store(
 		context,
 		attributes);
 
 	delegate_store->total_capacity = total_capacity;
 	delegate_store->max_variable_size = max_variable_size;
+	EMSG("In func %s total_capacity is %d\n", __func__, total_capacity);
+	EMSG("In func %s max_variable_size is %d\n", __func__, max_variable_size);
 }
 
 efi_status_t uefi_variable_store_set_variable(
@@ -265,6 +269,7 @@ efi_status_t uefi_variable_store_get_variable(
 	size_t max_data_len,
 	size_t *total_length)
 {
+	EMSG("In func %s\n", __func__);
 	efi_status_t status = check_name_terminator(var->Name, var->NameSize);
 	if (status != EFI_SUCCESS) return status;
 
@@ -299,6 +304,7 @@ efi_status_t uefi_variable_store_get_next_variable_name(
 	size_t max_name_len,
 	size_t *total_length)
 {
+	EMSG("In func %s\n", __func__);
 	efi_status_t status = check_name_terminator(cur->Name, cur->NameSize);
 	if (status != EFI_SUCCESS) return status;
 
@@ -329,6 +335,8 @@ efi_status_t uefi_variable_store_query_variable_info(
 	struct uefi_variable_store *context,
 	SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO *var_info)
 {
+
+	EMSG("In func %s\n", __func__);
 	struct delegate_variable_store *delegate_store = select_delegate_store(
 		context,
 		var_info->Attributes);
@@ -337,13 +345,15 @@ efi_status_t uefi_variable_store_query_variable_info(
 		context,
 		var_info->Attributes,
 		delegate_store->storage_backend);
-
+	EMSG("In func %s total_used is %d\n", __func__, total_used);
 	var_info->MaximumVariableSize = delegate_store->max_variable_size;
 	var_info->MaximumVariableStorageSize = delegate_store->total_capacity;
 	var_info->RemainingVariableStorageSize = (total_used < delegate_store->total_capacity) ?
 		delegate_store->total_capacity - total_used :
 		0;
-
+	EMSG("In func %s var_info->MaximumVariableSize is %d\n", __func__, var_info->MaximumVariableSize);
+	EMSG("In func %s var_info->MaximumVariableStorageSize is %d\n", __func__, var_info->MaximumVariableStorageSize);
+	EMSG("In func %s var_info->RemainingVariableStorageSize is %d\n", __func__, var_info->RemainingVariableStorageSize);
 	return EFI_SUCCESS;
 }
 
@@ -358,6 +368,7 @@ efi_status_t uefi_variable_store_set_var_check_property(
 	struct uefi_variable_store *context,
 	const SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY *property)
 {
+	EMSG("In func %s\n", __func__);
 	efi_status_t status = check_name_terminator(property->Name, property->NameSize);
 	if (status != EFI_SUCCESS) return status;
 
@@ -404,6 +415,7 @@ efi_status_t uefi_variable_store_get_var_check_property(
 	struct uefi_variable_store *context,
 	SMM_VARIABLE_COMMUNICATE_VAR_CHECK_VARIABLE_PROPERTY *property)
 {
+	EMSG("In func %s\n", __func__);
 	efi_status_t status = check_name_terminator(property->Name, property->NameSize);
 	if (status != EFI_SUCCESS) return status;
 
@@ -430,6 +442,7 @@ efi_status_t uefi_variable_store_get_var_check_property(
 static void load_variable_index(
 	struct uefi_variable_store *context)
 {
+	EMSG("In func %s\n", __func__);
 	struct storage_backend *persistent_store = context->persistent_store.storage_backend;
 
 	if (persistent_store) {
@@ -444,6 +457,7 @@ static void load_variable_index(
 			context->index_sync_buffer_size,
 			context->index_sync_buffer,
 			&data_len);
+		EMSG("In func %s get status is %d\n", __func__, psa_status);
 
 		if (psa_status == PSA_SUCCESS) {
 
@@ -455,6 +469,7 @@ static void load_variable_index(
 static efi_status_t sync_variable_index(
 	struct uefi_variable_store *context)
 {
+	EMSG("In func %s\n", __func__);
 	efi_status_t status = EFI_SUCCESS;
 
 	/* Sync the varibale index to storage if anything is dirty */
@@ -479,6 +494,7 @@ static efi_status_t sync_variable_index(
 				data_len,
 				context->index_sync_buffer,
 				PSA_STORAGE_FLAG_NONE);
+			EMSG("In func %s set status is %d\n", __func__, psa_status);
 
 			status = psa_to_efi_storage_status(psa_status);
 		}
@@ -490,6 +506,7 @@ static efi_status_t sync_variable_index(
 static efi_status_t check_capabilities(
 	const SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE *var)
 {
+	EMSG("In func %s\n", __func__);
 	efi_status_t status = EFI_SUCCESS;
 
 	/* Check if any unsupported variable attributes have been requested */
@@ -551,6 +568,7 @@ static efi_status_t store_variable_data(
 	const struct variable_info *info,
 	const SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE *var)
 {
+	EMSG("In func %s\n", __func__);
 	psa_status_t psa_status = PSA_SUCCESS;
 	size_t data_len = var->DataSize;
 	const uint8_t *data = (const uint8_t*)var +
@@ -599,6 +617,7 @@ static efi_status_t remove_variable_data(
 	struct uefi_variable_store *context,
 	const struct variable_info *info)
 {
+	EMSG("In func %s\n", __func__);
 	psa_status_t psa_status = PSA_SUCCESS;
 
 	if (info->is_variable_set) {
@@ -613,6 +632,7 @@ static efi_status_t remove_variable_data(
 				delegate_store->storage_backend->context,
 				context->owner_id,
 				info->metadata.uid);
+			EMSG("In func %s status is %d\n", __func__, psa_status);
 		}
 	}
 
@@ -625,6 +645,7 @@ static efi_status_t load_variable_data(
 	SMM_VARIABLE_COMMUNICATE_ACCESS_VARIABLE *var,
 	size_t max_data_len)
 {
+	EMSG("In func %s\n", __func__);
 	psa_status_t psa_status = PSA_SUCCESS;
 	size_t data_len = 0;
 	uint8_t *data = (uint8_t*)var +
@@ -644,6 +665,7 @@ static efi_status_t load_variable_data(
 			max_data_len,
 			data,
 			&data_len);
+		EMSG("In func %s get status is %d\n", __func__, psa_status);
 
 		var->DataSize = data_len;
 	}
@@ -771,6 +793,7 @@ static void purge_orphan_index_entries(
 				context->owner_id,
 				info->metadata.uid,
 				&storage_info);
+			EMSG("In func %s get status is %d\n", __func__, psa_status);
 
 			if (psa_status != PSA_SUCCESS) {
 
@@ -802,6 +825,7 @@ static size_t space_used(
 	uint32_t attributes,
 	struct storage_backend *storage_backend)
 {
+	EMSG("In func %s\n", __func__);
 	if (!storage_backend) return 0;
 
 	size_t total_used = 0;
@@ -823,6 +847,7 @@ static size_t space_used(
 				context->owner_id,
 				info->metadata.uid,
 				&storage_info);
+			EMSG("In func %s get status is %d\n", __func__, psa_status);
 
 			if (psa_status == PSA_SUCCESS) total_used += storage_info.size;
 		}
diff --git a/components/service/smm_variable/provider/smm_variable_provider.c b/components/service/smm_variable/provider/smm_variable_provider.c
index 52e68d09..1f362c17 100644
--- a/components/service/smm_variable/provider/smm_variable_provider.c
+++ b/components/service/smm_variable/provider/smm_variable_provider.c
@@ -9,6 +9,7 @@
 #include <protocols/service/smm_variable/smm_variable_proto.h>
 #include <protocols/rpc/common/packed-c/status.h>
 #include "smm_variable_provider.h"
+#include <trace.h>
 
 /* Service request handlers */
 static rpc_status_t get_variable_handler(void *context, struct call_req *req);
@@ -252,17 +253,18 @@ static rpc_status_t set_variable_handler(void *context, struct call_req* req)
 
 static rpc_status_t query_variable_info_handler(void *context, struct call_req* req)
 {
+	EMSG("In func %s \n", __func__);
 	efi_status_t efi_status = EFI_INVALID_PARAMETER;
 	struct smm_variable_provider *this_instance = (struct smm_variable_provider*)context;
 
 	const struct call_param_buf *req_buf = call_req_get_req_buf(req);
-
+	EMSG("In func %s sizeof(SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO) is %d\n", __func__, sizeof(SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO));
 	if (req_buf->data_len >= sizeof(SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO)) {
 
 		struct call_param_buf *resp_buf = call_req_get_resp_buf(req);
 
 		if (resp_buf->size >= req_buf->data_len) {
-
+			
 			memmove(resp_buf->data, req_buf->data, req_buf->data_len);
 
 			efi_status = uefi_variable_store_query_variable_info(
@@ -272,6 +274,7 @@ static rpc_status_t query_variable_info_handler(void *context, struct call_req*
 			if (efi_status == EFI_SUCCESS) {
 
 				resp_buf->data_len = sizeof(SMM_VARIABLE_COMMUNICATE_QUERY_VARIABLE_INFO);
+				EMSG("In func %s resp_buf->data_len is %d\n", __func__, resp_buf->data_len);
 			}
 		}
 		else {
