Linux-ACPI Archive on lore.kernel.org
 help / color / Atom feed
* [PATCH v2] ACPI/IORT: Fix PMCG node always look for a single ID mapping.
@ 2020-05-12 23:56 Tuan Phan
  2020-05-13  3:16 ` Hanjun Guo
  0 siblings, 1 reply; 3+ messages in thread
From: Tuan Phan @ 2020-05-12 23:56 UTC (permalink / raw)
  Cc: patches, Lorenzo Pieralisi, Hanjun Guo, Sudeep Holla,
	Rafael J. Wysocki, Len Brown, linux-acpi, linux-arm-kernel,
	linux-kernel

PMCG node can have zero ID mapping if its overflow interrupt
is wire based. The code to parse PMCG node can not assume it will
have a single ID mapping.

Signed-off-by: Tuan Phan <tuanphan@os.amperecomputing.com>
---
Changes in v2:
- Used pmcg node to detect wired base overflow interrupt.
 
 drivers/acpi/arm64/iort.c | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index ed3d2d1..11a4e8e 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -414,6 +414,7 @@ static struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
 static int iort_get_id_mapping_index(struct acpi_iort_node *node)
 {
 	struct acpi_iort_smmu_v3 *smmu;
+	struct acpi_iort_pmcg *pmcg;
 
 	switch (node->type) {
 	case ACPI_IORT_NODE_SMMU_V3:
@@ -441,6 +442,10 @@ static int iort_get_id_mapping_index(struct acpi_iort_node *node)
 
 		return smmu->id_mapping_index;
 	case ACPI_IORT_NODE_PMCG:
+		pmcg = (struct acpi_iort_pmcg *)node->node_data;
+		if (pmcg->overflow_gsiv)
+			return -EINVAL;
+
 		return 0;
 	default:
 		return -EINVAL;
-- 
2.7.4


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

* Re: [PATCH v2] ACPI/IORT: Fix PMCG node always look for a single ID mapping.
  2020-05-12 23:56 [PATCH v2] ACPI/IORT: Fix PMCG node always look for a single ID mapping Tuan Phan
@ 2020-05-13  3:16 ` Hanjun Guo
  2020-05-13 10:28   ` Robin Murphy
  0 siblings, 1 reply; 3+ messages in thread
From: Hanjun Guo @ 2020-05-13  3:16 UTC (permalink / raw)
  To: Tuan Phan
  Cc: patches, Lorenzo Pieralisi, Sudeep Holla, Rafael J. Wysocki,
	Len Brown, linux-acpi, linux-arm-kernel, linux-kernel

On 2020/5/13 7:56, Tuan Phan wrote:
> PMCG node can have zero ID mapping if its overflow interrupt
> is wire based. The code to parse PMCG node can not assume it will
> have a single ID mapping.
> 
> Signed-off-by: Tuan Phan <tuanphan@os.amperecomputing.com>

It's better to add

Fixes: 24e516049360 ("ACPI/IORT: Add support for PMCG")

> ---
> Changes in v2:
> - Used pmcg node to detect wired base overflow interrupt.
>   
>   drivers/acpi/arm64/iort.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
> index ed3d2d1..11a4e8e 100644
> --- a/drivers/acpi/arm64/iort.c
> +++ b/drivers/acpi/arm64/iort.c
> @@ -414,6 +414,7 @@ static struct acpi_iort_node *iort_node_get_id(struct acpi_iort_node *node,
>   static int iort_get_id_mapping_index(struct acpi_iort_node *node)
>   {
>   	struct acpi_iort_smmu_v3 *smmu;
> +	struct acpi_iort_pmcg *pmcg;
>   
>   	switch (node->type) {
>   	case ACPI_IORT_NODE_SMMU_V3:
> @@ -441,6 +442,10 @@ static int iort_get_id_mapping_index(struct acpi_iort_node *node)
>   
>   		return smmu->id_mapping_index;
>   	case ACPI_IORT_NODE_PMCG:
> +		pmcg = (struct acpi_iort_pmcg *)node->node_data;
> +		if (pmcg->overflow_gsiv)
> +			return -EINVAL;
> +
>   		return 0;
>   	default:
>   		return -EINVAL;

With my comments addressed,

Reviewed-by: Hanjun Guo <guoahanjun@huawei.com>


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

* Re: [PATCH v2] ACPI/IORT: Fix PMCG node always look for a single ID mapping.
  2020-05-13  3:16 ` Hanjun Guo
@ 2020-05-13 10:28   ` Robin Murphy
  0 siblings, 0 replies; 3+ messages in thread
From: Robin Murphy @ 2020-05-13 10:28 UTC (permalink / raw)
  To: Hanjun Guo, Tuan Phan
  Cc: Lorenzo Pieralisi, Rafael J. Wysocki, linux-kernel, linux-acpi,
	Sudeep Holla, patches, linux-arm-kernel, Len Brown

On 2020-05-13 4:16 am, Hanjun Guo wrote:
> On 2020/5/13 7:56, Tuan Phan wrote:
>> PMCG node can have zero ID mapping if its overflow interrupt
>> is wire based. The code to parse PMCG node can not assume it will
>> have a single ID mapping.
>>
>> Signed-off-by: Tuan Phan <tuanphan@os.amperecomputing.com>
> 
> It's better to add
> 
> Fixes: 24e516049360 ("ACPI/IORT: Add support for PMCG")
> 
>> ---
>> Changes in v2:
>> - Used pmcg node to detect wired base overflow interrupt.
>>   drivers/acpi/arm64/iort.c | 5 +++++
>>   1 file changed, 5 insertions(+)
>>
>> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
>> index ed3d2d1..11a4e8e 100644
>> --- a/drivers/acpi/arm64/iort.c
>> +++ b/drivers/acpi/arm64/iort.c
>> @@ -414,6 +414,7 @@ static struct acpi_iort_node 
>> *iort_node_get_id(struct acpi_iort_node *node,
>>   static int iort_get_id_mapping_index(struct acpi_iort_node *node)
>>   {
>>       struct acpi_iort_smmu_v3 *smmu;
>> +    struct acpi_iort_pmcg *pmcg;
>>       switch (node->type) {
>>       case ACPI_IORT_NODE_SMMU_V3:
>> @@ -441,6 +442,10 @@ static int iort_get_id_mapping_index(struct 
>> acpi_iort_node *node)
>>           return smmu->id_mapping_index;
>>       case ACPI_IORT_NODE_PMCG:
>> +        pmcg = (struct acpi_iort_pmcg *)node->node_data;
>> +        if (pmcg->overflow_gsiv)

	if (pmcg->overflow_gsiv || node->mapping_count == 0)

...if there is no GSIV, we should still *also* check that index 0 is 
valid before we return it.

Robin.

>> +            return -EINVAL;
>> +
>>           return 0;
>>       default:
>>           return -EINVAL;
> 
> With my comments addressed,
> 
> Reviewed-by: Hanjun Guo <guoahanjun@huawei.com>
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, back to index

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-12 23:56 [PATCH v2] ACPI/IORT: Fix PMCG node always look for a single ID mapping Tuan Phan
2020-05-13  3:16 ` Hanjun Guo
2020-05-13 10:28   ` Robin Murphy

Linux-ACPI Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/linux-acpi/0 linux-acpi/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 linux-acpi linux-acpi/ https://lore.kernel.org/linux-acpi \
		linux-acpi@vger.kernel.org
	public-inbox-index linux-acpi

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://nntp.lore.kernel.org/org.kernel.vger.linux-acpi


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git