All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get
@ 2020-08-26  8:29 Hanjun Guo
  2020-08-26  8:29 ` [PATCH v2 2/2] drm/amdkfd: Put ACPI table after using it Hanjun Guo
  2020-08-27  4:28 ` [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
  0 siblings, 2 replies; 4+ messages in thread
From: Hanjun Guo @ 2020-08-26  8:29 UTC (permalink / raw)
  To: Felix Kuehling, Alex Deucher, Christian König, David Airlie,
	Daniel Vetter
  Cc: linux-kernel, Hanjun Guo

If the ignore_crat is set to non-zero value, it's no point getting
the CRAT table, so just move the ignore_crat check before we get the
CRAT table.

Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index 6a250f8..ed77b109 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -764,6 +764,11 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 
 	*crat_image = NULL;
 
+	if (ignore_crat) {
+		pr_info("CRAT table disabled by module option\n");
+		return -ENODATA;
+	}
+
 	/* Fetch the CRAT table from ACPI */
 	status = acpi_get_table(CRAT_SIGNATURE, 0, &crat_table);
 	if (status == AE_NOT_FOUND) {
@@ -776,11 +781,6 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 		return -EINVAL;
 	}
 
-	if (ignore_crat) {
-		pr_info("CRAT table disabled by module option\n");
-		return -ENODATA;
-	}
-
 	pcrat_image = kmemdup(crat_table, crat_table->length, GFP_KERNEL);
 	if (!pcrat_image)
 		return -ENOMEM;
-- 
1.7.12.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* [PATCH v2 2/2] drm/amdkfd: Put ACPI table after using it
  2020-08-26  8:29 [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Hanjun Guo
@ 2020-08-26  8:29 ` Hanjun Guo
  2020-08-27  4:28 ` [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
  1 sibling, 0 replies; 4+ messages in thread
From: Hanjun Guo @ 2020-08-26  8:29 UTC (permalink / raw)
  To: Felix Kuehling, Alex Deucher, Christian König, David Airlie,
	Daniel Vetter
  Cc: linux-kernel, Hanjun Guo

The acpi_get_table() should be coupled with acpi_put_table() if
the mapped table is not used at runtime to release the table
mapping which can prevent the memory leak.

In kfd_create_crat_image_acpi(), crat_table is copied to pcrat_image,
and in kfd_create_vcrat_image_cpu(), the acpi_table is only used to
get the OEM information, so those two table mappings need to be released
after using it.

Fixes: 174de876d6d0 ("drm/amdkfd: Group up CRAT related functions")
Fixes: 520b8fb755cc ("drm/amdkfd: Add topology support for CPUs")
Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
---
 drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 13 +++++++++----
 1 file changed, 9 insertions(+), 4 deletions(-)

diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
index ed77b109..c3f3ffb6 100644
--- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
+++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
@@ -758,6 +758,7 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 	struct acpi_table_header *crat_table;
 	acpi_status status;
 	void *pcrat_image;
+	int rc = 0;
 
 	if (!crat_image)
 		return -EINVAL;
@@ -782,13 +783,16 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
 	}
 
 	pcrat_image = kmemdup(crat_table, crat_table->length, GFP_KERNEL);
-	if (!pcrat_image)
-		return -ENOMEM;
+	if (!pcrat_image) {
+		rc = -ENOMEM;
+		goto out;
+	}
 
 	*crat_image = pcrat_image;
 	*size = crat_table->length;
-
-	return 0;
+out:
+	acpi_put_table(crat_table);
+	return rc;
 }
 
 /* Memory required to create Virtual CRAT.
@@ -972,6 +976,7 @@ static int kfd_create_vcrat_image_cpu(void *pcrat_image, size_t *size)
 				CRAT_OEMID_LENGTH);
 		memcpy(crat_table->oem_table_id, acpi_table->oem_table_id,
 				CRAT_OEMTABLEID_LENGTH);
+		acpi_put_table(acpi_table);
 	}
 	crat_table->total_entries = 0;
 	crat_table->num_domains = 0;
-- 
1.7.12.4


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get
  2020-08-26  8:29 [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Hanjun Guo
  2020-08-26  8:29 ` [PATCH v2 2/2] drm/amdkfd: Put ACPI table after using it Hanjun Guo
@ 2020-08-27  4:28 ` Felix Kuehling
  2020-08-27  6:21   ` Hanjun Guo
  1 sibling, 1 reply; 4+ messages in thread
From: Felix Kuehling @ 2020-08-27  4:28 UTC (permalink / raw)
  To: Hanjun Guo, Alex Deucher, Christian König, David Airlie,
	Daniel Vetter
  Cc: linux-kernel


Am 2020-08-26 um 4:29 a.m. schrieb Hanjun Guo:
> If the ignore_crat is set to non-zero value, it's no point getting
> the CRAT table, so just move the ignore_crat check before we get the
> CRAT table.
>
> Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
> ---
>  drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 10 +++++-----
>  1 file changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> index 6a250f8..ed77b109 100644
> --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
> @@ -764,6 +764,11 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
>  
>  	*crat_image = NULL;
>  
> +	if (ignore_crat) {

A conflicting change in this area was just submitted on Monday to
amd-staging-drm-next. You'll need to rebase your patch. It should be
straight-forward. ignore_crat was replaced with a function call
kfd_ignore_crat().

Other than that, your patch series looks good to me. If I don't see an
update from you in a day or two, I'll fix it up myself and add my R-b.

Thanks,
  Felix


> +		pr_info("CRAT table disabled by module option\n");
> +		return -ENODATA;
> +	}
> +
>  	/* Fetch the CRAT table from ACPI */
>  	status = acpi_get_table(CRAT_SIGNATURE, 0, &crat_table);
>  	if (status == AE_NOT_FOUND) {
> @@ -776,11 +781,6 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
>  		return -EINVAL;
>  	}
>  
> -	if (ignore_crat) {
> -		pr_info("CRAT table disabled by module option\n");
> -		return -ENODATA;
> -	}
> -
>  	pcrat_image = kmemdup(crat_table, crat_table->length, GFP_KERNEL);
>  	if (!pcrat_image)
>  		return -ENOMEM;

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get
  2020-08-27  4:28 ` [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
@ 2020-08-27  6:21   ` Hanjun Guo
  0 siblings, 0 replies; 4+ messages in thread
From: Hanjun Guo @ 2020-08-27  6:21 UTC (permalink / raw)
  To: Felix Kuehling, Alex Deucher, Christian König, David Airlie,
	Daniel Vetter
  Cc: linux-kernel

On 2020/8/27 12:28, Felix Kuehling wrote:
> 
> Am 2020-08-26 um 4:29 a.m. schrieb Hanjun Guo:
>> If the ignore_crat is set to non-zero value, it's no point getting
>> the CRAT table, so just move the ignore_crat check before we get the
>> CRAT table.
>>
>> Signed-off-by: Hanjun Guo <guohanjun@huawei.com>
>> ---
>>   drivers/gpu/drm/amd/amdkfd/kfd_crat.c | 10 +++++-----
>>   1 file changed, 5 insertions(+), 5 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
>> index 6a250f8..ed77b109 100644
>> --- a/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
>> +++ b/drivers/gpu/drm/amd/amdkfd/kfd_crat.c
>> @@ -764,6 +764,11 @@ int kfd_create_crat_image_acpi(void **crat_image, size_t *size)
>>   
>>   	*crat_image = NULL;
>>   
>> +	if (ignore_crat) {
> 
> A conflicting change in this area was just submitted on Monday to
> amd-staging-drm-next. You'll need to rebase your patch. It should be
> straight-forward. ignore_crat was replaced with a function call
> kfd_ignore_crat().
> 
> Other than that, your patch series looks good to me. If I don't see an
> update from you in a day or two, I'll fix it up myself and add my R-b.

Please fix it up by yourself, thanks a lot for the help!

Regards
Hanjun


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-08-27  6:21 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-26  8:29 [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Hanjun Guo
2020-08-26  8:29 ` [PATCH v2 2/2] drm/amdkfd: Put ACPI table after using it Hanjun Guo
2020-08-27  4:28 ` [PATCH v2 1/2] drm/amdkfd: Move the ignore_crat check before the CRAT table get Felix Kuehling
2020-08-27  6:21   ` Hanjun Guo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.