All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code
@ 2012-07-24 10:20 Jia Hongtao
  2012-07-24 10:20 ` [PATCH 2/6] powerpc/fsl-pci: Check swiotlb enable at board setup_arch stage Jia Hongtao
                   ` (5 more replies)
  0 siblings, 6 replies; 36+ messages in thread
From: Jia Hongtao @ 2012-07-24 10:20 UTC (permalink / raw)
  To: linuxppc-dev, galak, B07421; +Cc: b38951

We unified the Freescale pci/pcie initialization by changing the fsl_pci
to a platform driver.

In previous version pci/pcie initialization is in platform code which
Initialize pci bridge base on EP/RC or host/agent settings.

Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 arch/powerpc/sysdev/fsl_pci.c |   60 +++++++++++++++++++++++++++++++++++++++++
 arch/powerpc/sysdev/fsl_pci.h |    1 +
 2 files changed, 61 insertions(+), 0 deletions(-)

diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index edbf794..feed364 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -807,3 +807,63 @@ u64 fsl_pci_immrbar_base(struct pci_controller *hose)
 
 	return 0;
 }
+
+#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
+static const struct of_device_id pci_ids[] = {
+	{ .compatible = "fsl,mpc8540-pci", },
+	{ .compatible = "fsl,mpc8548-pcie", },
+	{ .compatible = "fsl,mpc8641-pcie", },
+	{ .compatible = "fsl,p1022-pcie", },
+	{ .compatible = "fsl,p1010-pcie", },
+	{ .compatible = "fsl,p1023-pcie", },
+	{ .compatible = "fsl,p4080-pcie", },
+	{ .compatible = "fsl,qoriq-pcie-v2.3", },
+	{ .compatible = "fsl,qoriq-pcie-v2.2", },
+	{},
+};
+
+int primary_phb_addr;
+static int __devinit fsl_pci_probe(struct platform_device *pdev)
+{
+	struct pci_controller *hose;
+	bool is_primary;
+
+	if (of_match_node(pci_ids, pdev->dev.of_node)) {
+		struct resource rsrc;
+		of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
+		is_primary = ((rsrc.start & 0xfffff) == primary_phb_addr);
+		fsl_add_bridge(pdev->dev.of_node, is_primary);
+
+#ifdef CONFIG_SWIOTLB
+		hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
+		/*
+		 * if we couldn't map all of DRAM via the dma windows
+		 * we need SWIOTLB to handle buffers located outside of
+		 * dma capable memory region
+		 */
+		if (memblock_end_of_DRAM() > hose->dma_window_base_cur
+				+ hose->dma_window_size) {
+			ppc_swiotlb_enable = 1;
+			set_pci_dma_ops(&swiotlb_dma_ops);
+			ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
+		}
+#endif
+	}
+
+	return 0;
+}
+
+static struct platform_driver fsl_pci_driver = {
+	.driver = {
+		.name = "fsl-pci",
+		.of_match_table = pci_ids,
+	},
+	.probe = fsl_pci_probe,
+};
+
+static int __init fsl_pci_init(void)
+{
+	return platform_driver_register(&fsl_pci_driver);
+}
+arch_initcall(fsl_pci_init);
+#endif
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h
index a39ed5c..df9fc44 100644
--- a/arch/powerpc/sysdev/fsl_pci.h
+++ b/arch/powerpc/sysdev/fsl_pci.h
@@ -88,6 +88,7 @@ struct ccsr_pci {
 	__be32	pex_err_cap_r3;		/* 0x.e34 - PCIE error capture register 0 */
 };
 
+extern int primary_phb_addr;
 extern int fsl_add_bridge(struct device_node *dev, int is_primary);
 extern void fsl_pcibios_fixup_bus(struct pci_bus *bus);
 extern int mpc83xx_add_bridge(struct device_node *dev);
-- 
1.7.5.1

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

* [PATCH 2/6] powerpc/fsl-pci: Check swiotlb enable at board setup_arch stage
  2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
@ 2012-07-24 10:20 ` Jia Hongtao
  2012-07-24 10:20 ` [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node Jia Hongtao
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 36+ messages in thread
From: Jia Hongtao @ 2012-07-24 10:20 UTC (permalink / raw)
  To: linuxppc-dev, galak, B07421; +Cc: b38951

PCI initialization is called later than swiotlb_init() due to PCI controller is
a platform driver now. So we provide a function which called at board setup_arch
stage to address swiotlb enable by parsing pci ranges.

Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 arch/powerpc/sysdev/fsl_pci.c |  125 ++++++++++++++++++++++++++++++++++++-----
 arch/powerpc/sysdev/fsl_pci.h |    6 ++
 2 files changed, 116 insertions(+), 15 deletions(-)

diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index feed364..99a3e78 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -822,6 +822,116 @@ static const struct of_device_id pci_ids[] = {
 	{},
 };
 
+#ifdef CONFIG_SWIOTLB
+void pci_check_swiotlb(void)
+{
+	const u32 *ranges;
+	int rlen;
+	int pna;
+	int np;
+	struct device_node *node;
+	int memno;
+	u32 pci_space;
+	unsigned long long pci_addr, cpu_addr, pci_next, cpu_next, size;
+	unsigned long long pci_addr_lo = ULLONG_MAX;
+	unsigned long long pci_addr_hi = 0x0;
+	dma_addr_t pci_dma_sz;
+
+	for_each_node_by_type(node, "pci") {
+		if (of_match_node(pci_ids, node)) {
+			memno = 0;
+			pna = of_n_addr_cells(node);
+			np = pna + 5;
+			/* Get ranges property */
+			ranges = of_get_property(node, "ranges", &rlen);
+			if (ranges == NULL)
+				return;
+
+			/* Parse outbound MEM window range */
+			while ((rlen -= np * 4) >= 0) {
+				/* Read next ranges element */
+				pci_space = ranges[0];
+				if (!((pci_space >> 24) & 0x2)) {
+					ranges += np;
+					break;
+				}
+				pci_addr = of_read_number(ranges + 1, 2);
+				cpu_addr = of_translate_address(
+						node, ranges + 3);
+				size = of_read_number(ranges + pna + 3, 2);
+				ranges += np;
+
+				/*
+				 * If we failed translation or got a zero-sized
+				 * region (some FW try to feed us with non
+				 * sensical zero sized regions such as power3
+				 * which look like some kind of attempt at
+				 * exposing the VGA memory hole)
+				 */
+				if (cpu_addr == OF_BAD_ADDR || size == 0)
+					continue;
+
+				/*
+				 * Now consume following elements while they
+				 * are contiguous
+				 */
+				for (; rlen >= np * sizeof(u32);
+						ranges += np, rlen -= np * 4) {
+					if (ranges[0] != pci_space)
+						break;
+					pci_next = of_read_number(ranges + 1,
+							2);
+					cpu_next = of_translate_address(node,
+							ranges + 3);
+					if (pci_next != pci_addr + size ||
+						cpu_next != cpu_addr + size)
+						break;
+					size += of_read_number(
+							ranges + pna + 3, 2);
+				}
+
+				/* We support only 3 memory ranges */
+				if (memno >= 3) {
+					printk(KERN_INFO
+							" \\--> Skipped (too many) !\n");
+					continue;
+				}
+
+				pci_addr_lo = min(pci_addr, pci_addr_lo);
+				pci_addr_hi = max(pci_addr + size, pci_addr_hi);
+				memno++;
+			}
+		}
+	}
+
+	/* Get PEXCSRBAR size (equal to CCSR size) */
+	node = of_find_node_by_type(NULL, "soc");
+	ranges = of_get_property(node, "ranges", &rlen);
+	if (ranges == NULL)
+		return;
+
+	size = of_read_number(ranges + 3, 1);
+	of_node_put(node);
+
+	if (pci_addr_hi < (0x100000000ull - size))
+		pci_dma_sz = pci_addr_lo;
+	else
+		pci_dma_sz = pci_addr_lo - size;
+
+	/*
+	 * if we couldn't map all of DRAM via the dma windows
+	 * we need SWIOTLB to handle buffers located outside of
+	 * dma capable memory region
+	 */
+	if (memblock_end_of_DRAM() > pci_dma_sz) {
+		ppc_swiotlb_enable = 1;
+		set_pci_dma_ops(&swiotlb_dma_ops);
+		ppc_md.pci_dma_dev_setup =
+			pci_dma_dev_setup_swiotlb;
+	}
+}
+#endif
+
 int primary_phb_addr;
 static int __devinit fsl_pci_probe(struct platform_device *pdev)
 {
@@ -833,21 +943,6 @@ static int __devinit fsl_pci_probe(struct platform_device *pdev)
 		of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
 		is_primary = ((rsrc.start & 0xfffff) == primary_phb_addr);
 		fsl_add_bridge(pdev->dev.of_node, is_primary);
-
-#ifdef CONFIG_SWIOTLB
-		hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
-		/*
-		 * if we couldn't map all of DRAM via the dma windows
-		 * we need SWIOTLB to handle buffers located outside of
-		 * dma capable memory region
-		 */
-		if (memblock_end_of_DRAM() > hose->dma_window_base_cur
-				+ hose->dma_window_size) {
-			ppc_swiotlb_enable = 1;
-			set_pci_dma_ops(&swiotlb_dma_ops);
-			ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
-		}
-#endif
 	}
 
 	return 0;
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h
index df9fc44..c2c1de5 100644
--- a/arch/powerpc/sysdev/fsl_pci.h
+++ b/arch/powerpc/sysdev/fsl_pci.h
@@ -94,5 +94,11 @@ extern void fsl_pcibios_fixup_bus(struct pci_bus *bus);
 extern int mpc83xx_add_bridge(struct device_node *dev);
 u64 fsl_pci_immrbar_base(struct pci_controller *hose);
 
+#ifdef CONFIG_SWIOTLB
+extern void pci_check_swiotlb(void);
+#else
+static inline void pci_check_swiotlb(void) {}
+#endif
+
 #endif /* __POWERPC_FSL_PCI_H */
 #endif /* __KERNEL__ */
-- 
1.7.5.1

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

* [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
  2012-07-24 10:20 ` [PATCH 2/6] powerpc/fsl-pci: Check swiotlb enable at board setup_arch stage Jia Hongtao
@ 2012-07-24 10:20 ` Jia Hongtao
  2012-07-24 18:47   ` Scott Wood
  2012-07-24 10:20 ` [PATCH 4/6] powerpc/mpc85xx_ds: convert to unified PCI init Jia Hongtao
                   ` (3 subsequent siblings)
  5 siblings, 1 reply; 36+ messages in thread
From: Jia Hongtao @ 2012-07-24 10:20 UTC (permalink / raw)
  To: linuxppc-dev, galak, B07421; +Cc: b38951

PCI host bridge is primary bus if it contains an ISA node. But not all boards
fit this rule. Device tree should be updated for all these boards.

Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 arch/powerpc/include/asm/pci-bridge.h |    1 +
 arch/powerpc/sysdev/fsl_pci.c         |   31 ++++++++++++++++++++++++-------
 arch/powerpc/sysdev/fsl_pci.h         |   12 +++++++++++-
 3 files changed, 36 insertions(+), 8 deletions(-)

diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
index ac39e6a..b48fa7f 100644
--- a/arch/powerpc/include/asm/pci-bridge.h
+++ b/arch/powerpc/include/asm/pci-bridge.h
@@ -20,6 +20,7 @@ struct device_node;
 struct pci_controller {
 	struct pci_bus *bus;
 	char is_dynamic;
+	int is_primary;
 #ifdef CONFIG_PPC64
 	int node;
 #endif
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 99a3e78..2a369be 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -453,6 +453,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
 
 	hose->first_busno = bus_range ? bus_range[0] : 0x0;
 	hose->last_busno = bus_range ? bus_range[1] : 0xff;
+	hose->is_primary = is_primary;
 
 	setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
 		PPC_INDIRECT_TYPE_BIG_ENDIAN);
@@ -932,18 +933,34 @@ void pci_check_swiotlb(void)
 }
 #endif
 
-int primary_phb_addr;
+/*
+ * Recursively scan all the children nodes of parent and find out if there
+ * is "isa" node. Return 1 if parent has isa node otherwise return 0.
+ */
+int has_isa_node(struct device_node *parent)
+{
+	static int result;
+	struct device_node *cur_child;
+
+	cur_child = NULL;
+	result = 0;
+	while (!result && (cur_child = of_get_next_child(parent, cur_child))) {
+		/* Get "isa" node and return 1 */
+		if (of_node_cmp(cur_child->type, "isa") == 0)
+			return result = 1;
+		has_isa_node(cur_child);
+	}
+
+	return result;
+}
+
 static int __devinit fsl_pci_probe(struct platform_device *pdev)
 {
-	struct pci_controller *hose;
 	bool is_primary;
+	is_primary = has_isa_node(pdev->dev.of_node);
 
-	if (of_match_node(pci_ids, pdev->dev.of_node)) {
-		struct resource rsrc;
-		of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
-		is_primary = ((rsrc.start & 0xfffff) == primary_phb_addr);
+	if (of_match_node(pci_ids, pdev->dev.of_node))
 		fsl_add_bridge(pdev->dev.of_node, is_primary);
-	}
 
 	return 0;
 }
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h
index c2c1de5..abbc09d 100644
--- a/arch/powerpc/sysdev/fsl_pci.h
+++ b/arch/powerpc/sysdev/fsl_pci.h
@@ -88,7 +88,17 @@ struct ccsr_pci {
 	__be32	pex_err_cap_r3;		/* 0x.e34 - PCIE error capture register 0 */
 };
 
-extern int primary_phb_addr;
+
+#ifdef CONFIG_SUSPEND
+struct fsl_pci_private_data {
+	int inbound_num;
+	struct pci_outbound_window_regs __iomem *pci_pow;
+	struct pci_inbound_window_regs __iomem *pci_piw;
+	void *saved_regs;
+};
+#endif
+
+extern int is_has_isa_node(struct device_node *parent);
 extern int fsl_add_bridge(struct device_node *dev, int is_primary);
 extern void fsl_pcibios_fixup_bus(struct pci_bus *bus);
 extern int mpc83xx_add_bridge(struct device_node *dev);
-- 
1.7.5.1

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

* [PATCH 4/6] powerpc/mpc85xx_ds: convert to unified PCI init
  2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
  2012-07-24 10:20 ` [PATCH 2/6] powerpc/fsl-pci: Check swiotlb enable at board setup_arch stage Jia Hongtao
  2012-07-24 10:20 ` [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node Jia Hongtao
@ 2012-07-24 10:20 ` Jia Hongtao
  2012-07-24 10:20 ` [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 36+ messages in thread
From: Jia Hongtao @ 2012-07-24 10:20 UTC (permalink / raw)
  To: linuxppc-dev, galak, B07421; +Cc: b38951

PCI initialization is now done by PCI controller driver. In board setup_arch
stage we don't need PCI init any more but swiotlb should be determined at this
stage.

Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 arch/powerpc/platforms/85xx/common.c     |    9 ++++
 arch/powerpc/platforms/85xx/mpc85xx_ds.c |   75 +++--------------------------
 2 files changed, 17 insertions(+), 67 deletions(-)

diff --git a/arch/powerpc/platforms/85xx/common.c b/arch/powerpc/platforms/85xx/common.c
index 67dac22..303fedb 100644
--- a/arch/powerpc/platforms/85xx/common.c
+++ b/arch/powerpc/platforms/85xx/common.c
@@ -27,6 +27,15 @@ static struct of_device_id __initdata mpc85xx_common_ids[] = {
 	{ .compatible = "fsl,mpc8548-guts", },
 	/* Probably unnecessary? */
 	{ .compatible = "gpio-leds", },
+	/* For all PCI controllers */
+	{ .compatible = "fsl,mpc8540-pci", },
+	{ .compatible = "fsl,mpc8548-pcie", },
+	{ .compatible = "fsl,p1022-pcie", },
+	{ .compatible = "fsl,p1010-pcie", },
+	{ .compatible = "fsl,p1023-pcie", },
+	{ .compatible = "fsl,p4080-pcie", },
+	{ .compatible = "fsl,qoriq-pcie-v2.3", },
+	{ .compatible = "fsl,qoriq-pcie-v2.2", },
 	{},
 };
 
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index d30f6c4..b7ef007 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -114,22 +114,14 @@ void __init mpc85xx_ds_pic_init(void)
 }
 
 #ifdef CONFIG_PCI
-static int primary_phb_addr;
 extern int uli_exclude_device(struct pci_controller *hose,
 				u_char bus, u_char devfn);
 
 static int mpc85xx_exclude_device(struct pci_controller *hose,
 				   u_char bus, u_char devfn)
 {
-	struct device_node* node;
-	struct resource rsrc;
-
-	node = hose->dn;
-	of_address_to_resource(node, 0, &rsrc);
-
-	if ((rsrc.start & 0xfffff) == primary_phb_addr) {
+	if (hose->is_primary)
 		return uli_exclude_device(hose, bus, devfn);
-	}
 
 	return PCIBIOS_SUCCESSFUL;
 }
@@ -140,46 +132,16 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
  */
 static void __init mpc85xx_ds_setup_arch(void)
 {
-#ifdef CONFIG_PCI
-	struct device_node *np;
-	struct pci_controller *hose;
-#endif
-	dma_addr_t max = 0xffffffff;
-
 	if (ppc_md.progress)
 		ppc_md.progress("mpc85xx_ds_setup_arch()", 0);
 
 #ifdef CONFIG_PCI
-	for_each_node_by_type(np, "pci") {
-		if (of_device_is_compatible(np, "fsl,mpc8540-pci") ||
-		    of_device_is_compatible(np, "fsl,mpc8548-pcie") ||
-		    of_device_is_compatible(np, "fsl,p2020-pcie")) {
-			struct resource rsrc;
-			of_address_to_resource(np, 0, &rsrc);
-			if ((rsrc.start & 0xfffff) == primary_phb_addr)
-				fsl_add_bridge(np, 1);
-			else
-				fsl_add_bridge(np, 0);
-
-			hose = pci_find_hose_for_OF_device(np);
-			max = min(max, hose->dma_window_base_cur +
-					hose->dma_window_size);
-		}
-	}
-
+	pci_check_swiotlb();
 	ppc_md.pci_exclude_device = mpc85xx_exclude_device;
 #endif
 
 	mpc85xx_smp_init();
 
-#ifdef CONFIG_SWIOTLB
-	if ((memblock_end_of_DRAM() - 1) > max) {
-		ppc_swiotlb_enable = 1;
-		set_pci_dma_ops(&swiotlb_dma_ops);
-		ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
-	}
-#endif
-
 	printk("MPC85xx DS board from Freescale Semiconductor\n");
 }
 
@@ -190,19 +152,12 @@ static int __init mpc8544_ds_probe(void)
 {
 	unsigned long root = of_get_flat_dt_root();
 
-	if (of_flat_dt_is_compatible(root, "MPC8544DS")) {
-#ifdef CONFIG_PCI
-		primary_phb_addr = 0xb000;
-#endif
-		return 1;
-	}
-
-	return 0;
+	return of_flat_dt_is_compatible(root, "MPC8544DS");
 }
 
-machine_device_initcall(mpc8544_ds, mpc85xx_common_publish_devices);
-machine_device_initcall(mpc8572_ds, mpc85xx_common_publish_devices);
-machine_device_initcall(p2020_ds, mpc85xx_common_publish_devices);
+machine_arch_initcall(mpc8544_ds, mpc85xx_common_publish_devices);
+machine_arch_initcall(mpc8572_ds, mpc85xx_common_publish_devices);
+machine_arch_initcall(p2020_ds, mpc85xx_common_publish_devices);
 
 machine_arch_initcall(mpc8544_ds, swiotlb_setup_bus_notifier);
 machine_arch_initcall(mpc8572_ds, swiotlb_setup_bus_notifier);
@@ -215,14 +170,7 @@ static int __init mpc8572_ds_probe(void)
 {
 	unsigned long root = of_get_flat_dt_root();
 
-	if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS")) {
-#ifdef CONFIG_PCI
-		primary_phb_addr = 0x8000;
-#endif
-		return 1;
-	}
-
-	return 0;
+	return of_flat_dt_is_compatible(root, "fsl,MPC8572DS");
 }
 
 /*
@@ -232,14 +180,7 @@ static int __init p2020_ds_probe(void)
 {
 	unsigned long root = of_get_flat_dt_root();
 
-	if (of_flat_dt_is_compatible(root, "fsl,P2020DS")) {
-#ifdef CONFIG_PCI
-		primary_phb_addr = 0x9000;
-#endif
-		return 1;
-	}
-
-	return 0;
+	return of_flat_dt_is_compatible(root, "fsl,P2020DS");
 }
 
 define_machine(mpc8544_ds) {
-- 
1.7.5.1

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

* [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
                   ` (2 preceding siblings ...)
  2012-07-24 10:20 ` [PATCH 4/6] powerpc/mpc85xx_ds: convert to unified PCI init Jia Hongtao
@ 2012-07-24 10:20 ` Jia Hongtao
  2012-07-27 13:24   ` Kumar Gala
  2012-07-24 10:20 ` [PATCH 6/6] Edac/85xx: Register mpc85xx_pci_err_driver by fsl_pci_driver Jia Hongtao
  2012-07-24 18:42 ` [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Scott Wood
  5 siblings, 1 reply; 36+ messages in thread
From: Jia Hongtao @ 2012-07-24 10:20 UTC (permalink / raw)
  To: linuxppc-dev, galak, B07421; +Cc: b38951

Power supply for PCI inbound/outbound window registers is off when system
go to deep-sleep state. We save the values of registers before suspend
and restore to registers after resume.

Signed-off-by: Jiang Yutang <b14898@freescale.com>
Signed-off-by: Jia Hongtao <B38951@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
---
 arch/powerpc/include/asm/pci-bridge.h |    2 +-
 arch/powerpc/sysdev/fsl_pci.c         |  121 +++++++++++++++++++++++++++++++++
 2 files changed, 122 insertions(+), 1 deletions(-)

diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
index b48fa7f..f0f00a7 100644
--- a/arch/powerpc/include/asm/pci-bridge.h
+++ b/arch/powerpc/include/asm/pci-bridge.h
@@ -90,9 +90,9 @@ struct pci_controller {
 
 #ifdef CONFIG_PPC64
 	unsigned long buid;
+#endif	/* CONFIG_PPC64 */
 
 	void *private_data;
-#endif	/* CONFIG_PPC64 */
 };
 
 /* These are used for config access before all the PCI probing
diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index 2a369be..a14ee6f 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -965,12 +965,133 @@ static int __devinit fsl_pci_probe(struct platform_device *pdev)
 	return 0;
 }
 
+#ifdef CONFIG_SUSPEND
+
+#define PCI_POW_PIW_OFFSET	0xc00
+#define PCI_POW_PIW_SIZE	0x200
+#define PCI_POW_NUMBER		5
+
+static int fsl_pci_suspend(struct platform_device *pdev, pm_message_t state)
+{
+	struct pci_controller *hose;
+	struct pci_outbound_window_regs *pci_saved_pow;
+	struct pci_inbound_window_regs *pci_saved_piw, *temp_piw;
+	struct resource pci_rsrc;
+	unsigned int i;
+	struct fsl_pci_private_data *sus_info;
+
+	hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
+	of_address_to_resource(pdev->dev.of_node, 0, &pci_rsrc);
+
+	sus_info = kmalloc(
+			sizeof(struct fsl_pci_private_data), GFP_KERNEL);
+	if (!sus_info)
+		return -ENOMEM;
+
+	hose->private_data = sus_info;
+
+	sus_info->pci_pow = ioremap(pci_rsrc.start + PCI_POW_PIW_OFFSET,
+			PCI_POW_PIW_SIZE);
+	if (!sus_info->pci_pow) {
+		dev_err(&pdev->dev, "pci outbound/inbound windows ioremap error!\n");
+		goto err1;
+	}
+
+	sus_info->pci_piw = (struct pci_inbound_window_regs *)
+		((void *)sus_info->pci_pow + PCI_POW_PIW_SIZE) - 1;
+
+	if (of_device_is_compatible(pdev->dev.of_node, "fsl,qoriq-pcie-v2.2"))
+		sus_info->inbound_num = 4;
+	else
+		sus_info->inbound_num = 3;
+
+	sus_info->saved_regs = kmalloc(
+		sizeof(struct pci_outbound_window_regs) * PCI_POW_NUMBER +
+		sizeof(struct pci_inbound_window_regs) * sus_info->inbound_num,
+		GFP_KERNEL);
+	if (!sus_info->saved_regs)
+		goto err2;
+
+	pci_saved_pow = sus_info->saved_regs;
+	for (i = 0; i < PCI_POW_NUMBER; i++) {
+		pci_saved_pow[i].potar = in_be32(&sus_info->pci_pow[i].potar);
+		pci_saved_pow[i].potear = in_be32(&sus_info->pci_pow[i].potear);
+		pci_saved_pow[i].powbar = in_be32(&sus_info->pci_pow[i].powbar);
+		pci_saved_pow[i].powar = in_be32(&sus_info->pci_pow[i].powar);
+	}
+
+	pci_saved_piw = (struct pci_inbound_window_regs *)
+		(pci_saved_pow + PCI_POW_NUMBER);
+	temp_piw = sus_info->pci_piw;
+	for (i = 0; i < sus_info->inbound_num; i++, temp_piw--) {
+		pci_saved_piw[i].pitar = in_be32(&temp_piw->pitar);
+		pci_saved_piw[i].piwbar = in_be32(&temp_piw->piwbar);
+		pci_saved_piw[i].piwbear = in_be32(&temp_piw->piwbear);
+		pci_saved_piw[i].piwar = in_be32(&temp_piw->piwar);
+	}
+
+	return 0;
+
+err2:
+	iounmap(sus_info->pci_pow);
+
+err1:
+	kfree(sus_info);
+	return -ENOMEM;
+}
+
+static int fsl_pci_resume(struct platform_device *pdev)
+{
+	struct pci_controller *hose;
+	struct pci_outbound_window_regs *pci_saved_pow;
+	struct pci_inbound_window_regs *pci_saved_piw, *temp_piw;
+	unsigned int i;
+	struct fsl_pci_private_data *sus_info;
+
+	hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
+	sus_info = (struct fsl_pci_private_data *)hose->private_data;
+
+	if (!sus_info->pci_pow || !sus_info->pci_piw || !sus_info->saved_regs)
+		return 0;
+
+	pci_saved_pow = sus_info->saved_regs;
+	for (i = 0; i < PCI_POW_NUMBER; i++) {
+		out_be32(&sus_info->pci_pow[i].potar, pci_saved_pow[i].potar);
+		out_be32(&sus_info->pci_pow[i].potear, pci_saved_pow[i].potear);
+		out_be32(&sus_info->pci_pow[i].powbar, pci_saved_pow[i].powbar);
+		out_be32(&sus_info->pci_pow[i].powar, pci_saved_pow[i].powar);
+	}
+
+	pci_saved_piw = (struct pci_inbound_window_regs *)
+		(pci_saved_pow + PCI_POW_NUMBER);
+	temp_piw = sus_info->pci_piw;
+	for (i = 0; i < sus_info->inbound_num; i++, temp_piw--) {
+		out_be32(&temp_piw->pitar, pci_saved_piw[i].pitar);
+		out_be32(&temp_piw->piwbar, pci_saved_piw[i].piwbar);
+		out_be32(&temp_piw->piwbear, pci_saved_piw[i].piwbear);
+		out_be32(&temp_piw->piwar, pci_saved_piw[i].piwar);
+	}
+	iounmap(sus_info->pci_pow);
+	kfree(sus_info->saved_regs);
+	sus_info->saved_regs = NULL;
+	kfree(sus_info);
+	sus_info = NULL;
+	hose->private_data = NULL;
+
+	return 0;
+}
+#endif
+
 static struct platform_driver fsl_pci_driver = {
 	.driver = {
 		.name = "fsl-pci",
 		.of_match_table = pci_ids,
 	},
 	.probe = fsl_pci_probe,
+#ifdef CONFIG_SUSPEND
+	.suspend	= fsl_pci_suspend,
+	.resume		= fsl_pci_resume,
+#endif
 };
 
 static int __init fsl_pci_init(void)
-- 
1.7.5.1

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

* [PATCH 6/6] Edac/85xx: Register mpc85xx_pci_err_driver by fsl_pci_driver
  2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
                   ` (3 preceding siblings ...)
  2012-07-24 10:20 ` [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
@ 2012-07-24 10:20 ` Jia Hongtao
  2012-07-24 18:42 ` [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Scott Wood
  5 siblings, 0 replies; 36+ messages in thread
From: Jia Hongtao @ 2012-07-24 10:20 UTC (permalink / raw)
  To: linuxppc-dev, galak, B07421; +Cc: b38951

From: Chunhe Lan <Chunhe.Lan@freescale.com>

Now we registered pci controllers as platform devices. It will make edac
driver failed to register pci nodes as platform devices too. So we combine
two initialization code as one platform driver.

Signed-off-by: Chunhe Lan <Chunhe.Lan@freescale.com>
Signed-off-by: Li Yang <leoli@freescale.com>
Signed-off-by: Jia Hongtao <B38951@freescale.com>
---
 arch/powerpc/sysdev/fsl_pci.c |    4 +++
 arch/powerpc/sysdev/fsl_pci.h |    4 +++
 drivers/edac/mpc85xx_edac.c   |   43 +++++++++++-----------------------------
 3 files changed, 20 insertions(+), 31 deletions(-)

diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
index a14ee6f..5bc8222 100644
--- a/arch/powerpc/sysdev/fsl_pci.c
+++ b/arch/powerpc/sysdev/fsl_pci.c
@@ -962,6 +962,10 @@ static int __devinit fsl_pci_probe(struct platform_device *pdev)
 	if (of_match_node(pci_ids, pdev->dev.of_node))
 		fsl_add_bridge(pdev->dev.of_node, is_primary);
 
+#ifdef CONFIG_EDAC_MPC85XX
+	mpc85xx_pci_err_probe(pdev);
+#endif
+
 	return 0;
 }
 
diff --git a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h
index abbc09d..1dfe85d 100644
--- a/arch/powerpc/sysdev/fsl_pci.h
+++ b/arch/powerpc/sysdev/fsl_pci.h
@@ -110,5 +110,9 @@ extern void pci_check_swiotlb(void);
 static inline void pci_check_swiotlb(void) {}
 #endif
 
+#ifdef CONFIG_EDAC_MPC85XX
+extern int mpc85xx_pci_err_probe(struct platform_device *op);
+#endif
+
 #endif /* __POWERPC_FSL_PCI_H */
 #endif /* __KERNEL__ */
diff --git a/drivers/edac/mpc85xx_edac.c b/drivers/edac/mpc85xx_edac.c
index 0e37462..e4b6113 100644
--- a/drivers/edac/mpc85xx_edac.c
+++ b/drivers/edac/mpc85xx_edac.c
@@ -200,7 +200,7 @@ static irqreturn_t mpc85xx_pci_isr(int irq, void *dev_id)
 	return IRQ_HANDLED;
 }
 
-static int __devinit mpc85xx_pci_err_probe(struct platform_device *op)
+int __devinit mpc85xx_pci_err_probe(struct platform_device *op)
 {
 	struct edac_pci_ctl_info *pci;
 	struct mpc85xx_pci_pdata *pdata;
@@ -214,6 +214,16 @@ static int __devinit mpc85xx_pci_err_probe(struct platform_device *op)
 	if (!pci)
 		return -ENOMEM;
 
+	/* make sure error reporting method is sane */
+	switch (edac_op_state) {
+	case EDAC_OPSTATE_POLL:
+	case EDAC_OPSTATE_INT:
+		break;
+	default:
+		edac_op_state = EDAC_OPSTATE_INT;
+		break;
+	}
+
 	pdata = pci->pvt_info;
 	pdata->name = "mpc85xx_pci_err";
 	pdata->irq = NO_IRQ;
@@ -303,6 +313,7 @@ err:
 	devres_release_group(&op->dev, mpc85xx_pci_err_probe);
 	return res;
 }
+EXPORT_SYMBOL(mpc85xx_pci_err_probe);
 
 static int mpc85xx_pci_err_remove(struct platform_device *op)
 {
@@ -326,27 +337,6 @@ static int mpc85xx_pci_err_remove(struct platform_device *op)
 	return 0;
 }
 
-static struct of_device_id mpc85xx_pci_err_of_match[] = {
-	{
-	 .compatible = "fsl,mpc8540-pcix",
-	 },
-	{
-	 .compatible = "fsl,mpc8540-pci",
-	},
-	{},
-};
-MODULE_DEVICE_TABLE(of, mpc85xx_pci_err_of_match);
-
-static struct platform_driver mpc85xx_pci_err_driver = {
-	.probe = mpc85xx_pci_err_probe,
-	.remove = __devexit_p(mpc85xx_pci_err_remove),
-	.driver = {
-		.name = "mpc85xx_pci_err",
-		.owner = THIS_MODULE,
-		.of_match_table = mpc85xx_pci_err_of_match,
-	},
-};
-
 #endif				/* CONFIG_PCI */
 
 /**************************** L2 Err device ***************************/
@@ -1193,12 +1183,6 @@ static int __init mpc85xx_mc_init(void)
 	if (res)
 		printk(KERN_WARNING EDAC_MOD_STR "L2 fails to register\n");
 
-#ifdef CONFIG_PCI
-	res = platform_driver_register(&mpc85xx_pci_err_driver);
-	if (res)
-		printk(KERN_WARNING EDAC_MOD_STR "PCI fails to register\n");
-#endif
-
 #ifdef CONFIG_FSL_SOC_BOOKE
 	pvr = mfspr(SPRN_PVR);
 
@@ -1235,9 +1219,6 @@ static void __exit mpc85xx_mc_exit(void)
 		on_each_cpu(mpc85xx_mc_restore_hid1, NULL, 0);
 	}
 #endif
-#ifdef CONFIG_PCI
-	platform_driver_unregister(&mpc85xx_pci_err_driver);
-#endif
 	platform_driver_unregister(&mpc85xx_l2_err_driver);
 	platform_driver_unregister(&mpc85xx_mc_err_driver);
 }
-- 
1.7.5.1

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

* Re: [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code
  2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
                   ` (4 preceding siblings ...)
  2012-07-24 10:20 ` [PATCH 6/6] Edac/85xx: Register mpc85xx_pci_err_driver by fsl_pci_driver Jia Hongtao
@ 2012-07-24 18:42 ` Scott Wood
  2012-07-25  2:35   ` Jia Hongtao-B38951
  5 siblings, 1 reply; 36+ messages in thread
From: Scott Wood @ 2012-07-24 18:42 UTC (permalink / raw)
  To: Jia Hongtao; +Cc: B07421, linuxppc-dev

On 07/24/2012 05:20 AM, Jia Hongtao wrote:
> We unified the Freescale pci/pcie initialization by changing the fsl_pci
> to a platform driver.
> 
> In previous version pci/pcie initialization is in platform code which
> Initialize pci bridge base on EP/RC or host/agent settings.

The previous version of what?  This patch, or the PCI code?  What
changed in this patch since the last time you sent it, and where is the
version number?

> +#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
> +static const struct of_device_id pci_ids[] = {
> +	{ .compatible = "fsl,mpc8540-pci", },
> +	{ .compatible = "fsl,mpc8548-pcie", },
> +	{ .compatible = "fsl,mpc8641-pcie", },
> +	{ .compatible = "fsl,p1022-pcie", },
> +	{ .compatible = "fsl,p1010-pcie", },
> +	{ .compatible = "fsl,p1023-pcie", },
> +	{ .compatible = "fsl,p4080-pcie", },
> +	{ .compatible = "fsl,qoriq-pcie-v2.3", },
> +	{ .compatible = "fsl,qoriq-pcie-v2.2", },
> +	{},
> +};

Again, please base this on the latest tree, which has my PCI patches.
This table already exists in this file.  And you're still missing
fsl,mpc8610-pci.

> +int primary_phb_addr;
> +static int __devinit fsl_pci_probe(struct platform_device *pdev)
> +{
> +	struct pci_controller *hose;
> +	bool is_primary;
> +
> +	if (of_match_node(pci_ids, pdev->dev.of_node)) {
> +		struct resource rsrc;
> +		of_address_to_resource(pdev->dev.of_node, 0, &rsrc);
> +		is_primary = ((rsrc.start & 0xfffff) == primary_phb_addr);
> +		fsl_add_bridge(pdev->dev.of_node, is_primary);
> +
> +#ifdef CONFIG_SWIOTLB
> +		hose = pci_find_hose_for_OF_device(pdev->dev.of_node);
> +		/*
> +		 * if we couldn't map all of DRAM via the dma windows
> +		 * we need SWIOTLB to handle buffers located outside of
> +		 * dma capable memory region
> +		 */
> +		if (memblock_end_of_DRAM() > hose->dma_window_base_cur
> +				+ hose->dma_window_size) {
> +			ppc_swiotlb_enable = 1;
> +			set_pci_dma_ops(&swiotlb_dma_ops);
> +			ppc_md.pci_dma_dev_setup = pci_dma_dev_setup_swiotlb;
> +		}
> +#endif
> +	}

It's too late for swiotlb here.  Again, please don't break something in
one patch and then fix it in a later patch.  Use "git rebase -i" to edit
your patchset into a reviewable, bisectable form.

-Scott

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

* Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-24 10:20 ` [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node Jia Hongtao
@ 2012-07-24 18:47   ` Scott Wood
  2012-07-25  2:42     ` Jia Hongtao-B38951
  2012-07-25  9:01     ` Jia Hongtao-B38951
  0 siblings, 2 replies; 36+ messages in thread
From: Scott Wood @ 2012-07-24 18:47 UTC (permalink / raw)
  To: Jia Hongtao; +Cc: B07421, linuxppc-dev

On 07/24/2012 05:20 AM, Jia Hongtao wrote:
> PCI host bridge is primary bus if it contains an ISA node. But not all boards
> fit this rule. Device tree should be updated for all these boards.
> 
> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
>  arch/powerpc/include/asm/pci-bridge.h |    1 +
>  arch/powerpc/sysdev/fsl_pci.c         |   31 ++++++++++++++++++++++++-------
>  arch/powerpc/sysdev/fsl_pci.h         |   12 +++++++++++-
>  3 files changed, 36 insertions(+), 8 deletions(-)
> 
> diff --git a/arch/powerpc/include/asm/pci-bridge.h b/arch/powerpc/include/asm/pci-bridge.h
> index ac39e6a..b48fa7f 100644
> --- a/arch/powerpc/include/asm/pci-bridge.h
> +++ b/arch/powerpc/include/asm/pci-bridge.h
> @@ -20,6 +20,7 @@ struct device_node;
>  struct pci_controller {
>  	struct pci_bus *bus;
>  	char is_dynamic;
> +	int is_primary;
>  #ifdef CONFIG_PPC64
>  	int node;
>  #endif
> diff --git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c
> index 99a3e78..2a369be 100644
> --- a/arch/powerpc/sysdev/fsl_pci.c
> +++ b/arch/powerpc/sysdev/fsl_pci.c
> @@ -453,6 +453,7 @@ int __init fsl_add_bridge(struct device_node *dev, int is_primary)
>  
>  	hose->first_busno = bus_range ? bus_range[0] : 0x0;
>  	hose->last_busno = bus_range ? bus_range[1] : 0xff;
> +	hose->is_primary = is_primary;
>  
>  	setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
>  		PPC_INDIRECT_TYPE_BIG_ENDIAN);
> @@ -932,18 +933,34 @@ void pci_check_swiotlb(void)
>  }
>  #endif
>  
> -int primary_phb_addr;
> +/*
> + * Recursively scan all the children nodes of parent and find out if there
> + * is "isa" node. Return 1 if parent has isa node otherwise return 0.
> + */
> +int has_isa_node(struct device_node *parent)
> +{
> +	static int result;
> +	struct device_node *cur_child;
> +
> +	cur_child = NULL;
> +	result = 0;
> +	while (!result && (cur_child = of_get_next_child(parent, cur_child))) {
> +		/* Get "isa" node and return 1 */
> +		if (of_node_cmp(cur_child->type, "isa") == 0)
> +			return result = 1;
> +		has_isa_node(cur_child);
> +	}
> +
> +	return result;
> +}

Why are you reimplementing this?  It's already in Linus's tree.  See
fsl_pci_init().

Plus, your version is recursive which is unacceptable in kernel code
with a small stack (outside of a few rare examples where the depth has a
small fixed upper bound), and once it finds an ISA node, it returns 1
forever, regardless of what node you pass in in the future.

-Scott

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

* RE: [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code
  2012-07-24 18:42 ` [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Scott Wood
@ 2012-07-25  2:35   ` Jia Hongtao-B38951
  2012-07-25 17:23     ` Scott Wood
  0 siblings, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-25  2:35 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDI1LCAyMDEyIDI6NDMgQU0NCj4gVG86IEppYSBI
b25ndGFvLUIzODk1MQ0KPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IGdhbGFr
QGtlcm5lbC5jcmFzaGluZy5vcmc7IFdvb2QgU2NvdHQtDQo+IEIwNzQyMTsgTGkgWWFuZy1SNTg0
NzINCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzZdIHBvd2VycGMvZnNsLXBjaTogVW5pZnkgcGNp
L3BjaWUgaW5pdGlhbGl6YXRpb24NCj4gY29kZQ0KPiANCj4gT24gMDcvMjQvMjAxMiAwNToyMCBB
TSwgSmlhIEhvbmd0YW8gd3JvdGU6DQo+ID4gV2UgdW5pZmllZCB0aGUgRnJlZXNjYWxlIHBjaS9w
Y2llIGluaXRpYWxpemF0aW9uIGJ5IGNoYW5naW5nIHRoZQ0KPiBmc2xfcGNpDQo+ID4gdG8gYSBw
bGF0Zm9ybSBkcml2ZXIuDQo+ID4NCj4gPiBJbiBwcmV2aW91cyB2ZXJzaW9uIHBjaS9wY2llIGlu
aXRpYWxpemF0aW9uIGlzIGluIHBsYXRmb3JtIGNvZGUgd2hpY2gNCj4gPiBJbml0aWFsaXplIHBj
aSBicmlkZ2UgYmFzZSBvbiBFUC9SQyBvciBob3N0L2FnZW50IHNldHRpbmdzLg0KPiANCj4gVGhl
IHByZXZpb3VzIHZlcnNpb24gb2Ygd2hhdD8gIFRoaXMgcGF0Y2gsIG9yIHRoZSBQQ0kgY29kZT8g
IFdoYXQNCj4gY2hhbmdlZCBpbiB0aGlzIHBhdGNoIHNpbmNlIHRoZSBsYXN0IHRpbWUgeW91IHNl
bnQgaXQsIGFuZCB3aGVyZSBpcyB0aGUNCj4gdmVyc2lvbiBudW1iZXI/DQo+IA0KPiA+ICsjaWYg
ZGVmaW5lZChDT05GSUdfRlNMX1NPQ19CT09LRSkgfHwgZGVmaW5lZChDT05GSUdfUFBDXzg2eHgp
DQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBjaV9pZHNbXSA9IHsNCj4g
PiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDAtcGNpIiwgfSwNCj4gPiArCXsgLmNvbXBh
dGlibGUgPSAiZnNsLG1wYzg1NDgtcGNpZSIsIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImZz
bCxtcGM4NjQxLXBjaWUiLCB9LA0KPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wscDEwMjItcGNp
ZSIsIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxwMTAxMC1wY2llIiwgfSwNCj4gPiAr
CXsgLmNvbXBhdGlibGUgPSAiZnNsLHAxMDIzLXBjaWUiLCB9LA0KPiA+ICsJeyAuY29tcGF0aWJs
ZSA9ICJmc2wscDQwODAtcGNpZSIsIH0sDQo+ID4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxxb3Jp
cS1wY2llLXYyLjMiLCB9LA0KPiA+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wscW9yaXEtcGNpZS12
Mi4yIiwgfSwNCj4gPiArCXt9LA0KPiA+ICt9Ow0KPiANCj4gQWdhaW4sIHBsZWFzZSBiYXNlIHRo
aXMgb24gdGhlIGxhdGVzdCB0cmVlLCB3aGljaCBoYXMgbXkgUENJIHBhdGNoZXMuDQo+IFRoaXMg
dGFibGUgYWxyZWFkeSBleGlzdHMgaW4gdGhpcyBmaWxlLiAgQW5kIHlvdSdyZSBzdGlsbCBtaXNz
aW5nDQo+IGZzbCxtcGM4NjEwLXBjaS4NCg0KU29ycnkgZnNsLG1wYzg2MTAtcGNpIHdpbGwgYmUg
YWRkZWQuDQoNCj4gDQo+ID4gK2ludCBwcmltYXJ5X3BoYl9hZGRyOw0KPiA+ICtzdGF0aWMgaW50
IF9fZGV2aW5pdCBmc2xfcGNpX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+
ID4gK3sNCj4gPiArCXN0cnVjdCBwY2lfY29udHJvbGxlciAqaG9zZTsNCj4gPiArCWJvb2wgaXNf
cHJpbWFyeTsNCj4gPiArDQo+ID4gKwlpZiAob2ZfbWF0Y2hfbm9kZShwY2lfaWRzLCBwZGV2LT5k
ZXYub2Zfbm9kZSkpIHsNCj4gPiArCQlzdHJ1Y3QgcmVzb3VyY2UgcnNyYzsNCj4gPiArCQlvZl9h
ZGRyZXNzX3RvX3Jlc291cmNlKHBkZXYtPmRldi5vZl9ub2RlLCAwLCAmcnNyYyk7DQo+ID4gKwkJ
aXNfcHJpbWFyeSA9ICgocnNyYy5zdGFydCAmIDB4ZmZmZmYpID09IHByaW1hcnlfcGhiX2FkZHIp
Ow0KPiA+ICsJCWZzbF9hZGRfYnJpZGdlKHBkZXYtPmRldi5vZl9ub2RlLCBpc19wcmltYXJ5KTsN
Cj4gPiArDQo+ID4gKyNpZmRlZiBDT05GSUdfU1dJT1RMQg0KPiA+ICsJCWhvc2UgPSBwY2lfZmlu
ZF9ob3NlX2Zvcl9PRl9kZXZpY2UocGRldi0+ZGV2Lm9mX25vZGUpOw0KPiA+ICsJCS8qDQo+ID4g
KwkJICogaWYgd2UgY291bGRuJ3QgbWFwIGFsbCBvZiBEUkFNIHZpYSB0aGUgZG1hIHdpbmRvd3MN
Cj4gPiArCQkgKiB3ZSBuZWVkIFNXSU9UTEIgdG8gaGFuZGxlIGJ1ZmZlcnMgbG9jYXRlZCBvdXRz
aWRlIG9mDQo+ID4gKwkJICogZG1hIGNhcGFibGUgbWVtb3J5IHJlZ2lvbg0KPiA+ICsJCSAqLw0K
PiA+ICsJCWlmIChtZW1ibG9ja19lbmRfb2ZfRFJBTSgpID4gaG9zZS0+ZG1hX3dpbmRvd19iYXNl
X2N1cg0KPiA+ICsJCQkJKyBob3NlLT5kbWFfd2luZG93X3NpemUpIHsNCj4gPiArCQkJcHBjX3N3
aW90bGJfZW5hYmxlID0gMTsNCj4gPiArCQkJc2V0X3BjaV9kbWFfb3BzKCZzd2lvdGxiX2RtYV9v
cHMpOw0KPiA+ICsJCQlwcGNfbWQucGNpX2RtYV9kZXZfc2V0dXAgPSBwY2lfZG1hX2Rldl9zZXR1
cF9zd2lvdGxiOw0KPiA+ICsJCX0NCj4gPiArI2VuZGlmDQo+ID4gKwl9DQo+IA0KPiBJdCdzIHRv
byBsYXRlIGZvciBzd2lvdGxiIGhlcmUuICBBZ2FpbiwgcGxlYXNlIGRvbid0IGJyZWFrIHNvbWV0
aGluZyBpbg0KPiBvbmUgcGF0Y2ggYW5kIHRoZW4gZml4IGl0IGluIGEgbGF0ZXIgcGF0Y2guICBV
c2UgImdpdCByZWJhc2UgLWkiIHRvIGVkaXQNCj4geW91ciBwYXRjaHNldCBpbnRvIGEgcmV2aWV3
YWJsZSwgYmlzZWN0YWJsZSBmb3JtLg0KPiANCj4gLVNjb3R0DQoNClllcywgYmlzZWN0YWJsZSBy
ZXF1aXJlbWVudCBpcyBzb3J0IG9mIHJlYXNvbmFibGUuIA0KDQpCdXQgSSBjaGVjayB0aGUgU3Vi
bWl0dGluZ1BhdGNoZXMgRG9jIGFuZCBpdCBzYXlzICJJZiBvbmUgcGF0Y2ggZGVwZW5kcyBvbg0K
YW5vdGhlciBwYXRjaCBpbiBvcmRlciBmb3IgYSBjaGFuZ2UgdG8gYmUgY29tcGxldGUsIHRoYXQg
aXMgT0suIFNpbXBseQ0Kbm90ZSAndGhpcyBwYXRjaCBkZXBlbmRzIG9uIHBhdGNoIFgnIGluIHlv
dXIgcGF0Y2ggZGVzY3JpcHRpb24iLiBJbiBteQ0Kb3BpbmlvbiBzd2lvdGxiIGlzIGEgd2hvbGUg
ZnVuY3Rpb25hbCBwYXRjaCBzbyBJIHNlcGFyYXRlIHRoZW0uIE1heWJlDQpJIHNob3VsZCBhZGQg
ZGVwZW5kcyBkZXNjcmlwdGlvbiBpbiB0aGUgbmV4dCBwYXRjaC4NCg0KDQpBYm91dCBhbGwgdGhp
cyBwYXRjaCBzZXQgTGVvIGFuZCBJIGluc2lzdCB0byBtYWtlIGl0IGFzIGEgcGxhdGZvcm0gZHJp
dmVyDQp3aGljaCBpcyBhcmNoaXRlY3R1cmFsIGJldHRlci4gSSBkaWRuJ3QgYmFzZSB0aGlzIHBh
dGNoIHNldCBvbiB0aGUgbGF0ZXN0DQp0cmVlIGFuZCBpdCdzIHVuYXBwbGljYWJsZSBqdXN0IGJl
Y2F1c2UgSSB3YW50IHRvIHNob3cgdGhlIHdob2xlIGlkZWEgb2YNCnRoaXMgcGF0Y2hzZXQuIElm
IHRoZSBpZGVhIGlzIG9rIGZvciB1cHN0cmVhbSBJIHdpbGwgcmViYXNlIHRoZSBwYXRjaCBzZXQu
DQoNCi1Ib25ndGFvLiANCg==

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

* RE: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-24 18:47   ` Scott Wood
@ 2012-07-25  2:42     ` Jia Hongtao-B38951
  2012-07-25 17:25       ` Scott Wood
  2012-07-25  9:01     ` Jia Hongtao-B38951
  1 sibling, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-25  2:42 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDI1LCAyMDEyIDI6NDggQU0NCj4gVG86IEppYSBI
b25ndGFvLUIzODk1MQ0KPiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7IGdhbGFr
QGtlcm5lbC5jcmFzaGluZy5vcmc7IFdvb2QgU2NvdHQtDQo+IEIwNzQyMTsgTGkgWWFuZy1SNTg0
NzINCj4gU3ViamVjdDogUmU6IFtQQVRDSCAzLzZdIHBvd2VycGMvZnNsLXBjaTogRGV0ZXJtaW5l
IHByaW1hcnkgYnVzIGJ5DQo+IGxvb2tpbmcgZm9yIElTQSBub2RlDQo+IA0KPiBPbiAwNy8yNC8y
MDEyIDA1OjIwIEFNLCBKaWEgSG9uZ3RhbyB3cm90ZToNCj4gPiBQQ0kgaG9zdCBicmlkZ2UgaXMg
cHJpbWFyeSBidXMgaWYgaXQgY29udGFpbnMgYW4gSVNBIG5vZGUuIEJ1dCBub3QgYWxsDQo+IGJv
YXJkcw0KPiA+IGZpdCB0aGlzIHJ1bGUuIERldmljZSB0cmVlIHNob3VsZCBiZSB1cGRhdGVkIGZv
ciBhbGwgdGhlc2UgYm9hcmRzLg0KPiA+DQo+ID4gU2lnbmVkLW9mZi1ieTogSmlhIEhvbmd0YW8g
PEIzODk1MUBmcmVlc2NhbGUuY29tPg0KPiA+IFNpZ25lZC1vZmYtYnk6IExpIFlhbmcgPGxlb2xp
QGZyZWVzY2FsZS5jb20+DQo+ID4gLS0tDQo+ID4gIGFyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9w
Y2ktYnJpZGdlLmggfCAgICAxICsNCj4gPiAgYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNpLmMg
ICAgICAgICB8ICAgMzEgKysrKysrKysrKysrKysrKysrKysrKysrLQ0KPiAtLS0tLS0NCj4gPiAg
YXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNpLmggICAgICAgICB8ICAgMTIgKysrKysrKysrKyst
DQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkN
Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcGNpLWJyaWRn
ZS5oDQo+IGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3BjaS1icmlkZ2UuaA0KPiA+IGluZGV4
IGFjMzllNmEuLmI0OGZhN2YgMTAwNjQ0DQo+ID4gLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUv
YXNtL3BjaS1icmlkZ2UuaA0KPiA+ICsrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wY2kt
YnJpZGdlLmgNCj4gPiBAQCAtMjAsNiArMjAsNyBAQCBzdHJ1Y3QgZGV2aWNlX25vZGU7DQo+ID4g
IHN0cnVjdCBwY2lfY29udHJvbGxlciB7DQo+ID4gIAlzdHJ1Y3QgcGNpX2J1cyAqYnVzOw0KPiA+
ICAJY2hhciBpc19keW5hbWljOw0KPiA+ICsJaW50IGlzX3ByaW1hcnk7DQo+ID4gICNpZmRlZiBD
T05GSUdfUFBDNjQNCj4gPiAgCWludCBub2RlOw0KPiA+ICAjZW5kaWYNCj4gPiBkaWZmIC0tZ2l0
IGEvYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNpLmMNCj4gYi9hcmNoL3Bvd2VycGMvc3lzZGV2
L2ZzbF9wY2kuYw0KPiA+IGluZGV4IDk5YTNlNzguLjJhMzY5YmUgMTAwNjQ0DQo+ID4gLS0tIGEv
YXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNpLmMNCj4gPiArKysgYi9hcmNoL3Bvd2VycGMvc3lz
ZGV2L2ZzbF9wY2kuYw0KPiA+IEBAIC00NTMsNiArNDUzLDcgQEAgaW50IF9faW5pdCBmc2xfYWRk
X2JyaWRnZShzdHJ1Y3QgZGV2aWNlX25vZGUgKmRldiwNCj4gaW50IGlzX3ByaW1hcnkpDQo+ID4N
Cj4gPiAgCWhvc2UtPmZpcnN0X2J1c25vID0gYnVzX3JhbmdlID8gYnVzX3JhbmdlWzBdIDogMHgw
Ow0KPiA+ICAJaG9zZS0+bGFzdF9idXNubyA9IGJ1c19yYW5nZSA/IGJ1c19yYW5nZVsxXSA6IDB4
ZmY7DQo+ID4gKwlob3NlLT5pc19wcmltYXJ5ID0gaXNfcHJpbWFyeTsNCj4gPg0KPiA+ICAJc2V0
dXBfaW5kaXJlY3RfcGNpKGhvc2UsIHJzcmMuc3RhcnQsIHJzcmMuc3RhcnQgKyAweDQsDQo+ID4g
IAkJUFBDX0lORElSRUNUX1RZUEVfQklHX0VORElBTik7DQo+ID4gQEAgLTkzMiwxOCArOTMzLDM0
IEBAIHZvaWQgcGNpX2NoZWNrX3N3aW90bGIodm9pZCkNCj4gPiAgfQ0KPiA+ICAjZW5kaWYNCj4g
Pg0KPiA+IC1pbnQgcHJpbWFyeV9waGJfYWRkcjsNCj4gPiArLyoNCj4gPiArICogUmVjdXJzaXZl
bHkgc2NhbiBhbGwgdGhlIGNoaWxkcmVuIG5vZGVzIG9mIHBhcmVudCBhbmQgZmluZCBvdXQgaWYN
Cj4gdGhlcmUNCj4gPiArICogaXMgImlzYSIgbm9kZS4gUmV0dXJuIDEgaWYgcGFyZW50IGhhcyBp
c2Egbm9kZSBvdGhlcndpc2UgcmV0dXJuIDAuDQo+ID4gKyAqLw0KPiA+ICtpbnQgaGFzX2lzYV9u
b2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50KQ0KPiA+ICt7DQo+ID4gKwlzdGF0aWMgaW50
IHJlc3VsdDsNCj4gPiArCXN0cnVjdCBkZXZpY2Vfbm9kZSAqY3VyX2NoaWxkOw0KPiA+ICsNCj4g
PiArCWN1cl9jaGlsZCA9IE5VTEw7DQo+ID4gKwlyZXN1bHQgPSAwOw0KPiA+ICsJd2hpbGUgKCFy
ZXN1bHQgJiYgKGN1cl9jaGlsZCA9IG9mX2dldF9uZXh0X2NoaWxkKHBhcmVudCwNCj4gY3VyX2No
aWxkKSkpIHsNCj4gPiArCQkvKiBHZXQgImlzYSIgbm9kZSBhbmQgcmV0dXJuIDEgKi8NCj4gPiAr
CQlpZiAob2Zfbm9kZV9jbXAoY3VyX2NoaWxkLT50eXBlLCAiaXNhIikgPT0gMCkNCj4gPiArCQkJ
cmV0dXJuIHJlc3VsdCA9IDE7DQo+ID4gKwkJaGFzX2lzYV9ub2RlKGN1cl9jaGlsZCk7DQo+ID4g
Kwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHJlc3VsdDsNCj4gPiArfQ0KPiANCj4gV2h5IGFyZSB5
b3UgcmVpbXBsZW1lbnRpbmcgdGhpcz8gIEl0J3MgYWxyZWFkeSBpbiBMaW51cydzIHRyZWUuICBT
ZWUNCj4gZnNsX3BjaV9pbml0KCkuDQo+IA0KPiBQbHVzLCB5b3VyIHZlcnNpb24gaXMgcmVjdXJz
aXZlIHdoaWNoIGlzIHVuYWNjZXB0YWJsZSBpbiBrZXJuZWwgY29kZQ0KPiB3aXRoIGEgc21hbGwg
c3RhY2sgKG91dHNpZGUgb2YgYSBmZXcgcmFyZSBleGFtcGxlcyB3aGVyZSB0aGUgZGVwdGggaGFz
IGENCj4gc21hbGwgZml4ZWQgdXBwZXIgYm91bmQpLCBhbmQgb25jZSBpdCBmaW5kcyBhbiBJU0Eg
bm9kZSwgaXQgcmV0dXJucyAxDQo+IGZvcmV2ZXIsIHJlZ2FyZGxlc3Mgb2Ygd2hhdCBub2RlIHlv
dSBwYXNzIGluIGluIHRoZSBmdXR1cmUuDQo+IA0KPiAtU2NvdHQNCg0KQWJvdXQgcmVjdXJzaW9u
IEkgd2lsbCBkbyBzb21lIG1vcmUgaW52ZXN0aWdhdGlvbi4NCklmIGl0IGZpbmRzIElTQSBpdCBy
ZXR1cm5zIDEuIEJ1dCBmb3IgbmV4dCBQQ0kgbm9kZSBpdCB3aWxsIHJldHVybiAwIGlmDQpubyBJ
U0EgaXMgZm91bmQgKG5vdGUgdGhhdCBJIHNldCByZXN1bHQgdG8gMCBhdCB0aGUgYmVnaW5uaW5n
KS4NCg0KLUhvbmd0YW8uDQoNCg==

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

* RE: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-24 18:47   ` Scott Wood
  2012-07-25  2:42     ` Jia Hongtao-B38951
@ 2012-07-25  9:01     ` Jia Hongtao-B38951
  2012-07-25 17:27       ` Scott Wood
  1 sibling, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-25  9:01 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

PiA+ICsvKg0KPiA+ICsgKiBSZWN1cnNpdmVseSBzY2FuIGFsbCB0aGUgY2hpbGRyZW4gbm9kZXMg
b2YgcGFyZW50IGFuZCBmaW5kIG91dCBpZg0KPiB0aGVyZQ0KPiA+ICsgKiBpcyAiaXNhIiBub2Rl
LiBSZXR1cm4gMSBpZiBwYXJlbnQgaGFzIGlzYSBub2RlIG90aGVyd2lzZSByZXR1cm4gMC4NCj4g
PiArICovDQo+ID4gK2ludCBoYXNfaXNhX25vZGUoc3RydWN0IGRldmljZV9ub2RlICpwYXJlbnQp
DQo+ID4gK3sNCj4gPiArCXN0YXRpYyBpbnQgcmVzdWx0Ow0KPiA+ICsJc3RydWN0IGRldmljZV9u
b2RlICpjdXJfY2hpbGQ7DQo+ID4gKw0KPiA+ICsJY3VyX2NoaWxkID0gTlVMTDsNCj4gPiArCXJl
c3VsdCA9IDA7DQo+ID4gKwl3aGlsZSAoIXJlc3VsdCAmJiAoY3VyX2NoaWxkID0gb2ZfZ2V0X25l
eHRfY2hpbGQocGFyZW50LA0KPiBjdXJfY2hpbGQpKSkgew0KPiA+ICsJCS8qIEdldCAiaXNhIiBu
b2RlIGFuZCByZXR1cm4gMSAqLw0KPiA+ICsJCWlmIChvZl9ub2RlX2NtcChjdXJfY2hpbGQtPnR5
cGUsICJpc2EiKSA9PSAwKQ0KPiA+ICsJCQlyZXR1cm4gcmVzdWx0ID0gMTsNCj4gPiArCQloYXNf
aXNhX25vZGUoY3VyX2NoaWxkKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlyZXR1cm4gcmVzdWx0
Ow0KPiA+ICt9DQo+IA0KPiBXaHkgYXJlIHlvdSByZWltcGxlbWVudGluZyB0aGlzPyAgSXQncyBh
bHJlYWR5IGluIExpbnVzJ3MgdHJlZS4gIFNlZQ0KPiBmc2xfcGNpX2luaXQoKS4NCj4gDQo+IFBs
dXMsIHlvdXIgdmVyc2lvbiBpcyByZWN1cnNpdmUgd2hpY2ggaXMgdW5hY2NlcHRhYmxlIGluIGtl
cm5lbCBjb2RlDQo+IHdpdGggYSBzbWFsbCBzdGFjayAob3V0c2lkZSBvZiBhIGZldyByYXJlIGV4
YW1wbGVzIHdoZXJlIHRoZSBkZXB0aCBoYXMgYQ0KPiBzbWFsbCBmaXhlZCB1cHBlciBib3VuZCks
IGFuZCBvbmNlIGl0IGZpbmRzIGFuIElTQSBub2RlLCBpdCByZXR1cm5zIDENCj4gZm9yZXZlciwg
cmVnYXJkbGVzcyBvZiB3aGF0IG5vZGUgeW91IHBhc3MgaW4gaW4gdGhlIGZ1dHVyZS4NCj4gDQo+
IC1TY290dA0KDQpZZXMsIHJlY3Vyc2l2ZSBmdW5jdGlvbiBpcyBub3QgcmVjb21tZW5kZWQgZm9y
IGtlcm5lbCBidXQgbWF5YmUgaXQncyBub3QgdW5hY2NlcHRhYmxlLg0KVGhpcyBmdW5jdGlvbiBp
cyBub3Qgc28gZGVlcCBzdGFja2VkIGFuZCBzaW1wbGUuIEluIG15IG9waW5pb24gdGhpcyBpcyBh
Y2NlcHRhYmxlLg0KDQpUaGFua3MuDQotSG9uZ3Rhby4NCg0K

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

* Re: [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code
  2012-07-25  2:35   ` Jia Hongtao-B38951
@ 2012-07-25 17:23     ` Scott Wood
  2012-07-26  2:09       ` Jia Hongtao-B38951
  2012-07-26  2:38       ` Jia Hongtao-B38951
  0 siblings, 2 replies; 36+ messages in thread
From: Scott Wood @ 2012-07-25 17:23 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On 07/24/2012 09:35 PM, Jia Hongtao-B38951 wrote:
> 
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Wednesday, July 25, 2012 2:43 AM
>> To: Jia Hongtao-B38951
>> Cc: linuxppc-dev@lists.ozlabs.org; galak@kernel.crashing.org; Wood Scott-
>> B07421; Li Yang-R58472
>> Subject: Re: [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization
>> code
>>
>> On 07/24/2012 05:20 AM, Jia Hongtao wrote:
>>> We unified the Freescale pci/pcie initialization by changing the
>> fsl_pci
>>> to a platform driver.
>>>
>>> In previous version pci/pcie initialization is in platform code which
>>> Initialize pci bridge base on EP/RC or host/agent settings.
>>
>> The previous version of what?  This patch, or the PCI code?  What
>> changed in this patch since the last time you sent it, and where is the
>> version number?
>>
>>> +#if defined(CONFIG_FSL_SOC_BOOKE) || defined(CONFIG_PPC_86xx)
>>> +static const struct of_device_id pci_ids[] = {
>>> +	{ .compatible = "fsl,mpc8540-pci", },
>>> +	{ .compatible = "fsl,mpc8548-pcie", },
>>> +	{ .compatible = "fsl,mpc8641-pcie", },
>>> +	{ .compatible = "fsl,p1022-pcie", },
>>> +	{ .compatible = "fsl,p1010-pcie", },
>>> +	{ .compatible = "fsl,p1023-pcie", },
>>> +	{ .compatible = "fsl,p4080-pcie", },
>>> +	{ .compatible = "fsl,qoriq-pcie-v2.3", },
>>> +	{ .compatible = "fsl,qoriq-pcie-v2.2", },
>>> +	{},
>>> +};
>>
>> Again, please base this on the latest tree, which has my PCI patches.
>> This table already exists in this file.  And you're still missing
>> fsl,mpc8610-pci.
> 
> Sorry fsl,mpc8610-pci will be added.

To what?  The table is already there in Linus's tree, with
fsl,mpc8610-pci.  You don't need to add it again.

>> It's too late for swiotlb here.  Again, please don't break something in
>> one patch and then fix it in a later patch.  Use "git rebase -i" to edit
>> your patchset into a reviewable, bisectable form.
>>
>> -Scott
> 
> Yes, bisectable requirement is sort of reasonable. 
> 
> But I check the SubmittingPatches Doc and it says "If one patch depends on
> another patch in order for a change to be complete, that is OK. Simply
> note 'this patch depends on patch X' in your patch description". In my
> opinion swiotlb is a whole functional patch so I separate them. Maybe
> I should add depends description in the next patch.

That's not what that means.  What it means is that if someone else has
already posted a patch, and your patch is supposed to go on top of that
patch, you should mention that.

> About all this patch set Leo and I insist to make it as a platform driver
> which is architectural better. I didn't base this patch set on the latest
> tree and it's unapplicable just because I want to show the whole idea of
> this patchset. If the idea is ok for upstream I will rebase the patch set.

If that's the case, you should label it as an [RFC PATCH] (stands for
Request For Comments), and mention under the --- line any known issues,
such as that it doesn't apply to the current tree.

But it would be a lot easier to comment on it if it were based on the
current code, rather than having to speculate what you'd do when you rebase.

-Scott

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

* Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-25  2:42     ` Jia Hongtao-B38951
@ 2012-07-25 17:25       ` Scott Wood
  2012-07-26  2:20         ` Jia Hongtao-B38951
  0 siblings, 1 reply; 36+ messages in thread
From: Scott Wood @ 2012-07-25 17:25 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On 07/24/2012 09:42 PM, Jia Hongtao-B38951 wrote:
> 
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Wednesday, July 25, 2012 2:48 AM
>> To: Jia Hongtao-B38951
>> Cc: linuxppc-dev@lists.ozlabs.org; galak@kernel.crashing.org; Wood Scott-
>> B07421; Li Yang-R58472
>> Subject: Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by
>> looking for ISA node
>>
>> On 07/24/2012 05:20 AM, Jia Hongtao wrote:
>>> PCI host bridge is primary bus if it contains an ISA node. But not all
>> boards
>>> fit this rule. Device tree should be updated for all these boards.
>>>
>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>> ---
>>>  arch/powerpc/include/asm/pci-bridge.h |    1 +
>>>  arch/powerpc/sysdev/fsl_pci.c         |   31 ++++++++++++++++++++++++-
>> ------
>>>  arch/powerpc/sysdev/fsl_pci.h         |   12 +++++++++++-
>>>  3 files changed, 36 insertions(+), 8 deletions(-)
>>>
>>> diff --git a/arch/powerpc/include/asm/pci-bridge.h
>> b/arch/powerpc/include/asm/pci-bridge.h
>>> index ac39e6a..b48fa7f 100644
>>> --- a/arch/powerpc/include/asm/pci-bridge.h
>>> +++ b/arch/powerpc/include/asm/pci-bridge.h
>>> @@ -20,6 +20,7 @@ struct device_node;
>>>  struct pci_controller {
>>>  	struct pci_bus *bus;
>>>  	char is_dynamic;
>>> +	int is_primary;
>>>  #ifdef CONFIG_PPC64
>>>  	int node;
>>>  #endif
>>> diff --git a/arch/powerpc/sysdev/fsl_pci.c
>> b/arch/powerpc/sysdev/fsl_pci.c
>>> index 99a3e78..2a369be 100644
>>> --- a/arch/powerpc/sysdev/fsl_pci.c
>>> +++ b/arch/powerpc/sysdev/fsl_pci.c
>>> @@ -453,6 +453,7 @@ int __init fsl_add_bridge(struct device_node *dev,
>> int is_primary)
>>>
>>>  	hose->first_busno = bus_range ? bus_range[0] : 0x0;
>>>  	hose->last_busno = bus_range ? bus_range[1] : 0xff;
>>> +	hose->is_primary = is_primary;
>>>
>>>  	setup_indirect_pci(hose, rsrc.start, rsrc.start + 0x4,
>>>  		PPC_INDIRECT_TYPE_BIG_ENDIAN);
>>> @@ -932,18 +933,34 @@ void pci_check_swiotlb(void)
>>>  }
>>>  #endif
>>>
>>> -int primary_phb_addr;
>>> +/*
>>> + * Recursively scan all the children nodes of parent and find out if
>> there
>>> + * is "isa" node. Return 1 if parent has isa node otherwise return 0.
>>> + */
>>> +int has_isa_node(struct device_node *parent)
>>> +{
>>> +	static int result;
>>> +	struct device_node *cur_child;
>>> +
>>> +	cur_child = NULL;
>>> +	result = 0;
>>> +	while (!result && (cur_child = of_get_next_child(parent,
>> cur_child))) {
>>> +		/* Get "isa" node and return 1 */
>>> +		if (of_node_cmp(cur_child->type, "isa") == 0)
>>> +			return result = 1;
>>> +		has_isa_node(cur_child);
>>> +	}
>>> +
>>> +	return result;
>>> +}
>>
>> Why are you reimplementing this?  It's already in Linus's tree.  See
>> fsl_pci_init().
>>
>> Plus, your version is recursive which is unacceptable in kernel code
>> with a small stack (outside of a few rare examples where the depth has a
>> small fixed upper bound), and once it finds an ISA node, it returns 1
>> forever, regardless of what node you pass in in the future.
>>
>> -Scott
> 
> About recursion I will do some more investigation.
> If it finds ISA it returns 1. But for next PCI node it will return 0 if
> no ISA is found (note that I set result to 0 at the beginning).

Sorry, I misread that as an initializer.  Still, it's awkward (why not
just use a return value?) and non-thread-safe (may not matter here, but
it's a bad habit), and it's still an unacceptable use of recursion, and
still a reimplementation of functionality that already exists. :-)

-Scott

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

* Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-25  9:01     ` Jia Hongtao-B38951
@ 2012-07-25 17:27       ` Scott Wood
  0 siblings, 0 replies; 36+ messages in thread
From: Scott Wood @ 2012-07-25 17:27 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On 07/25/2012 04:01 AM, Jia Hongtao-B38951 wrote:
>>> +/*
>>> + * Recursively scan all the children nodes of parent and find out if
>> there
>>> + * is "isa" node. Return 1 if parent has isa node otherwise return 0.
>>> + */
>>> +int has_isa_node(struct device_node *parent)
>>> +{
>>> +	static int result;
>>> +	struct device_node *cur_child;
>>> +
>>> +	cur_child = NULL;
>>> +	result = 0;
>>> +	while (!result && (cur_child = of_get_next_child(parent,
>> cur_child))) {
>>> +		/* Get "isa" node and return 1 */
>>> +		if (of_node_cmp(cur_child->type, "isa") == 0)
>>> +			return result = 1;
>>> +		has_isa_node(cur_child);
>>> +	}
>>> +
>>> +	return result;
>>> +}
>>
>> Why are you reimplementing this?  It's already in Linus's tree.  See
>> fsl_pci_init().
>>
>> Plus, your version is recursive which is unacceptable in kernel code
>> with a small stack (outside of a few rare examples where the depth has a
>> small fixed upper bound), and once it finds an ISA node, it returns 1
>> forever, regardless of what node you pass in in the future.
>>
>> -Scott
> 
> Yes, recursive function is not recommended for kernel but maybe it's not unacceptable.
> This function is not so deep stacked and simple. In my opinion this is acceptable.

The depth is limited not by code, but by externally provided data.

Granted a bad device tree can mess the kernel up in far worse ways, but
still it's a bad idea and totally unnecessary.

-Scott

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

* RE: [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code
  2012-07-25 17:23     ` Scott Wood
@ 2012-07-26  2:09       ` Jia Hongtao-B38951
  2012-07-26  2:38       ` Jia Hongtao-B38951
  1 sibling, 0 replies; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-26  2:09 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

VGhhbmtzIGZvciBhbGwgeW91ciBjb21tZW50cy4NCkkgc3VibWl0IHRoZSBWMiBvZiB0aGlzIHBh
dGNoIHNldCB3aGljaCBpcyBiYXNlZCBvbiB0aGUgbGF0ZXN0IHRyZWUuDQpQbGVhc2UgaGF2ZSBh
IHJldmlldy4NCg0KVGhhbmtzDQotSG9uZ3Rhby4NCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut
LS0tLQ0KPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0KPiBTZW50OiBUaHVyc2RheSwgSnVseSAy
NiwgMjAxMiAxOjI0IEFNDQo+IFRvOiBKaWEgSG9uZ3Rhby1CMzg5NTENCj4gQ2M6IFdvb2QgU2Nv
dHQtQjA3NDIxOyBsaW51eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZzsNCj4gZ2FsYWtAa2VybmVs
LmNyYXNoaW5nLm9yZzsgTGkgWWFuZy1SNTg0NzINCj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzZd
IHBvd2VycGMvZnNsLXBjaTogVW5pZnkgcGNpL3BjaWUgaW5pdGlhbGl6YXRpb24NCj4gY29kZQ0K
PiANCj4gT24gMDcvMjQvMjAxMiAwOTozNSBQTSwgSmlhIEhvbmd0YW8tQjM4OTUxIHdyb3RlOg0K
PiA+DQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogV29v
ZCBTY290dC1CMDc0MjENCj4gPj4gU2VudDogV2VkbmVzZGF5LCBKdWx5IDI1LCAyMDEyIDI6NDMg
QU0NCj4gPj4gVG86IEppYSBIb25ndGFvLUIzODk1MQ0KPiA+PiBDYzogbGludXhwcGMtZGV2QGxp
c3RzLm96bGFicy5vcmc7IGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc7IFdvb2QNCj4gU2NvdHQt
DQo+ID4+IEIwNzQyMTsgTGkgWWFuZy1SNTg0NzINCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCAx
LzZdIHBvd2VycGMvZnNsLXBjaTogVW5pZnkgcGNpL3BjaWUNCj4gaW5pdGlhbGl6YXRpb24NCj4g
Pj4gY29kZQ0KPiA+Pg0KPiA+PiBPbiAwNy8yNC8yMDEyIDA1OjIwIEFNLCBKaWEgSG9uZ3RhbyB3
cm90ZToNCj4gPj4+IFdlIHVuaWZpZWQgdGhlIEZyZWVzY2FsZSBwY2kvcGNpZSBpbml0aWFsaXph
dGlvbiBieSBjaGFuZ2luZyB0aGUNCj4gPj4gZnNsX3BjaQ0KPiA+Pj4gdG8gYSBwbGF0Zm9ybSBk
cml2ZXIuDQo+ID4+Pg0KPiA+Pj4gSW4gcHJldmlvdXMgdmVyc2lvbiBwY2kvcGNpZSBpbml0aWFs
aXphdGlvbiBpcyBpbiBwbGF0Zm9ybSBjb2RlIHdoaWNoDQo+ID4+PiBJbml0aWFsaXplIHBjaSBi
cmlkZ2UgYmFzZSBvbiBFUC9SQyBvciBob3N0L2FnZW50IHNldHRpbmdzLg0KPiA+Pg0KPiA+PiBU
aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB3aGF0PyAgVGhpcyBwYXRjaCwgb3IgdGhlIFBDSSBjb2Rl
PyAgV2hhdA0KPiA+PiBjaGFuZ2VkIGluIHRoaXMgcGF0Y2ggc2luY2UgdGhlIGxhc3QgdGltZSB5
b3Ugc2VudCBpdCwgYW5kIHdoZXJlIGlzDQo+IHRoZQ0KPiA+PiB2ZXJzaW9uIG51bWJlcj8NCj4g
Pj4NCj4gPj4+ICsjaWYgZGVmaW5lZChDT05GSUdfRlNMX1NPQ19CT09LRSkgfHwgZGVmaW5lZChD
T05GSUdfUFBDXzg2eHgpDQo+ID4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQg
cGNpX2lkc1tdID0gew0KPiA+Pj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxtcGM4NTQwLXBjaSIs
IH0sDQo+ID4+PiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLG1wYzg1NDgtcGNpZSIsIH0sDQo+ID4+
PiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLG1wYzg2NDEtcGNpZSIsIH0sDQo+ID4+PiArCXsgLmNv
bXBhdGlibGUgPSAiZnNsLHAxMDIyLXBjaWUiLCB9LA0KPiA+Pj4gKwl7IC5jb21wYXRpYmxlID0g
ImZzbCxwMTAxMC1wY2llIiwgfSwNCj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wscDEwMjMt
cGNpZSIsIH0sDQo+ID4+PiArCXsgLmNvbXBhdGlibGUgPSAiZnNsLHA0MDgwLXBjaWUiLCB9LA0K
PiA+Pj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxxb3JpcS1wY2llLXYyLjMiLCB9LA0KPiA+Pj4g
Kwl7IC5jb21wYXRpYmxlID0gImZzbCxxb3JpcS1wY2llLXYyLjIiLCB9LA0KPiA+Pj4gKwl7fSwN
Cj4gPj4+ICt9Ow0KPiA+Pg0KPiA+PiBBZ2FpbiwgcGxlYXNlIGJhc2UgdGhpcyBvbiB0aGUgbGF0
ZXN0IHRyZWUsIHdoaWNoIGhhcyBteSBQQ0kgcGF0Y2hlcy4NCj4gPj4gVGhpcyB0YWJsZSBhbHJl
YWR5IGV4aXN0cyBpbiB0aGlzIGZpbGUuICBBbmQgeW91J3JlIHN0aWxsIG1pc3NpbmcNCj4gPj4g
ZnNsLG1wYzg2MTAtcGNpLg0KPiA+DQo+ID4gU29ycnkgZnNsLG1wYzg2MTAtcGNpIHdpbGwgYmUg
YWRkZWQuDQo+IA0KPiBUbyB3aGF0PyAgVGhlIHRhYmxlIGlzIGFscmVhZHkgdGhlcmUgaW4gTGlu
dXMncyB0cmVlLCB3aXRoDQo+IGZzbCxtcGM4NjEwLXBjaS4gIFlvdSBkb24ndCBuZWVkIHRvIGFk
ZCBpdCBhZ2Fpbi4NCj4gDQo+ID4+IEl0J3MgdG9vIGxhdGUgZm9yIHN3aW90bGIgaGVyZS4gIEFn
YWluLCBwbGVhc2UgZG9uJ3QgYnJlYWsgc29tZXRoaW5nDQo+IGluDQo+ID4+IG9uZSBwYXRjaCBh
bmQgdGhlbiBmaXggaXQgaW4gYSBsYXRlciBwYXRjaC4gIFVzZSAiZ2l0IHJlYmFzZSAtaSIgdG8N
Cj4gZWRpdA0KPiA+PiB5b3VyIHBhdGNoc2V0IGludG8gYSByZXZpZXdhYmxlLCBiaXNlY3RhYmxl
IGZvcm0uDQo+ID4+DQo+ID4+IC1TY290dA0KPiA+DQo+ID4gWWVzLCBiaXNlY3RhYmxlIHJlcXVp
cmVtZW50IGlzIHNvcnQgb2YgcmVhc29uYWJsZS4NCj4gPg0KPiA+IEJ1dCBJIGNoZWNrIHRoZSBT
dWJtaXR0aW5nUGF0Y2hlcyBEb2MgYW5kIGl0IHNheXMgIklmIG9uZSBwYXRjaCBkZXBlbmRzDQo+
IG9uDQo+ID4gYW5vdGhlciBwYXRjaCBpbiBvcmRlciBmb3IgYSBjaGFuZ2UgdG8gYmUgY29tcGxl
dGUsIHRoYXQgaXMgT0suIFNpbXBseQ0KPiA+IG5vdGUgJ3RoaXMgcGF0Y2ggZGVwZW5kcyBvbiBw
YXRjaCBYJyBpbiB5b3VyIHBhdGNoIGRlc2NyaXB0aW9uIi4gSW4gbXkNCj4gPiBvcGluaW9uIHN3
aW90bGIgaXMgYSB3aG9sZSBmdW5jdGlvbmFsIHBhdGNoIHNvIEkgc2VwYXJhdGUgdGhlbS4gTWF5
YmUNCj4gPiBJIHNob3VsZCBhZGQgZGVwZW5kcyBkZXNjcmlwdGlvbiBpbiB0aGUgbmV4dCBwYXRj
aC4NCj4gDQo+IFRoYXQncyBub3Qgd2hhdCB0aGF0IG1lYW5zLiAgV2hhdCBpdCBtZWFucyBpcyB0
aGF0IGlmIHNvbWVvbmUgZWxzZSBoYXMNCj4gYWxyZWFkeSBwb3N0ZWQgYSBwYXRjaCwgYW5kIHlv
dXIgcGF0Y2ggaXMgc3VwcG9zZWQgdG8gZ28gb24gdG9wIG9mIHRoYXQNCj4gcGF0Y2gsIHlvdSBz
aG91bGQgbWVudGlvbiB0aGF0Lg0KPiANCj4gPiBBYm91dCBhbGwgdGhpcyBwYXRjaCBzZXQgTGVv
IGFuZCBJIGluc2lzdCB0byBtYWtlIGl0IGFzIGEgcGxhdGZvcm0NCj4gZHJpdmVyDQo+ID4gd2hp
Y2ggaXMgYXJjaGl0ZWN0dXJhbCBiZXR0ZXIuIEkgZGlkbid0IGJhc2UgdGhpcyBwYXRjaCBzZXQg
b24gdGhlDQo+IGxhdGVzdA0KPiA+IHRyZWUgYW5kIGl0J3MgdW5hcHBsaWNhYmxlIGp1c3QgYmVj
YXVzZSBJIHdhbnQgdG8gc2hvdyB0aGUgd2hvbGUgaWRlYQ0KPiBvZg0KPiA+IHRoaXMgcGF0Y2hz
ZXQuIElmIHRoZSBpZGVhIGlzIG9rIGZvciB1cHN0cmVhbSBJIHdpbGwgcmViYXNlIHRoZSBwYXRj
aA0KPiBzZXQuDQo+IA0KPiBJZiB0aGF0J3MgdGhlIGNhc2UsIHlvdSBzaG91bGQgbGFiZWwgaXQg
YXMgYW4gW1JGQyBQQVRDSF0gKHN0YW5kcyBmb3INCj4gUmVxdWVzdCBGb3IgQ29tbWVudHMpLCBh
bmQgbWVudGlvbiB1bmRlciB0aGUgLS0tIGxpbmUgYW55IGtub3duIGlzc3VlcywNCj4gc3VjaCBh
cyB0aGF0IGl0IGRvZXNuJ3QgYXBwbHkgdG8gdGhlIGN1cnJlbnQgdHJlZS4NCj4gDQo+IEJ1dCBp
dCB3b3VsZCBiZSBhIGxvdCBlYXNpZXIgdG8gY29tbWVudCBvbiBpdCBpZiBpdCB3ZXJlIGJhc2Vk
IG9uIHRoZQ0KPiBjdXJyZW50IGNvZGUsIHJhdGhlciB0aGFuIGhhdmluZyB0byBzcGVjdWxhdGUg
d2hhdCB5b3UnZCBkbyB3aGVuIHlvdQ0KPiByZWJhc2UuDQo+IA0KPiAtU2NvdHQNCg0K

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

* RE: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-25 17:25       ` Scott Wood
@ 2012-07-26  2:20         ` Jia Hongtao-B38951
  2012-07-27  1:34           ` Scott Wood
  0 siblings, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-26  2:20 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBXb29kIFNjb3R0LUIwNzQyMQ0K
PiBTZW50OiBUaHVyc2RheSwgSnVseSAyNiwgMjAxMiAxOjI2IEFNDQo+IFRvOiBKaWEgSG9uZ3Rh
by1CMzg5NTENCj4gQ2M6IFdvb2QgU2NvdHQtQjA3NDIxOyBsaW51eHBwYy1kZXZAbGlzdHMub3ps
YWJzLm9yZzsNCj4gZ2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZzsgTGkgWWFuZy1SNTg0NzINCj4g
U3ViamVjdDogUmU6IFtQQVRDSCAzLzZdIHBvd2VycGMvZnNsLXBjaTogRGV0ZXJtaW5lIHByaW1h
cnkgYnVzIGJ5IGxvb2tpbmcNCj4gZm9yIElTQSBub2RlDQo+IA0KPiA+Pj4gKy8qDQo+ID4+PiAr
ICogUmVjdXJzaXZlbHkgc2NhbiBhbGwgdGhlIGNoaWxkcmVuIG5vZGVzIG9mIHBhcmVudCBhbmQg
ZmluZCBvdXQgaWYNCj4gPj4gdGhlcmUNCj4gPj4+ICsgKiBpcyAiaXNhIiBub2RlLiBSZXR1cm4g
MSBpZiBwYXJlbnQgaGFzIGlzYSBub2RlIG90aGVyd2lzZSByZXR1cm4gMC4NCj4gPj4+ICsgKi8N
Cj4gPj4+ICtpbnQgaGFzX2lzYV9ub2RlKHN0cnVjdCBkZXZpY2Vfbm9kZSAqcGFyZW50KQ0KPiA+
Pj4gK3sNCj4gPj4+ICsJc3RhdGljIGludCByZXN1bHQ7DQo+ID4+PiArCXN0cnVjdCBkZXZpY2Vf
bm9kZSAqY3VyX2NoaWxkOw0KPiA+Pj4gKw0KPiA+Pj4gKwljdXJfY2hpbGQgPSBOVUxMOw0KPiA+
Pj4gKwlyZXN1bHQgPSAwOw0KPiA+Pj4gKwl3aGlsZSAoIXJlc3VsdCAmJiAoY3VyX2NoaWxkID0g
b2ZfZ2V0X25leHRfY2hpbGQocGFyZW50LA0KPiA+PiBjdXJfY2hpbGQpKSkgew0KPiA+Pj4gKwkJ
LyogR2V0ICJpc2EiIG5vZGUgYW5kIHJldHVybiAxICovDQo+ID4+PiArCQlpZiAob2Zfbm9kZV9j
bXAoY3VyX2NoaWxkLT50eXBlLCAiaXNhIikgPT0gMCkNCj4gPj4+ICsJCQlyZXR1cm4gcmVzdWx0
ID0gMTsNCj4gPj4+ICsJCWhhc19pc2Ffbm9kZShjdXJfY2hpbGQpOw0KPiA+Pj4gKwl9DQo+ID4+
PiArDQo+ID4+PiArCXJldHVybiByZXN1bHQ7DQo+ID4+PiArfQ0KPiA+Pg0KPiA+PiBXaHkgYXJl
IHlvdSByZWltcGxlbWVudGluZyB0aGlzPyAgSXQncyBhbHJlYWR5IGluIExpbnVzJ3MgdHJlZS4g
IFNlZQ0KPiA+PiBmc2xfcGNpX2luaXQoKS4NCj4gPj4NCj4gPj4gUGx1cywgeW91ciB2ZXJzaW9u
IGlzIHJlY3Vyc2l2ZSB3aGljaCBpcyB1bmFjY2VwdGFibGUgaW4ga2VybmVsIGNvZGUNCj4gPj4g
d2l0aCBhIHNtYWxsIHN0YWNrIChvdXRzaWRlIG9mIGEgZmV3IHJhcmUgZXhhbXBsZXMgd2hlcmUg
dGhlIGRlcHRoIGhhcw0KPiBhDQo+ID4+IHNtYWxsIGZpeGVkIHVwcGVyIGJvdW5kKSwgYW5kIG9u
Y2UgaXQgZmluZHMgYW4gSVNBIG5vZGUsIGl0IHJldHVybnMgMQ0KPiA+PiBmb3JldmVyLCByZWdh
cmRsZXNzIG9mIHdoYXQgbm9kZSB5b3UgcGFzcyBpbiBpbiB0aGUgZnV0dXJlLg0KPiA+Pg0KPiA+
PiAtU2NvdHQNCj4gPg0KPiA+IEFib3V0IHJlY3Vyc2lvbiBJIHdpbGwgZG8gc29tZSBtb3JlIGlu
dmVzdGlnYXRpb24uDQo+ID4gSWYgaXQgZmluZHMgSVNBIGl0IHJldHVybnMgMS4gQnV0IGZvciBu
ZXh0IFBDSSBub2RlIGl0IHdpbGwgcmV0dXJuIDAgaWYNCj4gPiBubyBJU0EgaXMgZm91bmQgKG5v
dGUgdGhhdCBJIHNldCByZXN1bHQgdG8gMCBhdCB0aGUgYmVnaW5uaW5nKS4NCj4gDQo+IFNvcnJ5
LCBJIG1pc3JlYWQgdGhhdCBhcyBhbiBpbml0aWFsaXplci4gIFN0aWxsLCBpdCdzIGF3a3dhcmQg
KHdoeSBub3QNCj4ganVzdCB1c2UgYSByZXR1cm4gdmFsdWU/KSBhbmQgbm9uLXRocmVhZC1zYWZl
IChtYXkgbm90IG1hdHRlciBoZXJlLCBidXQNCj4gaXQncyBhIGJhZCBoYWJpdCksIGFuZCBpdCdz
IHN0aWxsIGFuIHVuYWNjZXB0YWJsZSB1c2Ugb2YgcmVjdXJzaW9uLCBhbmQNCj4gc3RpbGwgYSBy
ZWltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCBhbHJlYWR5IGV4aXN0cy4gOi0p
DQo+IA0KPiAtU2NvdHQNCg0KQWxsIHRoaXMgcmVjdXJzaW9uIHRoaW5nIEkgd2lsbCB0cnkgYW5v
dGhlciB3YXkuDQoNCkJ1dCB0aGlzIGlzIG5vdCB0aGUgc2FtZSBhcyB5b3UgZGlkLiBJZiB3ZSB1
c2UgcGxhdGZvcm0gZHJpdmVyIHByb2JlIGZ1bmN0aW9uDQp3aWxsIGJlIGNhbGxlZCBtb3JlIHRo
YW4gb25jZS4gWW91ciBmdW5jdGlvbiBpcyB0byBmaW5kIElTQSBub2RlIGFuZCBjaGVjayBpZg0K
dGhlIHBhcmVudCBlcXVhbCB0byB0aGlzIFBDSSBjb250cm9sbGVyLiBNeSBmdW5jdGlvbiBpcyB0
byBzZWFyY2ggSVNBIHVuZGVyDQplYWNoIFBDSSBjb250cm9sbGVyLiBJZiB0aGUgcGxhdGZvcm0g
ZHJpdmVyIG1lY2hhbmlzbSBpcyB1c2VkIEkgdGhpbmsgdGhpcw0KZnVuY3Rpb24gaXMgbmVjZXNz
YXJ5IGFuZCByZWFzb25hYmxlLg0KDQotSG9uZ3Rhby4NCg0K

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

* RE: [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code
  2012-07-25 17:23     ` Scott Wood
  2012-07-26  2:09       ` Jia Hongtao-B38951
@ 2012-07-26  2:38       ` Jia Hongtao-B38951
  1 sibling, 0 replies; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-26  2:38 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVGh1cnNkYXksIEp1bHkgMjYsIDIwMTIgMToyNCBBTQ0KPiBUbzogSmlhIEhv
bmd0YW8tQjM4OTUxDQo+IENjOiBXb29kIFNjb3R0LUIwNzQyMTsgbGludXhwcGMtZGV2QGxpc3Rz
Lm96bGFicy5vcmc7DQo+IGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc7IExpIFlhbmctUjU4NDcy
DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS82XSBwb3dlcnBjL2ZzbC1wY2k6IFVuaWZ5IHBjaS9w
Y2llIGluaXRpYWxpemF0aW9uDQo+IGNvZGUNCj4gDQo+IE9uIDA3LzI0LzIwMTIgMDk6MzUgUE0s
IEppYSBIb25ndGFvLUIzODk1MSB3cm90ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwg
TWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IFdvb2QgU2NvdHQtQjA3NDIxDQo+ID4+IFNlbnQ6IFdl
ZG5lc2RheSwgSnVseSAyNSwgMjAxMiAyOjQzIEFNDQo+ID4+IFRvOiBKaWEgSG9uZ3Rhby1CMzg5
NTENCj4gPj4gQ2M6IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyBnYWxha0BrZXJuZWwu
Y3Jhc2hpbmcub3JnOyBXb29kDQo+IFNjb3R0LQ0KPiA+PiBCMDc0MjE7IExpIFlhbmctUjU4NDcy
DQo+ID4+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS82XSBwb3dlcnBjL2ZzbC1wY2k6IFVuaWZ5IHBj
aS9wY2llDQo+IGluaXRpYWxpemF0aW9uDQo+ID4+IGNvZGUNCj4gPj4NCj4gPj4gT24gMDcvMjQv
MjAxMiAwNToyMCBBTSwgSmlhIEhvbmd0YW8gd3JvdGU6DQo+ID4+PiBXZSB1bmlmaWVkIHRoZSBG
cmVlc2NhbGUgcGNpL3BjaWUgaW5pdGlhbGl6YXRpb24gYnkgY2hhbmdpbmcgdGhlDQo+ID4+IGZz
bF9wY2kNCj4gPj4+IHRvIGEgcGxhdGZvcm0gZHJpdmVyLg0KPiA+Pj4NCj4gPj4+IEluIHByZXZp
b3VzIHZlcnNpb24gcGNpL3BjaWUgaW5pdGlhbGl6YXRpb24gaXMgaW4gcGxhdGZvcm0gY29kZSB3
aGljaA0KPiA+Pj4gSW5pdGlhbGl6ZSBwY2kgYnJpZGdlIGJhc2Ugb24gRVAvUkMgb3IgaG9zdC9h
Z2VudCBzZXR0aW5ncy4NCj4gPj4NCj4gPj4gVGhlIHByZXZpb3VzIHZlcnNpb24gb2Ygd2hhdD8g
IFRoaXMgcGF0Y2gsIG9yIHRoZSBQQ0kgY29kZT8gIFdoYXQNCj4gPj4gY2hhbmdlZCBpbiB0aGlz
IHBhdGNoIHNpbmNlIHRoZSBsYXN0IHRpbWUgeW91IHNlbnQgaXQsIGFuZCB3aGVyZSBpcw0KPiB0
aGUNCj4gPj4gdmVyc2lvbiBudW1iZXI/DQo+ID4+DQo+ID4+PiArI2lmIGRlZmluZWQoQ09ORklH
X0ZTTF9TT0NfQk9PS0UpIHx8IGRlZmluZWQoQ09ORklHX1BQQ184Nnh4KQ0KPiA+Pj4gK3N0YXRp
YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHBjaV9pZHNbXSA9IHsNCj4gPj4+ICsJeyAuY29t
cGF0aWJsZSA9ICJmc2wsbXBjODU0MC1wY2kiLCB9LA0KPiA+Pj4gKwl7IC5jb21wYXRpYmxlID0g
ImZzbCxtcGM4NTQ4LXBjaWUiLCB9LA0KPiA+Pj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxtcGM4
NjQxLXBjaWUiLCB9LA0KPiA+Pj4gKwl7IC5jb21wYXRpYmxlID0gImZzbCxwMTAyMi1wY2llIiwg
fSwNCj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wscDEwMTAtcGNpZSIsIH0sDQo+ID4+PiAr
CXsgLmNvbXBhdGlibGUgPSAiZnNsLHAxMDIzLXBjaWUiLCB9LA0KPiA+Pj4gKwl7IC5jb21wYXRp
YmxlID0gImZzbCxwNDA4MC1wY2llIiwgfSwNCj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2ws
cW9yaXEtcGNpZS12Mi4zIiwgfSwNCj4gPj4+ICsJeyAuY29tcGF0aWJsZSA9ICJmc2wscW9yaXEt
cGNpZS12Mi4yIiwgfSwNCj4gPj4+ICsJe30sDQo+ID4+PiArfTsNCj4gPj4NCj4gPj4gQWdhaW4s
IHBsZWFzZSBiYXNlIHRoaXMgb24gdGhlIGxhdGVzdCB0cmVlLCB3aGljaCBoYXMgbXkgUENJIHBh
dGNoZXMuDQo+ID4+IFRoaXMgdGFibGUgYWxyZWFkeSBleGlzdHMgaW4gdGhpcyBmaWxlLiAgQW5k
IHlvdSdyZSBzdGlsbCBtaXNzaW5nDQo+ID4+IGZzbCxtcGM4NjEwLXBjaS4NCj4gPg0KPiA+IFNv
cnJ5IGZzbCxtcGM4NjEwLXBjaSB3aWxsIGJlIGFkZGVkLg0KPiANCj4gVG8gd2hhdD8gIFRoZSB0
YWJsZSBpcyBhbHJlYWR5IHRoZXJlIGluIExpbnVzJ3MgdHJlZSwgd2l0aA0KPiBmc2wsbXBjODYx
MC1wY2kuICBZb3UgZG9uJ3QgbmVlZCB0byBhZGQgaXQgYWdhaW4uDQo+IA0KPiA+PiBJdCdzIHRv
byBsYXRlIGZvciBzd2lvdGxiIGhlcmUuICBBZ2FpbiwgcGxlYXNlIGRvbid0IGJyZWFrIHNvbWV0
aGluZw0KPiBpbg0KPiA+PiBvbmUgcGF0Y2ggYW5kIHRoZW4gZml4IGl0IGluIGEgbGF0ZXIgcGF0
Y2guICBVc2UgImdpdCByZWJhc2UgLWkiIHRvDQo+IGVkaXQNCj4gPj4geW91ciBwYXRjaHNldCBp
bnRvIGEgcmV2aWV3YWJsZSwgYmlzZWN0YWJsZSBmb3JtLg0KPiA+Pg0KPiA+PiAtU2NvdHQNCj4g
Pg0KPiA+IFllcywgYmlzZWN0YWJsZSByZXF1aXJlbWVudCBpcyBzb3J0IG9mIHJlYXNvbmFibGUu
DQo+ID4NCj4gPiBCdXQgSSBjaGVjayB0aGUgU3VibWl0dGluZ1BhdGNoZXMgRG9jIGFuZCBpdCBz
YXlzICJJZiBvbmUgcGF0Y2ggZGVwZW5kcw0KPiBvbg0KPiA+IGFub3RoZXIgcGF0Y2ggaW4gb3Jk
ZXIgZm9yIGEgY2hhbmdlIHRvIGJlIGNvbXBsZXRlLCB0aGF0IGlzIE9LLiBTaW1wbHkNCj4gPiBu
b3RlICd0aGlzIHBhdGNoIGRlcGVuZHMgb24gcGF0Y2ggWCcgaW4geW91ciBwYXRjaCBkZXNjcmlw
dGlvbiIuIEluIG15DQo+ID4gb3BpbmlvbiBzd2lvdGxiIGlzIGEgd2hvbGUgZnVuY3Rpb25hbCBw
YXRjaCBzbyBJIHNlcGFyYXRlIHRoZW0uIE1heWJlDQo+ID4gSSBzaG91bGQgYWRkIGRlcGVuZHMg
ZGVzY3JpcHRpb24gaW4gdGhlIG5leHQgcGF0Y2guDQo+IA0KPiBUaGF0J3Mgbm90IHdoYXQgdGhh
dCBtZWFucy4gIFdoYXQgaXQgbWVhbnMgaXMgdGhhdCBpZiBzb21lb25lIGVsc2UgaGFzDQo+IGFs
cmVhZHkgcG9zdGVkIGEgcGF0Y2gsIGFuZCB5b3VyIHBhdGNoIGlzIHN1cHBvc2VkIHRvIGdvIG9u
IHRvcCBvZiB0aGF0DQo+IHBhdGNoLCB5b3Ugc2hvdWxkIG1lbnRpb24gdGhhdC4NCj4gDQo+ID4g
QWJvdXQgYWxsIHRoaXMgcGF0Y2ggc2V0IExlbyBhbmQgSSBpbnNpc3QgdG8gbWFrZSBpdCBhcyBh
IHBsYXRmb3JtDQo+IGRyaXZlcg0KPiA+IHdoaWNoIGlzIGFyY2hpdGVjdHVyYWwgYmV0dGVyLiBJ
IGRpZG4ndCBiYXNlIHRoaXMgcGF0Y2ggc2V0IG9uIHRoZQ0KPiBsYXRlc3QNCj4gPiB0cmVlIGFu
ZCBpdCdzIHVuYXBwbGljYWJsZSBqdXN0IGJlY2F1c2UgSSB3YW50IHRvIHNob3cgdGhlIHdob2xl
IGlkZWENCj4gb2YNCj4gPiB0aGlzIHBhdGNoc2V0LiBJZiB0aGUgaWRlYSBpcyBvayBmb3IgdXBz
dHJlYW0gSSB3aWxsIHJlYmFzZSB0aGUgcGF0Y2gNCj4gc2V0Lg0KPiANCj4gSWYgdGhhdCdzIHRo
ZSBjYXNlLCB5b3Ugc2hvdWxkIGxhYmVsIGl0IGFzIGFuIFtSRkMgUEFUQ0hdIChzdGFuZHMgZm9y
DQo+IFJlcXVlc3QgRm9yIENvbW1lbnRzKSwgYW5kIG1lbnRpb24gdW5kZXIgdGhlIC0tLSBsaW5l
IGFueSBrbm93biBpc3N1ZXMsDQo+IHN1Y2ggYXMgdGhhdCBpdCBkb2Vzbid0IGFwcGx5IHRvIHRo
ZSBjdXJyZW50IHRyZWUuDQo+IA0KDQpJIHdpbGwgZGlzY3VzcyB3aXRoIExlbyBhbmQgcmVzdWJt
aXQgdGhlIHBhdGNoIGlmIG5lY2Vzc2FyeS4NCg0KVGhhbmtzLg0KLUhvbmd0YW8uDQo=

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

* Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-26  2:20         ` Jia Hongtao-B38951
@ 2012-07-27  1:34           ` Scott Wood
  2012-07-27  2:07             ` Jia Hongtao-B38951
  0 siblings, 1 reply; 36+ messages in thread
From: Scott Wood @ 2012-07-27  1:34 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On 07/25/2012 09:20 PM, Jia Hongtao-B38951 wrote:
> All this recursion thing I will try another way.
> 
> But this is not the same as you did. If we use platform driver probe function
> will be called more than once. Your function is to find ISA node and check if
> the parent equal to this PCI controller. My function is to search ISA under
> each PCI controller.

The result is the same -- "does this PCI controller have an ISA node
under it?"

-Scott

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

* RE: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-27  1:34           ` Scott Wood
@ 2012-07-27  2:07             ` Jia Hongtao-B38951
  2012-07-27 16:37               ` Scott Wood
  0 siblings, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-27  2:07 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogRnJpZGF5LCBKdWx5IDI3LCAyMDEyIDk6MzQgQU0NCj4gVG86IEppYSBIb25n
dGFvLUIzODk1MQ0KPiBDYzogV29vZCBTY290dC1CMDc0MjE7IGxpbnV4cHBjLWRldkBsaXN0cy5v
emxhYnMub3JnOw0KPiBnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnOyBMaSBZYW5nLVI1ODQ3Mg0K
PiBTdWJqZWN0OiBSZTogW1BBVENIIDMvNl0gcG93ZXJwYy9mc2wtcGNpOiBEZXRlcm1pbmUgcHJp
bWFyeSBidXMgYnkNCj4gbG9va2luZyBmb3IgSVNBIG5vZGUNCj4gDQo+IE9uIDA3LzI1LzIwMTIg
MDk6MjAgUE0sIEppYSBIb25ndGFvLUIzODk1MSB3cm90ZToNCj4gPiBBbGwgdGhpcyByZWN1cnNp
b24gdGhpbmcgSSB3aWxsIHRyeSBhbm90aGVyIHdheS4NCj4gPg0KPiA+IEJ1dCB0aGlzIGlzIG5v
dCB0aGUgc2FtZSBhcyB5b3UgZGlkLiBJZiB3ZSB1c2UgcGxhdGZvcm0gZHJpdmVyIHByb2JlDQo+
IGZ1bmN0aW9uDQo+ID4gd2lsbCBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuIFlvdXIgZnVuY3Rp
b24gaXMgdG8gZmluZCBJU0Egbm9kZSBhbmQNCj4gY2hlY2sgaWYNCj4gPiB0aGUgcGFyZW50IGVx
dWFsIHRvIHRoaXMgUENJIGNvbnRyb2xsZXIuIE15IGZ1bmN0aW9uIGlzIHRvIHNlYXJjaCBJU0EN
Cj4gdW5kZXINCj4gPiBlYWNoIFBDSSBjb250cm9sbGVyLg0KPiANCj4gVGhlIHJlc3VsdCBpcyB0
aGUgc2FtZSAtLSAiZG9lcyB0aGlzIFBDSSBjb250cm9sbGVyIGhhdmUgYW4gSVNBIG5vZGUNCj4g
dW5kZXIgaXQ/Ig0KPiANCj4gLVNjb3R0DQoNCg0KVGhlIHJlc3VsdCBpcyB0aGUgc2FtZSBidXQg
YXMgSSBzYWlkIGluIHBsYXRmb3JtIGRyaXZlciBwcm9iZSBmdW5jdGlvbiB3aWxsDQpiZSBjYWxs
ZWQgZm9yIGVhY2ggUENJIGNvbnRyb2xsZXIuIFdlIGRvbid0IHdhbnQgSVNBIGlzIHNlYXJjaGVk
IGZvciBtb3JlDQp0aGFuIG9uY2UuIEFsc28gcGxlYXNlIHJlZmVyIHRvIFYzIG9mIHRoaXMgcGF0
Y2ggc2V0IGluIHdoaWNoIEkgcmViYXNlIHRoZW0NCm9uIGxhdGVzdCB0cmVlLiBJIG1hZGUgYSBu
b24tcmVjdXJzaXZlIHZlcnNpb24gb2YgZnVuY3Rpb24gdG8gc2VhcmNoIGZvcg0KSVNBIHVuZGVy
IFBDSSBub2Rlcy4NCg0KLUhvbmd0YW8uDQo=

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-07-24 10:20 ` [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
@ 2012-07-27 13:24   ` Kumar Gala
  2012-07-30  6:09     ` Jia Hongtao-B38951
  0 siblings, 1 reply; 36+ messages in thread
From: Kumar Gala @ 2012-07-27 13:24 UTC (permalink / raw)
  To: Jia Hongtao; +Cc: B07421, linuxppc-dev


On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:

> Power supply for PCI inbound/outbound window registers is off when =
system
> go to deep-sleep state. We save the values of registers before suspend
> and restore to registers after resume.
>=20
> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> Signed-off-by: Li Yang <leoli@freescale.com>
> ---
> arch/powerpc/include/asm/pci-bridge.h |    2 +-
> arch/powerpc/sysdev/fsl_pci.c         |  121 =
+++++++++++++++++++++++++++++++++
> 2 files changed, 122 insertions(+), 1 deletions(-)

Remind me why we need to save/restore PCI ATMUs, why not just re-parse =
the device tree to restore?

- k=

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

* Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node
  2012-07-27  2:07             ` Jia Hongtao-B38951
@ 2012-07-27 16:37               ` Scott Wood
  0 siblings, 0 replies; 36+ messages in thread
From: Scott Wood @ 2012-07-27 16:37 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On 07/26/2012 09:07 PM, Jia Hongtao-B38951 wrote:
> 
> 
>> -----Original Message-----
>> From: Wood Scott-B07421
>> Sent: Friday, July 27, 2012 9:34 AM
>> To: Jia Hongtao-B38951
>> Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org;
>> galak@kernel.crashing.org; Li Yang-R58472
>> Subject: Re: [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by
>> looking for ISA node
>>
>> On 07/25/2012 09:20 PM, Jia Hongtao-B38951 wrote:
>>> All this recursion thing I will try another way.
>>>
>>> But this is not the same as you did. If we use platform driver probe
>> function
>>> will be called more than once. Your function is to find ISA node and
>> check if
>>> the parent equal to this PCI controller. My function is to search ISA
>> under
>>> each PCI controller.
>>
>> The result is the same -- "does this PCI controller have an ISA node
>> under it?"
>>
>> -Scott
> 
> 
> The result is the same but as I said in platform driver probe function will
> be called for each PCI controller.

So?  Just because you've got a platform device now doesn't mean you
can't do any early global init.  This has to be done globally, so we can
choose a fallback primary bus if there's no ISA in the system.

-Scott

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-07-27 13:24   ` Kumar Gala
@ 2012-07-30  6:09     ` Jia Hongtao-B38951
  2012-07-31 13:37       ` Kumar Gala
  0 siblings, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-07-30  6:09 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

> -----Original Message-----
> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> Sent: Friday, July 27, 2012 9:24 PM
> To: Jia Hongtao-B38951
> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> support
>=20
>=20
> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>=20
> > Power supply for PCI inbound/outbound window registers is off when
> system
> > go to deep-sleep state. We save the values of registers before suspend
> > and restore to registers after resume.
> >
> > Signed-off-by: Jiang Yutang <b14898@freescale.com>
> > Signed-off-by: Jia Hongtao <B38951@freescale.com>
> > Signed-off-by: Li Yang <leoli@freescale.com>
> > ---
> > arch/powerpc/include/asm/pci-bridge.h |    2 +-
> > arch/powerpc/sysdev/fsl_pci.c         |  121
> +++++++++++++++++++++++++++++++++
> > 2 files changed, 122 insertions(+), 1 deletions(-)
>=20
> Remind me why we need to save/restore PCI ATMUs, why not just re-parse
> the device tree to restore?
>=20
> - k

Save/restore is the more efficient way. Latency of sleep/wakeup is one of
most important features in power management.

-Hongtao.

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-07-30  6:09     ` Jia Hongtao-B38951
@ 2012-07-31 13:37       ` Kumar Gala
  2012-08-02 11:35         ` Jia Hongtao-B38951
  2012-08-07 10:11         ` Jia Hongtao-B38951
  0 siblings, 2 replies; 36+ messages in thread
From: Kumar Gala @ 2012-07-31 13:37 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472


On Jul 30, 2012, at 1:09 AM, Jia Hongtao-B38951 wrote:

>> -----Original Message-----
>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
>> Sent: Friday, July 27, 2012 9:24 PM
>> To: Jia Hongtao-B38951
>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
>> support
>>=20
>>=20
>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>>=20
>>> Power supply for PCI inbound/outbound window registers is off when
>> system
>>> go to deep-sleep state. We save the values of registers before =
suspend
>>> and restore to registers after resume.
>>>=20
>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>> ---
>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>> +++++++++++++++++++++++++++++++++
>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>>=20
>> Remind me why we need to save/restore PCI ATMUs, why not just =
re-parse
>> the device tree to restore?
>>=20
>> - k
>=20
> Save/restore is the more efficient way. Latency of sleep/wakeup is one =
of
> most important features in power management.
>=20
> -Hongtao.

I don't think the time it takes to run through setup_pci_atmu() is that =
long compared to fsl_pci_resume().

Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on =
resume?

- k=

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-07-31 13:37       ` Kumar Gala
@ 2012-08-02 11:35         ` Jia Hongtao-B38951
  2012-08-07 10:11         ` Jia Hongtao-B38951
  1 sibling, 0 replies; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-02 11:35 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472



> -----Original Message-----
> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> Sent: Tuesday, July 31, 2012 9:37 PM
> To: Jia Hongtao-B38951
> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> support
>=20
>=20
> On Jul 30, 2012, at 1:09 AM, Jia Hongtao-B38951 wrote:
>=20
> >> -----Original Message-----
> >> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> >> Sent: Friday, July 27, 2012 9:24 PM
> >> To: Jia Hongtao-B38951
> >> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
> >> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> >> support
> >>
> >>
> >> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
> >>
> >>> Power supply for PCI inbound/outbound window registers is off when
> >> system
> >>> go to deep-sleep state. We save the values of registers before
> suspend
> >>> and restore to registers after resume.
> >>>
> >>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> >>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> >>> Signed-off-by: Li Yang <leoli@freescale.com>
> >>> ---
> >>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
> >>> arch/powerpc/sysdev/fsl_pci.c         |  121
> >> +++++++++++++++++++++++++++++++++
> >>> 2 files changed, 122 insertions(+), 1 deletions(-)
> >>
> >> Remind me why we need to save/restore PCI ATMUs, why not just re-parse
> >> the device tree to restore?
> >>
> >> - k
> >
> > Save/restore is the more efficient way. Latency of sleep/wakeup is one
> of
> > most important features in power management.
> >
> > -Hongtao.
>=20
> I don't think the time it takes to run through setup_pci_atmu() is that
> long compared to fsl_pci_resume().
>=20
> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on resume=
?
>=20
> - k

I will investigate on this and send the patch later.

-Hongtao.

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-07-31 13:37       ` Kumar Gala
  2012-08-02 11:35         ` Jia Hongtao-B38951
@ 2012-08-07 10:11         ` Jia Hongtao-B38951
  2012-08-07 15:34           ` Scott Wood
  1 sibling, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-07 10:11 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472



> -----Original Message-----
> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> Sent: Tuesday, July 31, 2012 9:37 PM
> To: Jia Hongtao-B38951
> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> support
>=20
>=20
> On Jul 30, 2012, at 1:09 AM, Jia Hongtao-B38951 wrote:
>=20
> >> -----Original Message-----
> >> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> >> Sent: Friday, July 27, 2012 9:24 PM
> >> To: Jia Hongtao-B38951
> >> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
> >> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> >> support
> >>
> >>
> >> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
> >>
> >>> Power supply for PCI inbound/outbound window registers is off when
> >> system
> >>> go to deep-sleep state. We save the values of registers before
> >>> suspend and restore to registers after resume.
> >>>
> >>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> >>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> >>> Signed-off-by: Li Yang <leoli@freescale.com>
> >>> ---
> >>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
> >>> arch/powerpc/sysdev/fsl_pci.c         |  121
> >> +++++++++++++++++++++++++++++++++
> >>> 2 files changed, 122 insertions(+), 1 deletions(-)
> >>
> >> Remind me why we need to save/restore PCI ATMUs, why not just
> >> re-parse the device tree to restore?
> >>
> >> - k
> >
> > Save/restore is the more efficient way. Latency of sleep/wakeup is one
> > of most important features in power management.
> >
> > -Hongtao.
>=20
> I don't think the time it takes to run through setup_pci_atmu() is that
> long compared to fsl_pci_resume().
>=20
> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on resume=
?
>=20
> - k

Hi Kumar,
I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR is not
lost when system in deep sleep. We don't need to save it.

I will send PM patch after PCI initialization patch set being accepted.=20

-Hongtao.

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-07 10:11         ` Jia Hongtao-B38951
@ 2012-08-07 15:34           ` Scott Wood
  2012-08-07 17:34             ` Kumar Gala
  2012-08-08  9:54             ` Jia Hongtao-B38951
  0 siblings, 2 replies; 36+ messages in thread
From: Scott Wood @ 2012-08-07 15:34 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On 08/07/2012 05:11 AM, Jia Hongtao-B38951 wrote:
> 
> 
>> -----Original Message-----
>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
>> Sent: Tuesday, July 31, 2012 9:37 PM
>> To: Jia Hongtao-B38951
>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
>> support
>>
>>
>> On Jul 30, 2012, at 1:09 AM, Jia Hongtao-B38951 wrote:
>>
>>>> -----Original Message-----
>>>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
>>>> Sent: Friday, July 27, 2012 9:24 PM
>>>> To: Jia Hongtao-B38951
>>>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
>>>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
>>>> support
>>>>
>>>>
>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>>>>
>>>>> Power supply for PCI inbound/outbound window registers is off when
>>>> system
>>>>> go to deep-sleep state. We save the values of registers before
>>>>> suspend and restore to registers after resume.
>>>>>
>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>>>> ---
>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>>>> +++++++++++++++++++++++++++++++++
>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>>>>
>>>> Remind me why we need to save/restore PCI ATMUs, why not just
>>>> re-parse the device tree to restore?
>>>>
>>>> - k
>>>
>>> Save/restore is the more efficient way. Latency of sleep/wakeup is one
>>> of most important features in power management.
>>>
>>> -Hongtao.
>>
>> I don't think the time it takes to run through setup_pci_atmu() is that
>> long compared to fsl_pci_resume().
>>
>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on resume?
>>
>> - k
> 
> Hi Kumar,
> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR is not
> lost when system in deep sleep. We don't need to save it.

How does the PCI code know you're entering deep sleep and not hibernation?

-Scott

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-07 15:34           ` Scott Wood
@ 2012-08-07 17:34             ` Kumar Gala
  2012-08-08  3:07               ` Jia Hongtao-B38951
  2012-08-08  9:54             ` Jia Hongtao-B38951
  1 sibling, 1 reply; 36+ messages in thread
From: Kumar Gala @ 2012-08-07 17:34 UTC (permalink / raw)
  To: Scott Wood
  Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472, Jia Hongtao-B38951


On Aug 7, 2012, at 10:34 AM, Scott Wood wrote:

> On 08/07/2012 05:11 AM, Jia Hongtao-B38951 wrote:
>>=20
>>=20
>>> -----Original Message-----
>>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
>>> Sent: Tuesday, July 31, 2012 9:37 PM
>>> To: Jia Hongtao-B38951
>>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
>>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound =
PM
>>> support
>>>=20
>>>=20
>>> On Jul 30, 2012, at 1:09 AM, Jia Hongtao-B38951 wrote:
>>>=20
>>>>> -----Original Message-----
>>>>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
>>>>> Sent: Friday, July 27, 2012 9:24 PM
>>>>> To: Jia Hongtao-B38951
>>>>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li =
Yang-R58472
>>>>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound =
PM
>>>>> support
>>>>>=20
>>>>>=20
>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>>>>>=20
>>>>>> Power supply for PCI inbound/outbound window registers is off =
when
>>>>> system
>>>>>> go to deep-sleep state. We save the values of registers before
>>>>>> suspend and restore to registers after resume.
>>>>>>=20
>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>>>>> ---
>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>>>>> +++++++++++++++++++++++++++++++++
>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>>>>>=20
>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
>>>>> re-parse the device tree to restore?
>>>>>=20
>>>>> - k
>>>>=20
>>>> Save/restore is the more efficient way. Latency of sleep/wakeup is =
one
>>>> of most important features in power management.
>>>>=20
>>>> -Hongtao.
>>>=20
>>> I don't think the time it takes to run through setup_pci_atmu() is =
that
>>> long compared to fsl_pci_resume().
>>>=20
>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on =
resume?
>>>=20
>>> - k
>>=20
>> Hi Kumar,
>> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR =
is not
>> lost when system in deep sleep. We don't need to save it.
>=20
> How does the PCI code know you're entering deep sleep and not =
hibernation?
>=20
> -Scott
>=20

Also, are you sure PCICSRBAR does not need restoring?  I'd be surprised =
if PCICSRBAR was ok, but the ATMUs where not.

- k

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-07 17:34             ` Kumar Gala
@ 2012-08-08  3:07               ` Jia Hongtao-B38951
  0 siblings, 0 replies; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-08  3:07 UTC (permalink / raw)
  To: Kumar Gala, Wood Scott-B07421
  Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472



> -----Original Message-----
> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> Sent: Wednesday, August 08, 2012 1:34 AM
> To: Wood Scott-B07421
> Cc: Jia Hongtao-B38951; linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421;
> Li Yang-R58472
> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> support
>=20
>=20
> On Aug 7, 2012, at 10:34 AM, Scott Wood wrote:
>=20
> > On 08/07/2012 05:11 AM, Jia Hongtao-B38951 wrote:
> >>
> >>
> >>> -----Original Message-----
> >>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> >>> Sent: Tuesday, July 31, 2012 9:37 PM
> >>> To: Jia Hongtao-B38951
> >>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li Yang-R58472
> >>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound
> >>> PM support
> >>>
> >>>
> >>> On Jul 30, 2012, at 1:09 AM, Jia Hongtao-B38951 wrote:
> >>>
> >>>>> -----Original Message-----
> >>>>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> >>>>> Sent: Friday, July 27, 2012 9:24 PM
> >>>>> To: Jia Hongtao-B38951
> >>>>> Cc: linuxppc-dev@lists.ozlabs.org; Wood Scott-B07421; Li
> >>>>> Yang-R58472
> >>>>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound
> >>>>> PM support
> >>>>>
> >>>>>
> >>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
> >>>>>
> >>>>>> Power supply for PCI inbound/outbound window registers is off
> >>>>>> when
> >>>>> system
> >>>>>> go to deep-sleep state. We save the values of registers before
> >>>>>> suspend and restore to registers after resume.
> >>>>>>
> >>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> >>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> >>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
> >>>>>> ---
> >>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
> >>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
> >>>>> +++++++++++++++++++++++++++++++++
> >>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
> >>>>>
> >>>>> Remind me why we need to save/restore PCI ATMUs, why not just
> >>>>> re-parse the device tree to restore?
> >>>>>
> >>>>> - k
> >>>>
> >>>> Save/restore is the more efficient way. Latency of sleep/wakeup is
> >>>> one of most important features in power management.
> >>>>
> >>>> -Hongtao.
> >>>
> >>> I don't think the time it takes to run through setup_pci_atmu() is
> >>> that long compared to fsl_pci_resume().
> >>>
> >>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on
> resume?
> >>>
> >>> - k
> >>
> >> Hi Kumar,
> >> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR
> >> is not lost when system in deep sleep. We don't need to save it.
> >
> > How does the PCI code know you're entering deep sleep and not
> hibernation?
> >
> > -Scott
> >
>=20
> Also, are you sure PCICSRBAR does not need restoring?  I'd be surprised
> if PCICSRBAR was ok, but the ATMUs where not.
>=20
> - k
>=20

PEXCSRBAR is in configuration space and ATMUs are memory map registers.
I guess there are different power supplies.

-Hongtao.

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-07 15:34           ` Scott Wood
  2012-08-07 17:34             ` Kumar Gala
@ 2012-08-08  9:54             ` Jia Hongtao-B38951
  2012-08-08 12:46               ` Kumar Gala
  1 sibling, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-08  9:54 UTC (permalink / raw)
  To: Wood Scott-B07421; +Cc: linuxppc-dev, Li Yang-R58472

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVHVlc2RheSwgQXVndXN0IDA3LCAyMDEyIDExOjM1IFBNDQo+IFRvOiBKaWEg
SG9uZ3Rhby1CMzg5NTENCj4gQ2M6IEt1bWFyIEdhbGE7IGxpbnV4cHBjLWRldkBsaXN0cy5vemxh
YnMub3JnOyBXb29kIFNjb3R0LUIwNzQyMTsgTGkNCj4gWWFuZy1SNTg0NzINCj4gU3ViamVjdDog
UmU6IFtQQVRDSCA1LzZdIHBvd2VycGMvZnNsLXBjaTogQWRkIHBjaSBpbmJvdW5kL291dGJvdW5k
IFBNDQo+IHN1cHBvcnQNCj4gDQo+IE9uIDA4LzA3LzIwMTIgMDU6MTEgQU0sIEppYSBIb25ndGFv
LUIzODk1MSB3cm90ZToNCj4gPg0KPiA+DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t
DQo+ID4+IEZyb206IEt1bWFyIEdhbGEgW21haWx0bzpnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3Jn
XQ0KPiA+PiBTZW50OiBUdWVzZGF5LCBKdWx5IDMxLCAyMDEyIDk6MzcgUE0NCj4gPj4gVG86IEpp
YSBIb25ndGFvLUIzODk1MQ0KPiA+PiBDYzogbGludXhwcGMtZGV2QGxpc3RzLm96bGFicy5vcmc7
IFdvb2QgU2NvdHQtQjA3NDIxOyBMaSBZYW5nLVI1ODQ3Mg0KPiA+PiBTdWJqZWN0OiBSZTogW1BB
VENIIDUvNl0gcG93ZXJwYy9mc2wtcGNpOiBBZGQgcGNpIGluYm91bmQvb3V0Ym91bmQgUE0NCj4g
Pj4gc3VwcG9ydA0KPiA+Pg0KPiA+Pg0KPiA+PiBPbiBKdWwgMzAsIDIwMTIsIGF0IDE6MDkgQU0s
IEppYSBIb25ndGFvLUIzODk1MSB3cm90ZToNCj4gPj4NCj4gPj4+PiAtLS0tLU9yaWdpbmFsIE1l
c3NhZ2UtLS0tLQ0KPiA+Pj4+IEZyb206IEt1bWFyIEdhbGEgW21haWx0bzpnYWxha0BrZXJuZWwu
Y3Jhc2hpbmcub3JnXQ0KPiA+Pj4+IFNlbnQ6IEZyaWRheSwgSnVseSAyNywgMjAxMiA5OjI0IFBN
DQo+ID4+Pj4gVG86IEppYSBIb25ndGFvLUIzODk1MQ0KPiA+Pj4+IENjOiBsaW51eHBwYy1kZXZA
bGlzdHMub3psYWJzLm9yZzsgV29vZCBTY290dC1CMDc0MjE7IExpDQo+ID4+Pj4gWWFuZy1SNTg0
NzINCj4gPj4+PiBTdWJqZWN0OiBSZTogW1BBVENIIDUvNl0gcG93ZXJwYy9mc2wtcGNpOiBBZGQg
cGNpIGluYm91bmQvb3V0Ym91bmQNCj4gPj4+PiBQTSBzdXBwb3J0DQo+ID4+Pj4NCj4gPj4+Pg0K
PiA+Pj4+IE9uIEp1bCAyNCwgMjAxMiwgYXQgNToyMCBBTSwgSmlhIEhvbmd0YW8gd3JvdGU6DQo+
ID4+Pj4NCj4gPj4+Pj4gUG93ZXIgc3VwcGx5IGZvciBQQ0kgaW5ib3VuZC9vdXRib3VuZCB3aW5k
b3cgcmVnaXN0ZXJzIGlzIG9mZiB3aGVuDQo+ID4+Pj4gc3lzdGVtDQo+ID4+Pj4+IGdvIHRvIGRl
ZXAtc2xlZXAgc3RhdGUuIFdlIHNhdmUgdGhlIHZhbHVlcyBvZiByZWdpc3RlcnMgYmVmb3JlDQo+
ID4+Pj4+IHN1c3BlbmQgYW5kIHJlc3RvcmUgdG8gcmVnaXN0ZXJzIGFmdGVyIHJlc3VtZS4NCj4g
Pj4+Pj4NCj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogSmlhbmcgWXV0YW5nIDxiMTQ4OThAZnJlZXNj
YWxlLmNvbT4NCj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogSmlhIEhvbmd0YW8gPEIzODk1MUBmcmVl
c2NhbGUuY29tPg0KPiA+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBMaSBZYW5nIDxsZW9saUBmcmVlc2Nh
bGUuY29tPg0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4gYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Bj
aS1icmlkZ2UuaCB8ICAgIDIgKy0NCj4gPj4+Pj4gYXJjaC9wb3dlcnBjL3N5c2Rldi9mc2xfcGNp
LmMgICAgICAgICB8ICAxMjENCj4gPj4+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysNCj4gPj4+Pj4gMiBmaWxlcyBjaGFuZ2VkLCAxMjIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlv
bnMoLSkNCj4gPj4+Pg0KPiA+Pj4+IFJlbWluZCBtZSB3aHkgd2UgbmVlZCB0byBzYXZlL3Jlc3Rv
cmUgUENJIEFUTVVzLCB3aHkgbm90IGp1c3QNCj4gPj4+PiByZS1wYXJzZSB0aGUgZGV2aWNlIHRy
ZWUgdG8gcmVzdG9yZT8NCj4gPj4+Pg0KPiA+Pj4+IC0gaw0KPiA+Pj4NCj4gPj4+IFNhdmUvcmVz
dG9yZSBpcyB0aGUgbW9yZSBlZmZpY2llbnQgd2F5LiBMYXRlbmN5IG9mIHNsZWVwL3dha2V1cCBp
cw0KPiA+Pj4gb25lIG9mIG1vc3QgaW1wb3J0YW50IGZlYXR1cmVzIGluIHBvd2VyIG1hbmFnZW1l
bnQuDQo+ID4+Pg0KPiA+Pj4gLUhvbmd0YW8uDQo+ID4+DQo+ID4+IEkgZG9uJ3QgdGhpbmsgdGhl
IHRpbWUgaXQgdGFrZXMgdG8gcnVuIHRocm91Z2ggc2V0dXBfcGNpX2F0bXUoKSBpcw0KPiA+PiB0
aGF0IGxvbmcgY29tcGFyZWQgdG8gZnNsX3BjaV9yZXN1bWUoKS4NCj4gPj4NCj4gPj4gQWxzbywg
ZG9uJ3QgeW91IG5lZWQgdG8gc2V0dXAgUENJQ0NTUkJBUiBhbmQgZG8gc2V0dXBfcGNpX2NtZCgp
IG9uDQo+IHJlc3VtZT8NCj4gPj4NCj4gPj4gLSBrDQo+ID4NCj4gPiBIaSBLdW1hciwNCj4gPiBJ
IGRpZCBzb21lIHRlc3RzIG9uIFAxMDIyRFMgYW5kIGZvdW5kIG91dCB0aGF0IFBDSV9DTUQgYW5k
IFBDSUNTUkJBUg0KPiA+IGlzIG5vdCBsb3N0IHdoZW4gc3lzdGVtIGluIGRlZXAgc2xlZXAuIFdl
IGRvbid0IG5lZWQgdG8gc2F2ZSBpdC4NCj4gDQo+IEhvdyBkb2VzIHRoZSBQQ0kgY29kZSBrbm93
IHlvdSdyZSBlbnRlcmluZyBkZWVwIHNsZWVwIGFuZCBub3QgaGliZXJuYXRpb24/DQo+IA0KPiAt
U2NvdHQNCg0KV2hlbiBzeXN0ZW0gY29tZSBiYWNrIGZyb20gaGliZXJuYXRpb24gUENJIHdpbGwg
YmUgaW5pdGlhbGl6ZWQgYWdhaW4uDQpTbyBubyBuZWVkIHRvIHNhdmUgUENJX0NNRCBhbmQgUEVY
Q1NSQkFSLg0KDQotSG9uZ3Rhby4gDQoNCg==

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-08  9:54             ` Jia Hongtao-B38951
@ 2012-08-08 12:46               ` Kumar Gala
  2012-08-08 21:04                 ` Scott Wood
  2012-08-09  2:52                 ` Jia Hongtao-B38951
  0 siblings, 2 replies; 36+ messages in thread
From: Kumar Gala @ 2012-08-08 12:46 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

>>>>>>=20
>>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>>>>>>=20
>>>>>>> Power supply for PCI inbound/outbound window registers is off =
when
>>>>>> system
>>>>>>> go to deep-sleep state. We save the values of registers before
>>>>>>> suspend and restore to registers after resume.
>>>>>>>=20
>>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>>>>>> ---
>>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>>>>>> +++++++++++++++++++++++++++++++++
>>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>>>>>>=20
>>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
>>>>>> re-parse the device tree to restore?
>>>>>>=20
>>>>>> - k
>>>>>=20
>>>>> Save/restore is the more efficient way. Latency of sleep/wakeup is
>>>>> one of most important features in power management.
>>>>>=20
>>>>> -Hongtao.
>>>>=20
>>>> I don't think the time it takes to run through setup_pci_atmu() is
>>>> that long compared to fsl_pci_resume().
>>>>=20
>>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on
>> resume?
>>>>=20
>>>> - k
>>>=20
>>> Hi Kumar,
>>> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR
>>> is not lost when system in deep sleep. We don't need to save it.
>>=20
>> How does the PCI code know you're entering deep sleep and not =
hibernation?
>>=20
>> -Scott
>=20
> When system come back from hibernation PCI will be initialized again.
> So no need to save PCI_CMD and PEXCSRBAR.
>=20
> -Hongtao.=20
>=20

What do you mean PCI will be initialized again?  What code path are you =
talking about that would set PCI_CMD & PEXCSRBAR?

- k=

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-08 12:46               ` Kumar Gala
@ 2012-08-08 21:04                 ` Scott Wood
  2012-08-09 10:32                   ` Jia Hongtao-B38951
  2012-08-09  2:52                 ` Jia Hongtao-B38951
  1 sibling, 1 reply; 36+ messages in thread
From: Scott Wood @ 2012-08-08 21:04 UTC (permalink / raw)
  To: Kumar Gala
  Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472, Jia Hongtao-B38951

On 08/08/2012 07:46 AM, Kumar Gala wrote:
>>>>>>>
>>>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>>>>>>>
>>>>>>>> Power supply for PCI inbound/outbound window registers is off when
>>>>>>> system
>>>>>>>> go to deep-sleep state. We save the values of registers before
>>>>>>>> suspend and restore to registers after resume.
>>>>>>>>
>>>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>>>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>>>>>>> ---
>>>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>>>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>>>>>>> +++++++++++++++++++++++++++++++++
>>>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>>>>>>>
>>>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
>>>>>>> re-parse the device tree to restore?
>>>>>>>
>>>>>>> - k
>>>>>>
>>>>>> Save/restore is the more efficient way. Latency of sleep/wakeup is
>>>>>> one of most important features in power management.
>>>>>>
>>>>>> -Hongtao.
>>>>>
>>>>> I don't think the time it takes to run through setup_pci_atmu() is
>>>>> that long compared to fsl_pci_resume().
>>>>>
>>>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on
>>> resume?
>>>>>
>>>>> - k
>>>>
>>>> Hi Kumar,
>>>> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR
>>>> is not lost when system in deep sleep. We don't need to save it.

How do you know you're not just getting lucky?  Maybe it only survives
deep sleep up to a certain duration, or under other specific circumstances.

Can you find anywhere that documents what state will be retained during
deep sleep, or ask an appropriate hardware designer?

-Scott

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-08 12:46               ` Kumar Gala
  2012-08-08 21:04                 ` Scott Wood
@ 2012-08-09  2:52                 ` Jia Hongtao-B38951
  2012-08-09  5:05                   ` Li Yang
  1 sibling, 1 reply; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-09  2:52 UTC (permalink / raw)
  To: Kumar Gala; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472



> -----Original Message-----
> From: Linuxppc-dev [mailto:linuxppc-dev-
> bounces+b38951=3Dfreescale.com@lists.ozlabs.org] On Behalf Of Kumar Gala
> Sent: Wednesday, August 08, 2012 8:47 PM
> To: Jia Hongtao-B38951
> Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; Li Yang-R58472
> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> support
>=20
> >>>>>>
> >>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
> >>>>>>
> >>>>>>> Power supply for PCI inbound/outbound window registers is off
> >>>>>>> when
> >>>>>> system
> >>>>>>> go to deep-sleep state. We save the values of registers before
> >>>>>>> suspend and restore to registers after resume.
> >>>>>>>
> >>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> >>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> >>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
> >>>>>>> ---
> >>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
> >>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
> >>>>>> +++++++++++++++++++++++++++++++++
> >>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
> >>>>>>
> >>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
> >>>>>> re-parse the device tree to restore?
> >>>>>>
> >>>>>> - k
> >>>>>
> >>>>> Save/restore is the more efficient way. Latency of sleep/wakeup is
> >>>>> one of most important features in power management.
> >>>>>
> >>>>> -Hongtao.
> >>>>
> >>>> I don't think the time it takes to run through setup_pci_atmu() is
> >>>> that long compared to fsl_pci_resume().
> >>>>
> >>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on
> >> resume?
> >>>>
> >>>> - k
> >>>
> >>> Hi Kumar,
> >>> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR
> >>> is not lost when system in deep sleep. We don't need to save it.
> >>
> >> How does the PCI code know you're entering deep sleep and not
> hibernation?
> >>
> >> -Scott
> >
> > When system come back from hibernation PCI will be initialized again.
> > So no need to save PCI_CMD and PEXCSRBAR.
> >
> > -Hongtao.
> >
>=20
> What do you mean PCI will be initialized again?  What code path are you
> talking about that would set PCI_CMD & PEXCSRBAR?
>=20
> - k


In hibernation mode:

When system come back from hibernation kernel will start up again.
Before loading hibernation image PCI initialization has already done.
Some other hardware also re-init again.

-Hongtao.

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-09  2:52                 ` Jia Hongtao-B38951
@ 2012-08-09  5:05                   ` Li Yang
  2012-08-09 13:08                     ` Kumar Gala
  0 siblings, 1 reply; 36+ messages in thread
From: Li Yang @ 2012-08-09  5:05 UTC (permalink / raw)
  To: Jia Hongtao-B38951; +Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472

On Thu, Aug 9, 2012 at 10:52 AM, Jia Hongtao-B38951
<B38951@freescale.com> wrote:
>
>
>> -----Original Message-----
>> From: Linuxppc-dev [mailto:linuxppc-dev-
>> bounces+b38951=freescale.com@lists.ozlabs.org] On Behalf Of Kumar Gala
>> Sent: Wednesday, August 08, 2012 8:47 PM
>> To: Jia Hongtao-B38951
>> Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; Li Yang-R58472
>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
>> support
>>
>> >>>>>>
>> >>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>> >>>>>>
>> >>>>>>> Power supply for PCI inbound/outbound window registers is off
>> >>>>>>> when
>> >>>>>> system
>> >>>>>>> go to deep-sleep state. We save the values of registers before
>> >>>>>>> suspend and restore to registers after resume.
>> >>>>>>>
>> >>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>> >>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>> >>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
>> >>>>>>> ---
>> >>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>> >>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>> >>>>>> +++++++++++++++++++++++++++++++++
>> >>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>> >>>>>>
>> >>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
>> >>>>>> re-parse the device tree to restore?
>> >>>>>>
>> >>>>>> - k
>> >>>>>
>> >>>>> Save/restore is the more efficient way. Latency of sleep/wakeup is
>> >>>>> one of most important features in power management.
>> >>>>>
>> >>>>> -Hongtao.
>> >>>>
>> >>>> I don't think the time it takes to run through setup_pci_atmu() is
>> >>>> that long compared to fsl_pci_resume().
>> >>>>
>> >>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() on
>> >> resume?
>> >>>>
>> >>>> - k
>> >>>
>> >>> Hi Kumar,
>> >>> I did some tests on P1022DS and found out that PCI_CMD and PCICSRBAR
>> >>> is not lost when system in deep sleep. We don't need to save it.
>> >>
>> >> How does the PCI code know you're entering deep sleep and not
>> hibernation?
>> >>
>> >> -Scott
>> >
>> > When system come back from hibernation PCI will be initialized again.
>> > So no need to save PCI_CMD and PEXCSRBAR.
>> >
>> > -Hongtao.
>> >
>>
>> What do you mean PCI will be initialized again?  What code path are you
>> talking about that would set PCI_CMD & PEXCSRBAR?
>>
>> - k
>
>
> In hibernation mode:
>
> When system come back from hibernation kernel will start up again.
> Before loading hibernation image PCI initialization has already done.
> Some other hardware also re-init again.

In current Linux implementation, restoring from hibernation image is
using late initcall.  By that time, all the platform devices are
already initialized like a fresh boot.

- Leo

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-08 21:04                 ` Scott Wood
@ 2012-08-09 10:32                   ` Jia Hongtao-B38951
  0 siblings, 0 replies; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-09 10:32 UTC (permalink / raw)
  To: Wood Scott-B07421, Kumar Gala; +Cc: linuxppc-dev, Li Yang-R58472

DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogV29vZCBTY290dC1CMDc0
MjENCj4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAwOSwgMjAxMiA1OjA0IEFNDQo+IFRvOiBLdW1h
ciBHYWxhDQo+IENjOiBKaWEgSG9uZ3Rhby1CMzg5NTE7IFdvb2QgU2NvdHQtQjA3NDIxOyBsaW51
eHBwYy1kZXZAbGlzdHMub3psYWJzLm9yZzsNCj4gTGkgWWFuZy1SNTg0NzINCj4gU3ViamVjdDog
UmU6IFtQQVRDSCA1LzZdIHBvd2VycGMvZnNsLXBjaTogQWRkIHBjaSBpbmJvdW5kL291dGJvdW5k
IFBNDQo+IHN1cHBvcnQNCj4gDQo+IE9uIDA4LzA4LzIwMTIgMDc6NDYgQU0sIEt1bWFyIEdhbGEg
d3JvdGU6DQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBPbiBKdWwgMjQsIDIwMTIsIGF0IDU6MjAgQU0s
IEppYSBIb25ndGFvIHdyb3RlOg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFBvd2VyIHN1cHBseSBm
b3IgUENJIGluYm91bmQvb3V0Ym91bmQgd2luZG93IHJlZ2lzdGVycyBpcyBvZmYNCj4gPj4+Pj4+
Pj4gd2hlbg0KPiA+Pj4+Pj4+IHN5c3RlbQ0KPiA+Pj4+Pj4+PiBnbyB0byBkZWVwLXNsZWVwIHN0
YXRlLiBXZSBzYXZlIHRoZSB2YWx1ZXMgb2YgcmVnaXN0ZXJzIGJlZm9yZQ0KPiA+Pj4+Pj4+PiBz
dXNwZW5kIGFuZCByZXN0b3JlIHRvIHJlZ2lzdGVycyBhZnRlciByZXN1bWUuDQo+ID4+Pj4+Pj4+
DQo+ID4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEppYW5nIFl1dGFuZyA8YjE0ODk4QGZyZWVzY2Fs
ZS5jb20+DQo+ID4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IEppYSBIb25ndGFvIDxCMzg5NTFAZnJl
ZXNjYWxlLmNvbT4NCj4gPj4+Pj4+Pj4gU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJl
ZXNjYWxlLmNvbT4NCj4gPj4+Pj4+Pj4gLS0tDQo+ID4+Pj4+Pj4+IGFyY2gvcG93ZXJwYy9pbmNs
dWRlL2FzbS9wY2ktYnJpZGdlLmggfCAgICAyICstDQo+ID4+Pj4+Pj4+IGFyY2gvcG93ZXJwYy9z
eXNkZXYvZnNsX3BjaS5jICAgICAgICAgfCAgMTIxDQo+ID4+Pj4+Pj4gKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrDQo+ID4+Pj4+Pj4+IDIgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2Vy
dGlvbnMoKyksIDEgZGVsZXRpb25zKC0pDQo+ID4+Pj4+Pj4NCj4gPj4+Pj4+PiBSZW1pbmQgbWUg
d2h5IHdlIG5lZWQgdG8gc2F2ZS9yZXN0b3JlIFBDSSBBVE1Vcywgd2h5IG5vdCBqdXN0DQo+ID4+
Pj4+Pj4gcmUtcGFyc2UgdGhlIGRldmljZSB0cmVlIHRvIHJlc3RvcmU/DQo+ID4+Pj4+Pj4NCj4g
Pj4+Pj4+PiAtIGsNCj4gPj4+Pj4+DQo+ID4+Pj4+PiBTYXZlL3Jlc3RvcmUgaXMgdGhlIG1vcmUg
ZWZmaWNpZW50IHdheS4gTGF0ZW5jeSBvZiBzbGVlcC93YWtldXANCj4gPj4+Pj4+IGlzIG9uZSBv
ZiBtb3N0IGltcG9ydGFudCBmZWF0dXJlcyBpbiBwb3dlciBtYW5hZ2VtZW50Lg0KPiA+Pj4+Pj4N
Cj4gPj4+Pj4+IC1Ib25ndGFvLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBJIGRvbid0IHRoaW5rIHRoZSB0
aW1lIGl0IHRha2VzIHRvIHJ1biB0aHJvdWdoIHNldHVwX3BjaV9hdG11KCkgaXMNCj4gPj4+Pj4g
dGhhdCBsb25nIGNvbXBhcmVkIHRvIGZzbF9wY2lfcmVzdW1lKCkuDQo+ID4+Pj4+DQo+ID4+Pj4+
IEFsc28sIGRvbid0IHlvdSBuZWVkIHRvIHNldHVwIFBDSUNDU1JCQVIgYW5kIGRvIHNldHVwX3Bj
aV9jbWQoKSBvbg0KPiA+Pj4gcmVzdW1lPw0KPiA+Pj4+Pg0KPiA+Pj4+PiAtIGsNCj4gPj4+Pg0K
PiA+Pj4+IEhpIEt1bWFyLA0KPiA+Pj4+IEkgZGlkIHNvbWUgdGVzdHMgb24gUDEwMjJEUyBhbmQg
Zm91bmQgb3V0IHRoYXQgUENJX0NNRCBhbmQNCj4gPj4+PiBQQ0lDU1JCQVIgaXMgbm90IGxvc3Qg
d2hlbiBzeXN0ZW0gaW4gZGVlcCBzbGVlcC4gV2UgZG9uJ3QgbmVlZCB0bw0KPiBzYXZlIGl0Lg0K
PiANCj4gSG93IGRvIHlvdSBrbm93IHlvdSdyZSBub3QganVzdCBnZXR0aW5nIGx1Y2t5PyAgTWF5
YmUgaXQgb25seSBzdXJ2aXZlcw0KPiBkZWVwIHNsZWVwIHVwIHRvIGEgY2VydGFpbiBkdXJhdGlv
biwgb3IgdW5kZXIgb3RoZXIgc3BlY2lmaWMNCj4gY2lyY3Vtc3RhbmNlcy4NCg0KSSB0ZXN0ZWQg
Zm9yIG1vcmUgdGhhbiAxMCBtaW5zIGluIGRlZXAgc2xlZXAgYW5kIHRoZSByZXN1bHQgaXMgdGhl
IHNhbWUuDQoNCj4gDQo+IENhbiB5b3UgZmluZCBhbnl3aGVyZSB0aGF0IGRvY3VtZW50cyB3aGF0
IHN0YXRlIHdpbGwgYmUgcmV0YWluZWQgZHVyaW5nDQo+IGRlZXAgc2xlZXAsIG9yIGFzayBhbiBh
cHByb3ByaWF0ZSBoYXJkd2FyZSBkZXNpZ25lcj8NCj4gDQo+IC1TY290dA0KDQpJIGFncmVlIHdp
dGggeW91IHRoYXQgd2Ugc2hvdWxkIGZpbmQgb3V0IHdoYXQgc3RhdGUgd2lsbCBiZSByZXRhaW5l
ZCBkdXJpbmcNCmRlZXAgc2xlZXAuIEJ1dCBQMTAyMiBSTSBkb2MgaGFzIGxpbWl0ZWQgaW5mb3Jt
YXRpb24gZm9yIHRoaXMuIElmIEkgY2FuIGdldA0KbW9yZSBpbmZvcm1hdGlvbiBmcm9tIGhhcmR3
YXJlIGRlc2lnbmVyIHRoYXQgd2lsbCBiZSBnb29kLg0K

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

* Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-09  5:05                   ` Li Yang
@ 2012-08-09 13:08                     ` Kumar Gala
  2012-08-10  2:17                       ` Jia Hongtao-B38951
  0 siblings, 1 reply; 36+ messages in thread
From: Kumar Gala @ 2012-08-09 13:08 UTC (permalink / raw)
  To: Li Yang
  Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472, Jia Hongtao-B38951


On Aug 9, 2012, at 12:05 AM, Li Yang wrote:

> On Thu, Aug 9, 2012 at 10:52 AM, Jia Hongtao-B38951
> <B38951@freescale.com> wrote:
>>=20
>>=20
>>> -----Original Message-----
>>> From: Linuxppc-dev [mailto:linuxppc-dev-
>>> bounces+b38951=3Dfreescale.com@lists.ozlabs.org] On Behalf Of Kumar =
Gala
>>> Sent: Wednesday, August 08, 2012 8:47 PM
>>> To: Jia Hongtao-B38951
>>> Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; Li Yang-R58472
>>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound =
PM
>>> support
>>>=20
>>>>>>>>>=20
>>>>>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
>>>>>>>>>=20
>>>>>>>>>> Power supply for PCI inbound/outbound window registers is off
>>>>>>>>>> when
>>>>>>>>> system
>>>>>>>>>> go to deep-sleep state. We save the values of registers =
before
>>>>>>>>>> suspend and restore to registers after resume.
>>>>>>>>>>=20
>>>>>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
>>>>>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>>>>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>>>>>>>>> ---
>>>>>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
>>>>>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
>>>>>>>>> +++++++++++++++++++++++++++++++++
>>>>>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
>>>>>>>>>=20
>>>>>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
>>>>>>>>> re-parse the device tree to restore?
>>>>>>>>>=20
>>>>>>>>> - k
>>>>>>>>=20
>>>>>>>> Save/restore is the more efficient way. Latency of sleep/wakeup =
is
>>>>>>>> one of most important features in power management.
>>>>>>>>=20
>>>>>>>> -Hongtao.
>>>>>>>=20
>>>>>>> I don't think the time it takes to run through setup_pci_atmu() =
is
>>>>>>> that long compared to fsl_pci_resume().
>>>>>>>=20
>>>>>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd() =
on
>>>>> resume?
>>>>>>>=20
>>>>>>> - k
>>>>>>=20
>>>>>> Hi Kumar,
>>>>>> I did some tests on P1022DS and found out that PCI_CMD and =
PCICSRBAR
>>>>>> is not lost when system in deep sleep. We don't need to save it.
>>>>>=20
>>>>> How does the PCI code know you're entering deep sleep and not
>>> hibernation?
>>>>>=20
>>>>> -Scott
>>>>=20
>>>> When system come back from hibernation PCI will be initialized =
again.
>>>> So no need to save PCI_CMD and PEXCSRBAR.
>>>>=20
>>>> -Hongtao.
>>>>=20
>>>=20
>>> What do you mean PCI will be initialized again?  What code path are =
you
>>> talking about that would set PCI_CMD & PEXCSRBAR?
>>>=20
>>> - k
>>=20
>>=20
>> In hibernation mode:
>>=20
>> When system come back from hibernation kernel will start up again.
>> Before loading hibernation image PCI initialization has already done.
>> Some other hardware also re-init again.
>=20
> In current Linux implementation, restoring from hibernation image is
> using late initcall.  By that time, all the platform devices are
> already initialized like a fresh boot.
>=20
> - Leo

I ask against, what specific code path (I'd like a call trace) would =
cause PCI_CMD and PEXCSRBAR to be set in the wakeup case?

- k=

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

* RE: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support
  2012-08-09 13:08                     ` Kumar Gala
@ 2012-08-10  2:17                       ` Jia Hongtao-B38951
  0 siblings, 0 replies; 36+ messages in thread
From: Jia Hongtao-B38951 @ 2012-08-10  2:17 UTC (permalink / raw)
  To: Kumar Gala, Li Yang-R58472
  Cc: Wood Scott-B07421, linuxppc-dev, Li Yang-R58472



> -----Original Message-----
> From: Kumar Gala [mailto:galak@kernel.crashing.org]
> Sent: Thursday, August 09, 2012 9:08 PM
> To: Li Yang-R58472
> Cc: Jia Hongtao-B38951; Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org;
> Li Yang-R58472
> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM
> support
>=20
>=20
> On Aug 9, 2012, at 12:05 AM, Li Yang wrote:
>=20
> > On Thu, Aug 9, 2012 at 10:52 AM, Jia Hongtao-B38951
> > <B38951@freescale.com> wrote:
> >>
> >>
> >>> -----Original Message-----
> >>> From: Linuxppc-dev [mailto:linuxppc-dev-
> >>> bounces+b38951=3Dfreescale.com@lists.ozlabs.org] On Behalf Of Kumar
> >>> bounces+Gala
> >>> Sent: Wednesday, August 08, 2012 8:47 PM
> >>> To: Jia Hongtao-B38951
> >>> Cc: Wood Scott-B07421; linuxppc-dev@lists.ozlabs.org; Li Yang-R58472
> >>> Subject: Re: [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound
> >>> PM support
> >>>
> >>>>>>>>>
> >>>>>>>>> On Jul 24, 2012, at 5:20 AM, Jia Hongtao wrote:
> >>>>>>>>>
> >>>>>>>>>> Power supply for PCI inbound/outbound window registers is off
> >>>>>>>>>> when
> >>>>>>>>> system
> >>>>>>>>>> go to deep-sleep state. We save the values of registers
> >>>>>>>>>> before suspend and restore to registers after resume.
> >>>>>>>>>>
> >>>>>>>>>> Signed-off-by: Jiang Yutang <b14898@freescale.com>
> >>>>>>>>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
> >>>>>>>>>> Signed-off-by: Li Yang <leoli@freescale.com>
> >>>>>>>>>> ---
> >>>>>>>>>> arch/powerpc/include/asm/pci-bridge.h |    2 +-
> >>>>>>>>>> arch/powerpc/sysdev/fsl_pci.c         |  121
> >>>>>>>>> +++++++++++++++++++++++++++++++++
> >>>>>>>>>> 2 files changed, 122 insertions(+), 1 deletions(-)
> >>>>>>>>>
> >>>>>>>>> Remind me why we need to save/restore PCI ATMUs, why not just
> >>>>>>>>> re-parse the device tree to restore?
> >>>>>>>>>
> >>>>>>>>> - k
> >>>>>>>>
> >>>>>>>> Save/restore is the more efficient way. Latency of sleep/wakeup
> >>>>>>>> is one of most important features in power management.
> >>>>>>>>
> >>>>>>>> -Hongtao.
> >>>>>>>
> >>>>>>> I don't think the time it takes to run through setup_pci_atmu()
> >>>>>>> is that long compared to fsl_pci_resume().
> >>>>>>>
> >>>>>>> Also, don't you need to setup PCICCSRBAR and do setup_pci_cmd()
> >>>>>>> on
> >>>>> resume?
> >>>>>>>
> >>>>>>> - k
> >>>>>>
> >>>>>> Hi Kumar,
> >>>>>> I did some tests on P1022DS and found out that PCI_CMD and
> >>>>>> PCICSRBAR is not lost when system in deep sleep. We don't need to
> save it.
> >>>>>
> >>>>> How does the PCI code know you're entering deep sleep and not
> >>> hibernation?
> >>>>>
> >>>>> -Scott
> >>>>
> >>>> When system come back from hibernation PCI will be initialized again=
.
> >>>> So no need to save PCI_CMD and PEXCSRBAR.
> >>>>
> >>>> -Hongtao.
> >>>>
> >>>
> >>> What do you mean PCI will be initialized again?  What code path are
> >>> you talking about that would set PCI_CMD & PEXCSRBAR?
> >>>
> >>> - k
> >>
> >>
> >> In hibernation mode:
> >>
> >> When system come back from hibernation kernel will start up again.
> >> Before loading hibernation image PCI initialization has already done.
> >> Some other hardware also re-init again.
> >
> > In current Linux implementation, restoring from hibernation image is
> > using late initcall.  By that time, all the platform devices are
> > already initialized like a fresh boot.
> >
> > - Leo
>=20
> I ask against, what specific code path (I'd like a call trace) would
> cause PCI_CMD and PEXCSRBAR to be set in the wakeup case?
>=20
> - k

The code path is the same as a fresh boot:
fsl_add_bridge()
	-> setup_pci_cmd() [PCI_CMD is set]
	-> setup_pci_atmu() [PEXCSRBAR is set]

- Hongtao.

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

end of thread, other threads:[~2012-08-10  2:17 UTC | newest]

Thread overview: 36+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2012-07-24 10:20 [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Jia Hongtao
2012-07-24 10:20 ` [PATCH 2/6] powerpc/fsl-pci: Check swiotlb enable at board setup_arch stage Jia Hongtao
2012-07-24 10:20 ` [PATCH 3/6] powerpc/fsl-pci: Determine primary bus by looking for ISA node Jia Hongtao
2012-07-24 18:47   ` Scott Wood
2012-07-25  2:42     ` Jia Hongtao-B38951
2012-07-25 17:25       ` Scott Wood
2012-07-26  2:20         ` Jia Hongtao-B38951
2012-07-27  1:34           ` Scott Wood
2012-07-27  2:07             ` Jia Hongtao-B38951
2012-07-27 16:37               ` Scott Wood
2012-07-25  9:01     ` Jia Hongtao-B38951
2012-07-25 17:27       ` Scott Wood
2012-07-24 10:20 ` [PATCH 4/6] powerpc/mpc85xx_ds: convert to unified PCI init Jia Hongtao
2012-07-24 10:20 ` [PATCH 5/6] powerpc/fsl-pci: Add pci inbound/outbound PM support Jia Hongtao
2012-07-27 13:24   ` Kumar Gala
2012-07-30  6:09     ` Jia Hongtao-B38951
2012-07-31 13:37       ` Kumar Gala
2012-08-02 11:35         ` Jia Hongtao-B38951
2012-08-07 10:11         ` Jia Hongtao-B38951
2012-08-07 15:34           ` Scott Wood
2012-08-07 17:34             ` Kumar Gala
2012-08-08  3:07               ` Jia Hongtao-B38951
2012-08-08  9:54             ` Jia Hongtao-B38951
2012-08-08 12:46               ` Kumar Gala
2012-08-08 21:04                 ` Scott Wood
2012-08-09 10:32                   ` Jia Hongtao-B38951
2012-08-09  2:52                 ` Jia Hongtao-B38951
2012-08-09  5:05                   ` Li Yang
2012-08-09 13:08                     ` Kumar Gala
2012-08-10  2:17                       ` Jia Hongtao-B38951
2012-07-24 10:20 ` [PATCH 6/6] Edac/85xx: Register mpc85xx_pci_err_driver by fsl_pci_driver Jia Hongtao
2012-07-24 18:42 ` [PATCH 1/6] powerpc/fsl-pci: Unify pci/pcie initialization code Scott Wood
2012-07-25  2:35   ` Jia Hongtao-B38951
2012-07-25 17:23     ` Scott Wood
2012-07-26  2:09       ` Jia Hongtao-B38951
2012-07-26  2:38       ` Jia Hongtao-B38951

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.