* [PATCH] pci: xgene: Add ECAM fixups
@ 2016-02-10 1:49 ` Duc Dang
0 siblings, 0 replies; 10+ messages in thread
From: Duc Dang @ 2016-02-10 1:49 UTC (permalink / raw)
To: Bjorn Helgaas, Tomasz Nowicki
Cc: Mark Salter, linux-pci, linux-arm-kernel, linux-kernel,
Tanmay Inamdar, Loc Ho, Feng Kan, patches, Duc Dang
X-Gene PCIe controller does not fully support ECAM.
This patch adds required ECAM fixup to allow X-Gene
PCIe controller to be functional in ACPI boot mode.
This patch is based on the original work of
Mark Salter <msalter@redhat.com> and depends on
Tomasz's PCIe ACPI series:
https://lkml.org/lkml/2016/2/4/646
Signed-off-by: Duc Dang <dhdang@apm.com>
---
drivers/pci/host/pci-xgene.c | 130 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 127 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c
index ae00ce2..5d3f74e 100644
--- a/drivers/pci/host/pci-xgene.c
+++ b/drivers/pci/host/pci-xgene.c
@@ -29,6 +29,11 @@
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
+#ifdef CONFIG_ACPI
+#include <linux/acpi.h>
+#include <linux/ecam.h>
+#include <linux/pci-acpi.h>
+#endif
#define PCIECORE_CTLANDSTATUS 0x50
#define PIM1_1L 0x80
@@ -76,6 +81,13 @@ struct xgene_pcie_port {
u32 version;
};
+static struct xgene_pcie_port *(*xgene_pcie_bus_to_port)(struct pci_bus *bus);
+
+static struct xgene_pcie_port *xgene_pcie_dt_bus_to_port(struct pci_bus *bus)
+{
+ return bus->sysdata;
+}
+
static inline u32 pcie_bar_low_val(u32 addr, u32 flags)
{
return (addr & PCI_BASE_ADDRESS_MEM_MASK) | flags;
@@ -87,7 +99,7 @@ static inline u32 pcie_bar_low_val(u32 addr, u32 flags)
*/
static void __iomem *xgene_pcie_get_cfg_base(struct pci_bus *bus)
{
- struct xgene_pcie_port *port = bus->sysdata;
+ struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus);
if (bus->number >= (bus->primary + 1))
return port->cfg_base + AXI_EP_CFG_ACCESS;
@@ -101,7 +113,7 @@ static void __iomem *xgene_pcie_get_cfg_base(struct pci_bus *bus)
*/
static void xgene_pcie_set_rtdid_reg(struct pci_bus *bus, uint devfn)
{
- struct xgene_pcie_port *port = bus->sysdata;
+ struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus);
unsigned int b, d, f;
u32 rtdid_val = 0;
@@ -148,7 +160,7 @@ static void __iomem *xgene_pcie_map_bus(struct pci_bus *bus, unsigned int devfn,
static int xgene_pcie_config_read32(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 *val)
{
- struct xgene_pcie_port *port = bus->sysdata;
+ struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus);
if (pci_generic_config_read32(bus, devfn, where & ~0x3, 4, val) !=
PCIBIOS_SUCCESSFUL)
@@ -509,6 +521,116 @@ static int xgene_pcie_setup(struct xgene_pcie_port *port,
return 0;
}
+#ifdef CONFIG_ACPI
+#define APM_OEM_ID "APM "
+#define APM_XGENE_TABLE_ID "XGENE "
+static LIST_HEAD(xgene_acpi_pcie_roots);
+
+struct xgene_pcie_acpi_root {
+ struct list_head list;
+ struct acpi_pci_root *root;
+ struct xgene_pcie_port port;
+};
+
+static struct xgene_pcie_port *xgene_pcie_acpi_bus_to_port(struct pci_bus *bus)
+{
+ struct acpi_pci_root *root = bus->sysdata;
+ struct xgene_pcie_acpi_root *xgene_root;
+
+ list_for_each_entry(xgene_root, &xgene_acpi_pcie_roots, list) {
+ if (xgene_root->root == root)
+ return &xgene_root->port;
+ }
+
+ return NULL;
+}
+
+static acpi_status xgene_pcie_find_csr_base(struct acpi_resource *acpi_res,
+ void *data)
+{
+ struct xgene_pcie_acpi_root *root = data;
+ struct acpi_resource_fixed_memory32 *fixed32;
+
+ if (acpi_res->type == ACPI_RESOURCE_TYPE_FIXED_MEMORY32) {
+ fixed32 = &acpi_res->data.fixed_memory32;
+ root->port.csr_base = ioremap(fixed32->address,
+ fixed32->address_length);
+ return AE_CTRL_TERMINATE;
+ }
+ return AE_OK;
+}
+
+static int xgene_pcie_mcfg_fixup(struct acpi_pci_root *root)
+{
+ struct pci_mmcfg_region *cfg;
+ struct acpi_device *device = root->device;
+ struct xgene_pcie_acpi_root *acpi_root;
+
+ acpi_root = kzalloc(sizeof(*acpi_root), GFP_KERNEL);
+ if (acpi_root == NULL)
+ return -ENOMEM;
+
+ INIT_LIST_HEAD(&acpi_root->list);
+ acpi_root->root = root;
+
+ cfg = pci_mmconfig_lookup(root->segment, root->secondary.start);
+ if (cfg)
+ acpi_root->port.cfg_base = cfg->virt;
+ else {
+ dev_err(&device->dev, "Failed to get CFG virt base\n");
+ return -ENODEV;
+ }
+
+ acpi_walk_resources(device->handle, METHOD_NAME__CRS,
+ xgene_pcie_find_csr_base, acpi_root);
+
+ if (!acpi_root->port.csr_base) {
+ kfree(acpi_root);
+ return -ENODEV;
+ }
+
+ /* Update bus_to_port method */
+ xgene_pcie_bus_to_port = xgene_pcie_acpi_bus_to_port;
+
+ /* Set to IP version 1 to disable Configuration-Request Retry Status */
+ acpi_root->port.version = XGENE_PCIE_IP_VER_1;
+
+ list_add(&acpi_root->list, &xgene_acpi_pcie_roots);
+
+ return 0;
+}
+
+static int xgene_pcie_acpi_match(struct pci_mcfg_fixup *fixup,
+ struct acpi_pci_root *root)
+{
+ struct acpi_table_header table_header;
+
+ if (acpi_get_table_header(ACPI_SIG_MCFG, 0, &table_header))
+ return 0;
+
+ if (strncmp(APM_OEM_ID, table_header.oem_id, ACPI_OEM_ID_SIZE))
+ return 0;
+
+ if (strncmp(APM_XGENE_TABLE_ID, table_header.oem_table_id,
+ ACPI_OEM_TABLE_ID_SIZE))
+ return 0;
+
+ /*
+ * MCFG table matches with X-Gene PCIe MCFG table.
+ * Now perform additional fix-up actions to prepare for
+ * X-Gene PCIe private data.
+ */
+ if (xgene_pcie_mcfg_fixup(root))
+ return 0;
+
+ return 1;
+}
+
+DECLARE_ACPI_MCFG_FIXUP(NULL, xgene_pcie_acpi_match, &xgene_pcie_ops,
+ PCI_MCFG_DOMAIN_ANY, PCI_MCFG_BUS_ANY);
+
+#endif /* CONFIG_ACPI */
+
static int xgene_pcie_probe_bridge(struct platform_device *pdev)
{
struct device_node *dn = pdev->dev.of_node;
@@ -518,6 +640,8 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
int ret;
LIST_HEAD(res);
+ xgene_pcie_bus_to_port = xgene_pcie_dt_bus_to_port;
+
port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL);
if (!port)
return -ENOMEM;
--
1.9.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH] pci: xgene: Add ECAM fixups
@ 2016-02-10 1:49 ` Duc Dang
0 siblings, 0 replies; 10+ messages in thread
From: Duc Dang @ 2016-02-10 1:49 UTC (permalink / raw)
To: linux-arm-kernel
X-Gene PCIe controller does not fully support ECAM.
This patch adds required ECAM fixup to allow X-Gene
PCIe controller to be functional in ACPI boot mode.
This patch is based on the original work of
Mark Salter <msalter@redhat.com> and depends on
Tomasz's PCIe ACPI series:
https://lkml.org/lkml/2016/2/4/646
Signed-off-by: Duc Dang <dhdang@apm.com>
---
drivers/pci/host/pci-xgene.c | 130 ++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 127 insertions(+), 3 deletions(-)
diff --git a/drivers/pci/host/pci-xgene.c b/drivers/pci/host/pci-xgene.c
index ae00ce2..5d3f74e 100644
--- a/drivers/pci/host/pci-xgene.c
+++ b/drivers/pci/host/pci-xgene.c
@@ -29,6 +29,11 @@
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
+#ifdef CONFIG_ACPI
+#include <linux/acpi.h>
+#include <linux/ecam.h>
+#include <linux/pci-acpi.h>
+#endif
#define PCIECORE_CTLANDSTATUS 0x50
#define PIM1_1L 0x80
@@ -76,6 +81,13 @@ struct xgene_pcie_port {
u32 version;
};
+static struct xgene_pcie_port *(*xgene_pcie_bus_to_port)(struct pci_bus *bus);
+
+static struct xgene_pcie_port *xgene_pcie_dt_bus_to_port(struct pci_bus *bus)
+{
+ return bus->sysdata;
+}
+
static inline u32 pcie_bar_low_val(u32 addr, u32 flags)
{
return (addr & PCI_BASE_ADDRESS_MEM_MASK) | flags;
@@ -87,7 +99,7 @@ static inline u32 pcie_bar_low_val(u32 addr, u32 flags)
*/
static void __iomem *xgene_pcie_get_cfg_base(struct pci_bus *bus)
{
- struct xgene_pcie_port *port = bus->sysdata;
+ struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus);
if (bus->number >= (bus->primary + 1))
return port->cfg_base + AXI_EP_CFG_ACCESS;
@@ -101,7 +113,7 @@ static void __iomem *xgene_pcie_get_cfg_base(struct pci_bus *bus)
*/
static void xgene_pcie_set_rtdid_reg(struct pci_bus *bus, uint devfn)
{
- struct xgene_pcie_port *port = bus->sysdata;
+ struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus);
unsigned int b, d, f;
u32 rtdid_val = 0;
@@ -148,7 +160,7 @@ static void __iomem *xgene_pcie_map_bus(struct pci_bus *bus, unsigned int devfn,
static int xgene_pcie_config_read32(struct pci_bus *bus, unsigned int devfn,
int where, int size, u32 *val)
{
- struct xgene_pcie_port *port = bus->sysdata;
+ struct xgene_pcie_port *port = xgene_pcie_bus_to_port(bus);
if (pci_generic_config_read32(bus, devfn, where & ~0x3, 4, val) !=
PCIBIOS_SUCCESSFUL)
@@ -509,6 +521,116 @@ static int xgene_pcie_setup(struct xgene_pcie_port *port,
return 0;
}
+#ifdef CONFIG_ACPI
+#define APM_OEM_ID "APM "
+#define APM_XGENE_TABLE_ID "XGENE "
+static LIST_HEAD(xgene_acpi_pcie_roots);
+
+struct xgene_pcie_acpi_root {
+ struct list_head list;
+ struct acpi_pci_root *root;
+ struct xgene_pcie_port port;
+};
+
+static struct xgene_pcie_port *xgene_pcie_acpi_bus_to_port(struct pci_bus *bus)
+{
+ struct acpi_pci_root *root = bus->sysdata;
+ struct xgene_pcie_acpi_root *xgene_root;
+
+ list_for_each_entry(xgene_root, &xgene_acpi_pcie_roots, list) {
+ if (xgene_root->root == root)
+ return &xgene_root->port;
+ }
+
+ return NULL;
+}
+
+static acpi_status xgene_pcie_find_csr_base(struct acpi_resource *acpi_res,
+ void *data)
+{
+ struct xgene_pcie_acpi_root *root = data;
+ struct acpi_resource_fixed_memory32 *fixed32;
+
+ if (acpi_res->type == ACPI_RESOURCE_TYPE_FIXED_MEMORY32) {
+ fixed32 = &acpi_res->data.fixed_memory32;
+ root->port.csr_base = ioremap(fixed32->address,
+ fixed32->address_length);
+ return AE_CTRL_TERMINATE;
+ }
+ return AE_OK;
+}
+
+static int xgene_pcie_mcfg_fixup(struct acpi_pci_root *root)
+{
+ struct pci_mmcfg_region *cfg;
+ struct acpi_device *device = root->device;
+ struct xgene_pcie_acpi_root *acpi_root;
+
+ acpi_root = kzalloc(sizeof(*acpi_root), GFP_KERNEL);
+ if (acpi_root == NULL)
+ return -ENOMEM;
+
+ INIT_LIST_HEAD(&acpi_root->list);
+ acpi_root->root = root;
+
+ cfg = pci_mmconfig_lookup(root->segment, root->secondary.start);
+ if (cfg)
+ acpi_root->port.cfg_base = cfg->virt;
+ else {
+ dev_err(&device->dev, "Failed to get CFG virt base\n");
+ return -ENODEV;
+ }
+
+ acpi_walk_resources(device->handle, METHOD_NAME__CRS,
+ xgene_pcie_find_csr_base, acpi_root);
+
+ if (!acpi_root->port.csr_base) {
+ kfree(acpi_root);
+ return -ENODEV;
+ }
+
+ /* Update bus_to_port method */
+ xgene_pcie_bus_to_port = xgene_pcie_acpi_bus_to_port;
+
+ /* Set to IP version 1 to disable Configuration-Request Retry Status */
+ acpi_root->port.version = XGENE_PCIE_IP_VER_1;
+
+ list_add(&acpi_root->list, &xgene_acpi_pcie_roots);
+
+ return 0;
+}
+
+static int xgene_pcie_acpi_match(struct pci_mcfg_fixup *fixup,
+ struct acpi_pci_root *root)
+{
+ struct acpi_table_header table_header;
+
+ if (acpi_get_table_header(ACPI_SIG_MCFG, 0, &table_header))
+ return 0;
+
+ if (strncmp(APM_OEM_ID, table_header.oem_id, ACPI_OEM_ID_SIZE))
+ return 0;
+
+ if (strncmp(APM_XGENE_TABLE_ID, table_header.oem_table_id,
+ ACPI_OEM_TABLE_ID_SIZE))
+ return 0;
+
+ /*
+ * MCFG table matches with X-Gene PCIe MCFG table.
+ * Now perform additional fix-up actions to prepare for
+ * X-Gene PCIe private data.
+ */
+ if (xgene_pcie_mcfg_fixup(root))
+ return 0;
+
+ return 1;
+}
+
+DECLARE_ACPI_MCFG_FIXUP(NULL, xgene_pcie_acpi_match, &xgene_pcie_ops,
+ PCI_MCFG_DOMAIN_ANY, PCI_MCFG_BUS_ANY);
+
+#endif /* CONFIG_ACPI */
+
static int xgene_pcie_probe_bridge(struct platform_device *pdev)
{
struct device_node *dn = pdev->dev.of_node;
@@ -518,6 +640,8 @@ static int xgene_pcie_probe_bridge(struct platform_device *pdev)
int ret;
LIST_HEAD(res);
+ xgene_pcie_bus_to_port = xgene_pcie_dt_bus_to_port;
+
port = devm_kzalloc(&pdev->dev, sizeof(*port), GFP_KERNEL);
if (!port)
return -ENOMEM;
--
1.9.1
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH] pci: xgene: Add ECAM fixups
2016-02-10 1:49 ` Duc Dang
@ 2016-02-10 4:10 ` kbuild test robot
-1 siblings, 0 replies; 10+ messages in thread
From: kbuild test robot @ 2016-02-10 4:10 UTC (permalink / raw)
To: Duc Dang
Cc: kbuild-all, Bjorn Helgaas, Tomasz Nowicki, Mark Salter,
linux-pci, linux-arm-kernel, linux-kernel, Tanmay Inamdar,
Loc Ho, Feng Kan, patches, Duc Dang
[-- Attachment #1: Type: text/plain, Size: 1370 bytes --]
Hi Duc,
[auto build test ERROR on pci/next]
[also build test ERROR on v4.5-rc3 next-20160209]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Duc-Dang/pci-xgene-Add-ECAM-fixups/20160210-095702
base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
config: arm64-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm64
All errors (new ones prefixed by >>):
>> drivers/pci/host/pci-xgene.c:34:24: fatal error: linux/ecam.h: No such file or directory
#include <linux/ecam.h>
^
compilation terminated.
vim +34 drivers/pci/host/pci-xgene.c
28 #include <linux/of_pci.h>
29 #include <linux/pci.h>
30 #include <linux/platform_device.h>
31 #include <linux/slab.h>
32 #ifdef CONFIG_ACPI
33 #include <linux/acpi.h>
> 34 #include <linux/ecam.h>
35 #include <linux/pci-acpi.h>
36 #endif
37
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/octet-stream, Size: 48147 bytes --]
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] pci: xgene: Add ECAM fixups
@ 2016-02-10 4:10 ` kbuild test robot
0 siblings, 0 replies; 10+ messages in thread
From: kbuild test robot @ 2016-02-10 4:10 UTC (permalink / raw)
To: linux-arm-kernel
Hi Duc,
[auto build test ERROR on pci/next]
[also build test ERROR on v4.5-rc3 next-20160209]
[if your patch is applied to the wrong git tree, please drop us a note to help improving the system]
url: https://github.com/0day-ci/linux/commits/Duc-Dang/pci-xgene-Add-ECAM-fixups/20160210-095702
base: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git next
config: arm64-allyesconfig (attached as .config)
reproduce:
wget https://git.kernel.org/cgit/linux/kernel/git/wfg/lkp-tests.git/plain/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
make.cross ARCH=arm64
All errors (new ones prefixed by >>):
>> drivers/pci/host/pci-xgene.c:34:24: fatal error: linux/ecam.h: No such file or directory
#include <linux/ecam.h>
^
compilation terminated.
vim +34 drivers/pci/host/pci-xgene.c
28 #include <linux/of_pci.h>
29 #include <linux/pci.h>
30 #include <linux/platform_device.h>
31 #include <linux/slab.h>
32 #ifdef CONFIG_ACPI
33 #include <linux/acpi.h>
> 34 #include <linux/ecam.h>
35 #include <linux/pci-acpi.h>
36 #endif
37
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
-------------- next part --------------
A non-text attachment was scrubbed...
Name: .config.gz
Type: application/octet-stream
Size: 48147 bytes
Desc: not available
URL: <http://lists.infradead.org/pipermail/linux-arm-kernel/attachments/20160210/ef5471ae/attachment-0001.obj>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] pci: xgene: Add ECAM fixups
2016-02-10 1:49 ` Duc Dang
@ 2016-02-10 14:28 ` Arnd Bergmann
-1 siblings, 0 replies; 10+ messages in thread
From: Arnd Bergmann @ 2016-02-10 14:28 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Duc Dang, Bjorn Helgaas, Tomasz Nowicki, Feng Kan, linux-pci,
patches, linux-kernel, Loc Ho, Mark Salter, Tanmay Inamdar
On Tuesday 09 February 2016 17:49:44 Duc Dang wrote:
> X-Gene PCIe controller does not fully support ECAM.
> This patch adds required ECAM fixup to allow X-Gene
> PCIe controller to be functional in ACPI boot mode.
>
> This patch is based on the original work of
> Mark Salter <msalter@redhat.com> and depends on
> Tomasz's PCIe ACPI series:
> https://lkml.org/lkml/2016/2/4/646
>
> Signed-off-by: Duc Dang <dhdang@apm.com>
> ---
This really has nothing to do with the PCI host device driver, please
keep it in a separate file in drivers/acpi/.
Arnd
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] pci: xgene: Add ECAM fixups
@ 2016-02-10 14:28 ` Arnd Bergmann
0 siblings, 0 replies; 10+ messages in thread
From: Arnd Bergmann @ 2016-02-10 14:28 UTC (permalink / raw)
To: linux-arm-kernel
On Tuesday 09 February 2016 17:49:44 Duc Dang wrote:
> X-Gene PCIe controller does not fully support ECAM.
> This patch adds required ECAM fixup to allow X-Gene
> PCIe controller to be functional in ACPI boot mode.
>
> This patch is based on the original work of
> Mark Salter <msalter@redhat.com> and depends on
> Tomasz's PCIe ACPI series:
> https://lkml.org/lkml/2016/2/4/646
>
> Signed-off-by: Duc Dang <dhdang@apm.com>
> ---
This really has nothing to do with the PCI host device driver, please
keep it in a separate file in drivers/acpi/.
Arnd
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] pci: xgene: Add ECAM fixups
2016-02-10 14:28 ` Arnd Bergmann
@ 2016-04-15 21:30 ` Duc Dang
-1 siblings, 0 replies; 10+ messages in thread
From: Duc Dang @ 2016-04-15 21:30 UTC (permalink / raw)
To: Arnd Bergmann
Cc: linux-arm, Bjorn Helgaas, Tomasz Nowicki, Feng Kan, linux-pci,
patches, Linux Kernel Mailing List, Loc Ho, Mark Salter,
Tanmay Inamdar
On Wed, Feb 10, 2016 at 6:28 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Tuesday 09 February 2016 17:49:44 Duc Dang wrote:
>> X-Gene PCIe controller does not fully support ECAM.
>> This patch adds required ECAM fixup to allow X-Gene
>> PCIe controller to be functional in ACPI boot mode.
>>
>> This patch is based on the original work of
>> Mark Salter <msalter@redhat.com> and depends on
>> Tomasz's PCIe ACPI series:
>> https://lkml.org/lkml/2016/2/4/646
>>
>> Signed-off-by: Duc Dang <dhdang@apm.com>
>> ---
>
> This really has nothing to do with the PCI host device driver, please
> keep it in a separate file in drivers/acpi/.
Hi Arnd,
With Tomasz latest PCIe ACPI series
(https://lkml.org/lkml/2016/4/15/594), do you think it still better to
keep the ACPI ECAM fixup code in a separate file in drivers/acpi
directory?
Regards,
Duc Dang.
>
> Arnd
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] pci: xgene: Add ECAM fixups
@ 2016-04-15 21:30 ` Duc Dang
0 siblings, 0 replies; 10+ messages in thread
From: Duc Dang @ 2016-04-15 21:30 UTC (permalink / raw)
To: linux-arm-kernel
On Wed, Feb 10, 2016 at 6:28 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> On Tuesday 09 February 2016 17:49:44 Duc Dang wrote:
>> X-Gene PCIe controller does not fully support ECAM.
>> This patch adds required ECAM fixup to allow X-Gene
>> PCIe controller to be functional in ACPI boot mode.
>>
>> This patch is based on the original work of
>> Mark Salter <msalter@redhat.com> and depends on
>> Tomasz's PCIe ACPI series:
>> https://lkml.org/lkml/2016/2/4/646
>>
>> Signed-off-by: Duc Dang <dhdang@apm.com>
>> ---
>
> This really has nothing to do with the PCI host device driver, please
> keep it in a separate file in drivers/acpi/.
Hi Arnd,
With Tomasz latest PCIe ACPI series
(https://lkml.org/lkml/2016/4/15/594), do you think it still better to
keep the ACPI ECAM fixup code in a separate file in drivers/acpi
directory?
Regards,
Duc Dang.
>
> Arnd
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH] pci: xgene: Add ECAM fixups
2016-04-15 21:30 ` Duc Dang
@ 2016-04-16 7:43 ` Arnd Bergmann
-1 siblings, 0 replies; 10+ messages in thread
From: Arnd Bergmann @ 2016-04-16 7:43 UTC (permalink / raw)
To: linux-arm-kernel
Cc: Duc Dang, Feng Kan, Tomasz Nowicki, Mark Salter, patches,
Linux Kernel Mailing List, Loc Ho, linux-pci, Bjorn Helgaas,
Tanmay Inamdar
On Friday 15 April 2016 14:30:56 Duc Dang wrote:
> On Wed, Feb 10, 2016 at 6:28 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Tuesday 09 February 2016 17:49:44 Duc Dang wrote:
> >> X-Gene PCIe controller does not fully support ECAM.
> >> This patch adds required ECAM fixup to allow X-Gene
> >> PCIe controller to be functional in ACPI boot mode.
> >>
> >> This patch is based on the original work of
> >> Mark Salter <msalter@redhat.com> and depends on
> >> Tomasz's PCIe ACPI series:
> >> https://lkml.org/lkml/2016/2/4/646
> >>
> >> Signed-off-by: Duc Dang <dhdang@apm.com>
> >> ---
> >
> > This really has nothing to do with the PCI host device driver, please
> > keep it in a separate file in drivers/acpi/.
>
> Hi Arnd,
>
> With Tomasz latest PCIe ACPI series
> (https://lkml.org/lkml/2016/4/15/594), do you think it still better to
> keep the ACPI ECAM fixup code in a separate file in drivers/acpi
> directory?
Yes, I made the same comment for the cavium PCI workaround in that
series.
Arnd
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH] pci: xgene: Add ECAM fixups
@ 2016-04-16 7:43 ` Arnd Bergmann
0 siblings, 0 replies; 10+ messages in thread
From: Arnd Bergmann @ 2016-04-16 7:43 UTC (permalink / raw)
To: linux-arm-kernel
On Friday 15 April 2016 14:30:56 Duc Dang wrote:
> On Wed, Feb 10, 2016 at 6:28 AM, Arnd Bergmann <arnd@arndb.de> wrote:
> > On Tuesday 09 February 2016 17:49:44 Duc Dang wrote:
> >> X-Gene PCIe controller does not fully support ECAM.
> >> This patch adds required ECAM fixup to allow X-Gene
> >> PCIe controller to be functional in ACPI boot mode.
> >>
> >> This patch is based on the original work of
> >> Mark Salter <msalter@redhat.com> and depends on
> >> Tomasz's PCIe ACPI series:
> >> https://lkml.org/lkml/2016/2/4/646
> >>
> >> Signed-off-by: Duc Dang <dhdang@apm.com>
> >> ---
> >
> > This really has nothing to do with the PCI host device driver, please
> > keep it in a separate file in drivers/acpi/.
>
> Hi Arnd,
>
> With Tomasz latest PCIe ACPI series
> (https://lkml.org/lkml/2016/4/15/594), do you think it still better to
> keep the ACPI ECAM fixup code in a separate file in drivers/acpi
> directory?
Yes, I made the same comment for the cavium PCI workaround in that
series.
Arnd
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2016-04-16 7:44 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-02-10 1:49 [PATCH] pci: xgene: Add ECAM fixups Duc Dang
2016-02-10 1:49 ` Duc Dang
2016-02-10 4:10 ` kbuild test robot
2016-02-10 4:10 ` kbuild test robot
2016-02-10 14:28 ` Arnd Bergmann
2016-02-10 14:28 ` Arnd Bergmann
2016-04-15 21:30 ` Duc Dang
2016-04-15 21:30 ` Duc Dang
2016-04-16 7:43 ` Arnd Bergmann
2016-04-16 7:43 ` Arnd Bergmann
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.