All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tomasz Nowicki <tn@semihalf.com>
To: Hanjun Guo <hanjun.guo@linaro.org>,
	Marc Zyngier <marc.zyngier@arm.com>,
	"Rafael J. Wysocki" <rjw@rjwysocki.net>,
	Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Cc: linux-acpi@vger.kernel.org, linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org, linuxarm@huawei.com,
	Thomas Gleixner <tglx@linutronix.de>,
	Greg KH <gregkh@linuxfoundation.org>,
	Ma Jun <majun258@huawei.com>,
	Kefeng Wang <wangkefeng.wang@huawei.com>,
	Agustin Vega-Frias <agustinv@codeaurora.org>,
	Sinan Kaya <okaya@codeaurora.org>,
	charles.garcia-tobin@arm.com, huxinwei@huawei.com,
	yimin@huawei.com, Jon Masters <jcm@redhat.com>
Subject: Re: [PATCH v6 05/14] ACPI: platform-msi: retrieve dev id from IORT
Date: Tue, 3 Jan 2017 12:24:57 +0100	[thread overview]
Message-ID: <168e53f0-1e56-7937-7dbb-bd5c6460437a@semihalf.com> (raw)
In-Reply-To: <4ab6a7e3-7aa3-367d-a333-effb24399fd5@semihalf.com>

On 03.01.2017 10:37, Tomasz Nowicki wrote:
> On 03.01.2017 09:43, Tomasz Nowicki wrote:
>> On 02.01.2017 14:31, Hanjun Guo wrote:
>>> For devices connecting to ITS, it needs dev id to identify
>>> itself, and this dev id is represented in the IORT table in
>>> named componant node [1] for platform devices, so in this
>>> patch we will scan the IORT to retrieve device's dev id.
>>>
>>> Introduce iort_pmsi_get_dev_id() with pointer dev passed
>>> in for that purpose.
>>>
>>> [1]:
>>> https://static.docs.arm.com/den0049/b/DEN0049B_IO_Remapping_Table.pdf
>>>
>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>> Tested-by: Sinan Kaya <okaya@codeaurora.org>
>>> Tested-by: Majun <majun258@huawei.com>
>>> Tested-by: Xinwei Kong <kong.kongxinwei@hisilicon.com>
>>> Cc: Marc Zyngier <marc.zyngier@arm.com>
>>> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
>>> Cc: Tomasz Nowicki <tn@semihalf.com>
>>> Cc: Thomas Gleixner <tglx@linutronix.de>
>>> ---
>>>  drivers/acpi/arm64/iort.c                     | 26
>>> ++++++++++++++++++++++++++
>>>  drivers/irqchip/irq-gic-v3-its-platform-msi.c |  4 +++-
>>>  include/linux/acpi_iort.h                     |  8 ++++++++
>>>  3 files changed, 37 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
>>> index 174e983..ab7bae7 100644
>>> --- a/drivers/acpi/arm64/iort.c
>>> +++ b/drivers/acpi/arm64/iort.c
>>> @@ -444,6 +444,32 @@ u32 iort_msi_map_rid(struct device *dev, u32
>>> req_id)
>>>  }
>>>
>>>  /**
>>> + * iort_pmsi_get_dev_id() - Get the device id for a device
>>> + * @dev: The device for which the mapping is to be done.
>>> + * @dev_id: The device ID found.
>>> + *
>>> + * Returns: 0 for successful find a dev id, errors otherwise
>>> + */
>>> +int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
>>> +{
>>> +    struct acpi_iort_node *node;
>>> +
>>> +    if (!iort_table)
>>> +        return -ENODEV;
>>> +
>>> +    node = iort_find_dev_node(dev);
>>> +    if (!node) {
>>> +        dev_err(dev, "can't find related IORT node\n");
>>> +        return -ENODEV;
>>> +    }
>>> +
>>> +    if(!iort_node_get_id(node, dev_id, IORT_MSI_TYPE, 0))
>>> +        return -ENODEV;
>>> +
>>> +    return 0;
>>> +}
>>> +
>>> +/**
>> Giving that you are extending this to NC->
>> SMMU->ITS case in later patch, we can use existing helpers from iort.c,
>> like that:
>>
>> +/**
>> + * iort_pmsi_get_dev_id() - Get the device id for a device
>> + * @dev: The device for which the mapping is to be done.
>> + * @dev_id: The device ID found.
>> + *
>> + * Returns: 0 for successful find a dev id, errors otherwise
>> + */
>> +int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
>> +{
>> +    struct acpi_iort_node *node;
>> +
>> +    node = iort_find_dev_node(dev);
>> +    if (!node)
>> +        return -ENODEV;
>> +
>> +    if (!iort_node_map_rid(node, 0, dev_id, IORT_MSI_TYPE))
>> +        return -ENODEV;
>> +
>> +    return 0;
>> +}
>>
>> Correct me if I am wrong.
>>
>
> "0" as rid_in for iort_node_map_rid() isn't good idea, sorry...
>

I refactored iort_node_map_rid() and added new 
iort_node_map_single_rid() which should works for you. Below patch bases 
on v4.10-rc2:

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index e0d2e6e..2526b89 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -297,8 +297,17 @@ static acpi_status iort_match_node_callback(struct 
acpi_iort_node *node,
  }

  static int iort_id_map(struct acpi_iort_id_mapping *map, u8 type, u32 
rid_in,
-		       u32 *rid_out)
+		       u32 *rid_out, bool single)
  {
+	if (!single) {
+		if (rid_in < map->input_base ||
+		    (rid_in >= map->input_base + map->id_count))
+			return -ENXIO;
+
+		*rid_out = map->output_base + (rid_in - map->input_base);
+		return 0;
+	}
+
  	/* Single mapping does not care for input id */
  	if (map->flags & ACPI_IORT_ID_SINGLE_MAPPING) {
  		if (type == ACPI_IORT_NODE_NAMED_COMPONENT ||
@@ -309,15 +318,9 @@ static int iort_id_map(struct acpi_iort_id_mapping 
*map, u8 type, u32 rid_in,

  		pr_warn(FW_BUG "[map %p] SINGLE MAPPING flag not allowed for node 
type %d, skipping ID map\n",
  			map, type);
-		return -ENXIO;
  	}

-	if (rid_in < map->input_base ||
-	    (rid_in >= map->input_base + map->id_count))
-		return -ENXIO;
-
-	*rid_out = map->output_base + (rid_in - map->input_base);
-	return 0;
+	return -ENXIO;
  }

  static
@@ -359,6 +362,38 @@ struct acpi_iort_node *iort_node_get_id(struct 
acpi_iort_node *node,
  	return NULL;
  }

+static struct acpi_iort_node *iort_node_map_rid_one(struct 
acpi_iort_node *node,
+						    u32 *rid, bool single)
+{
+	struct acpi_iort_id_mapping *map;
+	struct acpi_iort_node *next;
+	int i;
+
+	if (!node->mapping_offset || !node->mapping_count)
+		return NULL;
+
+	map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node,
+			   node->mapping_offset);
+
+	/* Firmware bug! */
+	if (!map->output_reference) {
+		pr_err(FW_BUG "[node %p type %d] ID map has NULL parent reference\n",
+		       node, node->type);
+		return NULL;
+	}
+
+	next = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
+			    map->output_reference);
+
+	/* Do the RID translation */
+	for (i = 0; i < node->mapping_count; i++, map++) {
+		if (!iort_id_map(map, node->type, *rid, rid, single))
+			return next;
+	}
+
+	return NULL;
+}
+
  static struct acpi_iort_node *iort_node_map_rid(struct acpi_iort_node 
*node,
  						u32 rid_in, u32 *rid_out,
  						u8 type_mask)
@@ -367,42 +402,15 @@ static struct acpi_iort_node 
*iort_node_map_rid(struct acpi_iort_node *node,

  	/* Parse the ID mapping tree to find specified node type */
  	while (node) {
-		struct acpi_iort_id_mapping *map;
-		int i;
-
  		if (IORT_TYPE_MASK(node->type) & type_mask) {
  			if (rid_out)
  				*rid_out = rid;
  			return node;
  		}

-		if (!node->mapping_offset || !node->mapping_count)
-			goto fail_map;
-
-		map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node,
-				   node->mapping_offset);
-
-		/* Firmware bug! */
-		if (!map->output_reference) {
-			pr_err(FW_BUG "[node %p type %d] ID map has NULL parent reference\n",
-			       node, node->type);
-			goto fail_map;
-		}
-
-		/* Do the RID translation */
-		for (i = 0; i < node->mapping_count; i++, map++) {
-			if (!iort_id_map(map, node->type, rid, &rid))
-				break;
-		}
-
-		if (i == node->mapping_count)
-			goto fail_map;
-
-		node = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
-				    map->output_reference);
+		node = iort_node_map_rid_one(node, &rid, false);
  	}

-fail_map:
  	/* Map input RID to output RID unchanged on mapping failure*/
  	if (rid_out)
  		*rid_out = rid_in;
@@ -410,6 +418,20 @@ static struct acpi_iort_node 
*iort_node_map_rid(struct acpi_iort_node *node,
  	return NULL;
  }

+static struct acpi_iort_node *iort_node_map_single_rid(
+						struct acpi_iort_node *node,
+						u32 *rid_out, u8 type_mask)
+{
+	u32 rid;
+
+	/* Get the initial rid */
+	node = iort_node_map_rid_one(node, &rid, true);
+	if (!node)
+		return NULL;
+
+	return iort_node_map_rid(node, rid, rid_out, type_mask);
+}
+
  static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
  {
  	struct pci_bus *pbus;


WARNING: multiple messages have this Message-ID (diff)
From: tn@semihalf.com (Tomasz Nowicki)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v6 05/14] ACPI: platform-msi: retrieve dev id from IORT
Date: Tue, 3 Jan 2017 12:24:57 +0100	[thread overview]
Message-ID: <168e53f0-1e56-7937-7dbb-bd5c6460437a@semihalf.com> (raw)
In-Reply-To: <4ab6a7e3-7aa3-367d-a333-effb24399fd5@semihalf.com>

On 03.01.2017 10:37, Tomasz Nowicki wrote:
> On 03.01.2017 09:43, Tomasz Nowicki wrote:
>> On 02.01.2017 14:31, Hanjun Guo wrote:
>>> For devices connecting to ITS, it needs dev id to identify
>>> itself, and this dev id is represented in the IORT table in
>>> named componant node [1] for platform devices, so in this
>>> patch we will scan the IORT to retrieve device's dev id.
>>>
>>> Introduce iort_pmsi_get_dev_id() with pointer dev passed
>>> in for that purpose.
>>>
>>> [1]:
>>> https://static.docs.arm.com/den0049/b/DEN0049B_IO_Remapping_Table.pdf
>>>
>>> Signed-off-by: Hanjun Guo <hanjun.guo@linaro.org>
>>> Tested-by: Sinan Kaya <okaya@codeaurora.org>
>>> Tested-by: Majun <majun258@huawei.com>
>>> Tested-by: Xinwei Kong <kong.kongxinwei@hisilicon.com>
>>> Cc: Marc Zyngier <marc.zyngier@arm.com>
>>> Cc: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
>>> Cc: Tomasz Nowicki <tn@semihalf.com>
>>> Cc: Thomas Gleixner <tglx@linutronix.de>
>>> ---
>>>  drivers/acpi/arm64/iort.c                     | 26
>>> ++++++++++++++++++++++++++
>>>  drivers/irqchip/irq-gic-v3-its-platform-msi.c |  4 +++-
>>>  include/linux/acpi_iort.h                     |  8 ++++++++
>>>  3 files changed, 37 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
>>> index 174e983..ab7bae7 100644
>>> --- a/drivers/acpi/arm64/iort.c
>>> +++ b/drivers/acpi/arm64/iort.c
>>> @@ -444,6 +444,32 @@ u32 iort_msi_map_rid(struct device *dev, u32
>>> req_id)
>>>  }
>>>
>>>  /**
>>> + * iort_pmsi_get_dev_id() - Get the device id for a device
>>> + * @dev: The device for which the mapping is to be done.
>>> + * @dev_id: The device ID found.
>>> + *
>>> + * Returns: 0 for successful find a dev id, errors otherwise
>>> + */
>>> +int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
>>> +{
>>> +    struct acpi_iort_node *node;
>>> +
>>> +    if (!iort_table)
>>> +        return -ENODEV;
>>> +
>>> +    node = iort_find_dev_node(dev);
>>> +    if (!node) {
>>> +        dev_err(dev, "can't find related IORT node\n");
>>> +        return -ENODEV;
>>> +    }
>>> +
>>> +    if(!iort_node_get_id(node, dev_id, IORT_MSI_TYPE, 0))
>>> +        return -ENODEV;
>>> +
>>> +    return 0;
>>> +}
>>> +
>>> +/**
>> Giving that you are extending this to NC->
>> SMMU->ITS case in later patch, we can use existing helpers from iort.c,
>> like that:
>>
>> +/**
>> + * iort_pmsi_get_dev_id() - Get the device id for a device
>> + * @dev: The device for which the mapping is to be done.
>> + * @dev_id: The device ID found.
>> + *
>> + * Returns: 0 for successful find a dev id, errors otherwise
>> + */
>> +int iort_pmsi_get_dev_id(struct device *dev, u32 *dev_id)
>> +{
>> +    struct acpi_iort_node *node;
>> +
>> +    node = iort_find_dev_node(dev);
>> +    if (!node)
>> +        return -ENODEV;
>> +
>> +    if (!iort_node_map_rid(node, 0, dev_id, IORT_MSI_TYPE))
>> +        return -ENODEV;
>> +
>> +    return 0;
>> +}
>>
>> Correct me if I am wrong.
>>
>
> "0" as rid_in for iort_node_map_rid() isn't good idea, sorry...
>

I refactored iort_node_map_rid() and added new 
iort_node_map_single_rid() which should works for you. Below patch bases 
on v4.10-rc2:

diff --git a/drivers/acpi/arm64/iort.c b/drivers/acpi/arm64/iort.c
index e0d2e6e..2526b89 100644
--- a/drivers/acpi/arm64/iort.c
+++ b/drivers/acpi/arm64/iort.c
@@ -297,8 +297,17 @@ static acpi_status iort_match_node_callback(struct 
acpi_iort_node *node,
  }

  static int iort_id_map(struct acpi_iort_id_mapping *map, u8 type, u32 
rid_in,
-		       u32 *rid_out)
+		       u32 *rid_out, bool single)
  {
+	if (!single) {
+		if (rid_in < map->input_base ||
+		    (rid_in >= map->input_base + map->id_count))
+			return -ENXIO;
+
+		*rid_out = map->output_base + (rid_in - map->input_base);
+		return 0;
+	}
+
  	/* Single mapping does not care for input id */
  	if (map->flags & ACPI_IORT_ID_SINGLE_MAPPING) {
  		if (type == ACPI_IORT_NODE_NAMED_COMPONENT ||
@@ -309,15 +318,9 @@ static int iort_id_map(struct acpi_iort_id_mapping 
*map, u8 type, u32 rid_in,

  		pr_warn(FW_BUG "[map %p] SINGLE MAPPING flag not allowed for node 
type %d, skipping ID map\n",
  			map, type);
-		return -ENXIO;
  	}

-	if (rid_in < map->input_base ||
-	    (rid_in >= map->input_base + map->id_count))
-		return -ENXIO;
-
-	*rid_out = map->output_base + (rid_in - map->input_base);
-	return 0;
+	return -ENXIO;
  }

  static
@@ -359,6 +362,38 @@ struct acpi_iort_node *iort_node_get_id(struct 
acpi_iort_node *node,
  	return NULL;
  }

+static struct acpi_iort_node *iort_node_map_rid_one(struct 
acpi_iort_node *node,
+						    u32 *rid, bool single)
+{
+	struct acpi_iort_id_mapping *map;
+	struct acpi_iort_node *next;
+	int i;
+
+	if (!node->mapping_offset || !node->mapping_count)
+		return NULL;
+
+	map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node,
+			   node->mapping_offset);
+
+	/* Firmware bug! */
+	if (!map->output_reference) {
+		pr_err(FW_BUG "[node %p type %d] ID map has NULL parent reference\n",
+		       node, node->type);
+		return NULL;
+	}
+
+	next = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
+			    map->output_reference);
+
+	/* Do the RID translation */
+	for (i = 0; i < node->mapping_count; i++, map++) {
+		if (!iort_id_map(map, node->type, *rid, rid, single))
+			return next;
+	}
+
+	return NULL;
+}
+
  static struct acpi_iort_node *iort_node_map_rid(struct acpi_iort_node 
*node,
  						u32 rid_in, u32 *rid_out,
  						u8 type_mask)
@@ -367,42 +402,15 @@ static struct acpi_iort_node 
*iort_node_map_rid(struct acpi_iort_node *node,

  	/* Parse the ID mapping tree to find specified node type */
  	while (node) {
-		struct acpi_iort_id_mapping *map;
-		int i;
-
  		if (IORT_TYPE_MASK(node->type) & type_mask) {
  			if (rid_out)
  				*rid_out = rid;
  			return node;
  		}

-		if (!node->mapping_offset || !node->mapping_count)
-			goto fail_map;
-
-		map = ACPI_ADD_PTR(struct acpi_iort_id_mapping, node,
-				   node->mapping_offset);
-
-		/* Firmware bug! */
-		if (!map->output_reference) {
-			pr_err(FW_BUG "[node %p type %d] ID map has NULL parent reference\n",
-			       node, node->type);
-			goto fail_map;
-		}
-
-		/* Do the RID translation */
-		for (i = 0; i < node->mapping_count; i++, map++) {
-			if (!iort_id_map(map, node->type, rid, &rid))
-				break;
-		}
-
-		if (i == node->mapping_count)
-			goto fail_map;
-
-		node = ACPI_ADD_PTR(struct acpi_iort_node, iort_table,
-				    map->output_reference);
+		node = iort_node_map_rid_one(node, &rid, false);
  	}

-fail_map:
  	/* Map input RID to output RID unchanged on mapping failure*/
  	if (rid_out)
  		*rid_out = rid_in;
@@ -410,6 +418,20 @@ static struct acpi_iort_node 
*iort_node_map_rid(struct acpi_iort_node *node,
  	return NULL;
  }

+static struct acpi_iort_node *iort_node_map_single_rid(
+						struct acpi_iort_node *node,
+						u32 *rid_out, u8 type_mask)
+{
+	u32 rid;
+
+	/* Get the initial rid */
+	node = iort_node_map_rid_one(node, &rid, true);
+	if (!node)
+		return NULL;
+
+	return iort_node_map_rid(node, rid, rid_out, type_mask);
+}
+
  static struct acpi_iort_node *iort_find_dev_node(struct device *dev)
  {
  	struct pci_bus *pbus;

  reply	other threads:[~2017-01-03 11:25 UTC|newest]

Thread overview: 98+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-01-02 13:31 [PATCH v6 00/14] ACPI platform MSI support and its example mbigen Hanjun Guo
2017-01-02 13:31 ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 01/14] ACPI: ARM64: IORT: minor cleanup for iort_match_node_callback() Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-03 14:08   ` Lorenzo Pieralisi
2017-01-03 14:08     ` Lorenzo Pieralisi
2017-01-03 14:08     ` Lorenzo Pieralisi
2017-01-04  7:56     ` Hanjun Guo
2017-01-04  7:56       ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 02/14] irqchip: gic-v3-its: keep the head file include in alphabetic order Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-11 10:20   ` Matthias Brugger
2017-01-11 10:20     ` Matthias Brugger
2017-01-11 10:20   ` Matthias Brugger
2017-01-11 10:20     ` Matthias Brugger
2017-01-11 14:16     ` Hanjun Guo
2017-01-11 14:16       ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 03/14] ACPI: ARM64: IORT: add missing comment for iort_dev_find_its_id() Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-04 14:34   ` Lorenzo Pieralisi
2017-01-04 14:34     ` Lorenzo Pieralisi
2017-01-05  6:05     ` Hanjun Guo
2017-01-05  6:05       ` Hanjun Guo
2017-01-05  6:05       ` Hanjun Guo
2017-01-05  9:53       ` Lorenzo Pieralisi
2017-01-05  9:53         ` Lorenzo Pieralisi
2017-01-05  9:53         ` Lorenzo Pieralisi
2017-01-02 13:31 ` [PATCH v6 04/14] irqchip: gicv3-its: platform-msi: refactor its_pmsi_prepare() Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-11 10:31   ` Matthias Brugger
2017-01-11 10:31     ` Matthias Brugger
2017-01-02 13:31 ` [PATCH v6 05/14] ACPI: platform-msi: retrieve dev id from IORT Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-03  8:43   ` Tomasz Nowicki
2017-01-03  8:43     ` Tomasz Nowicki
2017-01-03  9:37     ` Tomasz Nowicki
2017-01-03  9:37       ` Tomasz Nowicki
2017-01-03 11:24       ` Tomasz Nowicki [this message]
2017-01-03 11:24         ` Tomasz Nowicki
2017-01-04 19:18   ` Lorenzo Pieralisi
2017-01-04 19:18     ` Lorenzo Pieralisi
2017-01-05 12:45     ` Hanjun Guo
2017-01-05 12:45       ` Hanjun Guo
2017-01-05 15:15       ` Lorenzo Pieralisi
2017-01-05 15:15         ` Lorenzo Pieralisi
2017-01-10 13:39         ` Hanjun Guo
2017-01-10 13:39           ` Hanjun Guo
2017-01-10 13:39           ` Hanjun Guo
2017-01-10 14:57           ` Lorenzo Pieralisi
2017-01-10 14:57             ` Lorenzo Pieralisi
2017-01-11 14:15             ` Hanjun Guo
2017-01-11 14:15               ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 06/14] irqchip: gicv3-its: platform-msi: refactor its_pmsi_init() to prepare for ACPI Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-03  7:41   ` Tomasz Nowicki
2017-01-03  7:41     ` Tomasz Nowicki
2017-01-04  7:02     ` Hanjun Guo
2017-01-04  7:02       ` Hanjun Guo
2017-01-04  7:29       ` Tomasz Nowicki
2017-01-04  7:29         ` Tomasz Nowicki
2017-01-04  8:25         ` Hanjun Guo
2017-01-04  8:25           ` Hanjun Guo
2017-01-04  9:02           ` Marc Zyngier
2017-01-04  9:02             ` Marc Zyngier
2017-01-04 10:19             ` Hanjun Guo
2017-01-04 10:19               ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 07/14] irqchip: gicv3-its: platform-msi: scan MADT to create platform msi domain Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 08/14] ACPI: ARM64: IORT: rework iort_node_get_id() Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-04 17:58   ` Lorenzo Pieralisi
2017-01-04 17:58     ` Lorenzo Pieralisi
2017-01-05  8:19     ` Hanjun Guo
2017-01-05  8:19       ` Hanjun Guo
2017-01-05  8:19       ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 09/14] ACPI: platform: setup MSI domain for ACPI based platform device Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-02 21:17   ` Rafael J. Wysocki
2017-01-02 21:17     ` Rafael J. Wysocki
2017-01-02 21:17     ` Rafael J. Wysocki
2017-01-02 13:31 ` [PATCH v6 10/14] ACPI: ARM64: IORT: rework iort_node_get_id() for NC->SMMU->ITS case Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-02 22:30   ` Sinan Kaya
2017-01-02 22:30     ` Sinan Kaya
2017-01-02 22:30     ` Sinan Kaya
2017-01-03  0:08     ` Hanjun Guo
2017-01-03  0:08       ` Hanjun Guo
2017-01-03  0:08       ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 11/14] msi: platform: make platform_msi_create_device_domain() ACPI aware Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-04 16:49   ` Lorenzo Pieralisi
2017-01-04 16:49     ` Lorenzo Pieralisi
2017-01-02 13:31 ` [PATCH v6 12/14] irqchip: mbigen: drop module owner Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 13/14] irqchip: mbigen: introduce mbigen_of_create_domain() Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo
2017-01-02 13:31 ` [PATCH v6 14/14] irqchip: mbigen: Add ACPI support Hanjun Guo
2017-01-02 13:31   ` Hanjun Guo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=168e53f0-1e56-7937-7dbb-bd5c6460437a@semihalf.com \
    --to=tn@semihalf.com \
    --cc=agustinv@codeaurora.org \
    --cc=charles.garcia-tobin@arm.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hanjun.guo@linaro.org \
    --cc=huxinwei@huawei.com \
    --cc=jcm@redhat.com \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linuxarm@huawei.com \
    --cc=lorenzo.pieralisi@arm.com \
    --cc=majun258@huawei.com \
    --cc=marc.zyngier@arm.com \
    --cc=okaya@codeaurora.org \
    --cc=rjw@rjwysocki.net \
    --cc=tglx@linutronix.de \
    --cc=wangkefeng.wang@huawei.com \
    --cc=yimin@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.