* [PATCH v3 03/10] powerpc/mpic: Assume a device-node was passed in mpic_alloc()
From: Kyle Moffett @ 2011-12-02 16:28 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: linuxppc-dev, Paul Mackerras, Michael Ellerman, Kyle Moffett
In-Reply-To: <1322795058.3729.48.camel@pasglop>
All of the existing callers of mpic_alloc() pass in a non-NULL
device-node pointer, so the checks for a NULL device-node may be
removed.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
---
arch/powerpc/sysdev/mpic.c | 50 ++++++++++++++++++-------------------------
1 files changed, 21 insertions(+), 29 deletions(-)
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index 8f24c6e..59564dc 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1137,19 +1137,17 @@ struct mpic * __init mpic_alloc(struct device_node *node,
unsigned int irq_count,
const char *name)
{
- struct mpic *mpic;
- u32 greg_feature;
- const char *vers;
- int i;
- int intvec_top;
+ int i, psize, intvec_top;
+ struct mpic *mpic;
+ u32 greg_feature;
+ const char *vers;
+ const u32 *psrc;
- /*
- * If no phyiscal address was specified then all of the phyiscal
- * addressing parameters must come from the device-tree.
- */
- if (!phys_addr) {
- BUG_ON(!node);
+ /* This code assumes that a non-NULL device node is passed in */
+ BUG_ON(!node);
+ /* Pick the physical address from the device tree if unspecified */
+ if (!phys_addr) {
/* Check if it is DCR-based */
if (of_get_property(node, "dcr-reg", NULL)) {
flags |= MPIC_USES_DCR;
@@ -1211,28 +1209,22 @@ struct mpic * __init mpic_alloc(struct device_node *node,
mpic->spurious_vec = intvec_top;
/* Check for "big-endian" in device-tree */
- if (node && of_get_property(node, "big-endian", NULL) != NULL)
+ if (of_get_property(node, "big-endian", NULL) != NULL)
mpic->flags |= MPIC_BIG_ENDIAN;
- if (node && of_device_is_compatible(node, "fsl,mpic"))
+ if (of_device_is_compatible(node, "fsl,mpic"))
mpic->flags |= MPIC_FSL;
/* Look for protected sources */
- if (node) {
- int psize;
- unsigned int bits, mapsize;
- const u32 *psrc =
- of_get_property(node, "protected-sources", &psize);
- if (psrc) {
- psize /= 4;
- bits = intvec_top + 1;
- mapsize = BITS_TO_LONGS(bits) * sizeof(unsigned long);
- mpic->protected = kzalloc(mapsize, GFP_KERNEL);
- BUG_ON(mpic->protected == NULL);
- for (i = 0; i < psize; i++) {
- if (psrc[i] > intvec_top)
- continue;
- __set_bit(psrc[i], mpic->protected);
- }
+ psrc = of_get_property(node, "protected-sources", &psize);
+ if (psrc) {
+ /* Allocate a bitmap with one bit per interrupt */
+ unsigned int mapsize = BITS_TO_LONGS(intvec_top + 1);
+ mpic->protected = kzalloc(mapsize*sizeof(long), GFP_KERNEL);
+ BUG_ON(mpic->protected == NULL);
+ for (i = 0; i < psize/sizeof(u32); i++) {
+ if (psrc[i] > intvec_top)
+ continue;
+ __set_bit(psrc[i], mpic->protected);
}
}
--
1.7.2.5
^ permalink raw reply related
* [PATCH v3 02/10] powerpc: Consolidate mpic_alloc() OF address translation
From: Kyle Moffett @ 2011-12-02 16:27 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Michael Ellerman, Paul Mackerras, Kyle Moffett, linuxppc-dev
In-Reply-To: <1322795058.3729.48.camel@pasglop>
Instead of using the open-coded "reg" property lookup and address
translation in mpic_alloc(), directly call of_address_to_resource().
This includes various workarounds for special cases which the naive
of_address_translate() does not.
Afterwards it is possible to remove the copiously copy-pasted calls to
of_address_translate() from the 85xx/86xx/powermac platforms.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Grant Likely <grant.likely@secretlab.ca>
Cc: Kumar Gala <galak@kernel.crashing.org>
---
arch/powerpc/platforms/85xx/corenet_ds.c | 9 +----
arch/powerpc/platforms/85xx/ksi8560.c | 9 +----
arch/powerpc/platforms/85xx/mpc8536_ds.c | 9 +----
arch/powerpc/platforms/85xx/mpc85xx_ads.c | 9 +----
arch/powerpc/platforms/85xx/mpc85xx_cds.c | 9 +----
arch/powerpc/platforms/85xx/mpc85xx_ds.c | 11 +----
arch/powerpc/platforms/85xx/mpc85xx_mds.c | 9 +----
arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 11 +----
arch/powerpc/platforms/85xx/p1010rdb.c | 9 +----
arch/powerpc/platforms/85xx/p1022_ds.c | 9 +----
arch/powerpc/platforms/85xx/p1023_rds.c | 9 +----
arch/powerpc/platforms/85xx/sbc8548.c | 9 +----
arch/powerpc/platforms/85xx/sbc8560.c | 9 +----
arch/powerpc/platforms/85xx/socrates.c | 9 +----
arch/powerpc/platforms/85xx/stx_gp3.c | 9 +----
arch/powerpc/platforms/85xx/tqm85xx.c | 9 +----
arch/powerpc/platforms/85xx/xes_mpc85xx.c | 9 +----
arch/powerpc/platforms/86xx/pic.c | 4 +-
arch/powerpc/platforms/powermac/pic.c | 8 +---
arch/powerpc/sysdev/mpic.c | 61 ++++++++++++++++-------------
20 files changed, 55 insertions(+), 175 deletions(-)
diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c b/arch/powerpc/platforms/85xx/corenet_ds.c
index 3052821..5b1c577 100644
--- a/arch/powerpc/platforms/85xx/corenet_ds.c
+++ b/arch/powerpc/platforms/85xx/corenet_ds.c
@@ -36,7 +36,6 @@
void __init corenet_ds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
unsigned int flags = MPIC_PRIMARY | MPIC_BIG_ENDIAN |
MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU;
@@ -48,16 +47,10 @@ void __init corenet_ds_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
if (ppc_md.get_irq == mpic_get_coreint_irq)
flags |= MPIC_ENABLE_COREINT;
- mpic = mpic_alloc(np, r.start, flags, 0, 256, " OpenPIC ");
+ mpic = mpic_alloc(np, 0, flags, 0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
mpic_init(mpic);
diff --git a/arch/powerpc/platforms/85xx/ksi8560.c b/arch/powerpc/platforms/85xx/ksi8560.c
index 0f3e688..3403b0e 100644
--- a/arch/powerpc/platforms/85xx/ksi8560.c
+++ b/arch/powerpc/platforms/85xx/ksi8560.c
@@ -58,7 +58,6 @@ static void machine_restart(char *cmd)
static void __init ksi8560_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -68,13 +67,7 @@ static void __init ksi8560_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Could not map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/mpc8536_ds.c b/arch/powerpc/platforms/85xx/mpc8536_ds.c
index 9ee6455..5c20b28 100644
--- a/arch/powerpc/platforms/85xx/mpc8536_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc8536_ds.c
@@ -37,7 +37,6 @@
void __init mpc8536_ds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -46,13 +45,7 @@ void __init mpc8536_ds_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
index 986554b..4c1e9b6 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c
@@ -51,7 +51,6 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
static void __init mpc85xx_ads_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
np = of_find_node_by_type(np, "open-pic");
@@ -60,13 +59,7 @@ static void __init mpc85xx_ads_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Could not map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
index d993b66..62b90c3 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c
@@ -188,7 +188,6 @@ static struct irqaction mpc85xxcds_8259_irqaction = {
static void __init mpc85xx_cds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
np = of_find_node_by_type(np, "open-pic");
@@ -198,13 +197,7 @@ static void __init mpc85xx_cds_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index 3f66631..4fc6b80 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -63,7 +63,6 @@ static void mpc85xx_8259_cascade(unsigned int irq, struct irq_desc *desc)
void __init mpc85xx_ds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
#ifdef CONFIG_PPC_I8259
struct device_node *cascade_node = NULL;
@@ -77,20 +76,14 @@ void __init mpc85xx_ds_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
if (of_flat_dt_is_compatible(root, "fsl,MPC8572DS-CAMP")) {
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
} else {
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index 813b5d3..74b6da2 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -435,20 +435,13 @@ machine_arch_initcall(p1021_mds, swiotlb_setup_bus_notifier);
static void __init mpc85xx_mds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
np = of_find_node_by_type(NULL, "open-pic");
if (!np)
return;
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
index b1ca429..2b299eb 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
@@ -45,7 +45,6 @@
void __init mpc85xx_rdb_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
unsigned long root = of_get_flat_dt_root();
@@ -55,20 +54,14 @@ void __init mpc85xx_rdb_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
if (of_flat_dt_is_compatible(root, "fsl,MPC85XXRDB-CAMP")) {
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
} else {
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
diff --git a/arch/powerpc/platforms/85xx/p1010rdb.c b/arch/powerpc/platforms/85xx/p1010rdb.c
index 2f479f8..dff49e8 100644
--- a/arch/powerpc/platforms/85xx/p1010rdb.c
+++ b/arch/powerpc/platforms/85xx/p1010rdb.c
@@ -33,7 +33,6 @@
void __init p1010_rdb_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -42,13 +41,7 @@ void __init p1010_rdb_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start, MPIC_PRIMARY | MPIC_WANTS_RESET |
+ mpic = mpic_alloc(np, 0, MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c
index 8d5c22b..6d684c2 100644
--- a/arch/powerpc/platforms/85xx/p1022_ds.c
+++ b/arch/powerpc/platforms/85xx/p1022_ds.c
@@ -242,7 +242,6 @@ p1022ds_valid_monitor_port(enum fsl_diu_monitor_port port)
void __init p1022_ds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -251,13 +250,7 @@ void __init p1022_ds_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- pr_err("Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
diff --git a/arch/powerpc/platforms/85xx/p1023_rds.c b/arch/powerpc/platforms/85xx/p1023_rds.c
index 57c3e0f..df7ccf6 100644
--- a/arch/powerpc/platforms/85xx/p1023_rds.c
+++ b/arch/powerpc/platforms/85xx/p1023_rds.c
@@ -94,7 +94,6 @@ machine_device_initcall(p1023_rds, mpc85xx_common_publish_devices);
static void __init mpc85xx_rds_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
np = of_find_node_by_type(NULL, "open-pic");
@@ -103,13 +102,7 @@ static void __init mpc85xx_rds_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN |
MPIC_BROKEN_FRR_NIRQS | MPIC_SINGLE_DEST_CPU,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/85xx/sbc8548.c b/arch/powerpc/platforms/85xx/sbc8548.c
index 845ed3b..5e16025 100644
--- a/arch/powerpc/platforms/85xx/sbc8548.c
+++ b/arch/powerpc/platforms/85xx/sbc8548.c
@@ -55,7 +55,6 @@ static int sbc_rev;
static void __init sbc8548_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
np = of_find_node_by_type(np, "open-pic");
@@ -65,13 +64,7 @@ static void __init sbc8548_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/sbc8560.c b/arch/powerpc/platforms/85xx/sbc8560.c
index e9a7ed2..97f00de 100644
--- a/arch/powerpc/platforms/85xx/sbc8560.c
+++ b/arch/powerpc/platforms/85xx/sbc8560.c
@@ -42,7 +42,6 @@
static void __init sbc8560_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np = NULL;
np = of_find_node_by_type(np, "open-pic");
@@ -51,13 +50,7 @@ static void __init sbc8560_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Could not map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/socrates.c b/arch/powerpc/platforms/85xx/socrates.c
index fec496a..e87e75c 100644
--- a/arch/powerpc/platforms/85xx/socrates.c
+++ b/arch/powerpc/platforms/85xx/socrates.c
@@ -47,7 +47,6 @@
static void __init socrates_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -56,13 +55,7 @@ static void __init socrates_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Could not map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/stx_gp3.c b/arch/powerpc/platforms/85xx/stx_gp3.c
index b44c936..060d514 100644
--- a/arch/powerpc/platforms/85xx/stx_gp3.c
+++ b/arch/powerpc/platforms/85xx/stx_gp3.c
@@ -49,7 +49,6 @@
static void __init stx_gp3_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -58,13 +57,7 @@ static void __init stx_gp3_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Could not map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c
index 2418bf8..a46b9fc 100644
--- a/arch/powerpc/platforms/85xx/tqm85xx.c
+++ b/arch/powerpc/platforms/85xx/tqm85xx.c
@@ -47,7 +47,6 @@
static void __init tqm85xx_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -56,13 +55,7 @@ static void __init tqm85xx_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Could not map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET | MPIC_BIG_ENDIAN,
0, 256, " OpenPIC ");
BUG_ON(mpic == NULL);
diff --git a/arch/powerpc/platforms/85xx/xes_mpc85xx.c b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
index daf9bef..2be5e4d 100644
--- a/arch/powerpc/platforms/85xx/xes_mpc85xx.c
+++ b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
@@ -44,7 +44,6 @@
void __init xes_mpc85xx_pic_init(void)
{
struct mpic *mpic;
- struct resource r;
struct device_node *np;
np = of_find_node_by_type(NULL, "open-pic");
@@ -53,13 +52,7 @@ void __init xes_mpc85xx_pic_init(void)
return;
}
- if (of_address_to_resource(np, 0, &r)) {
- printk(KERN_ERR "Failed to map mpic register space\n");
- of_node_put(np);
- return;
- }
-
- mpic = mpic_alloc(np, r.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS,
0, 256, " OpenPIC ");
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c
index 8ef8960..f85c8f0 100644
--- a/arch/powerpc/platforms/86xx/pic.c
+++ b/arch/powerpc/platforms/86xx/pic.c
@@ -33,7 +33,6 @@ void __init mpc86xx_init_irq(void)
{
struct mpic *mpic;
struct device_node *np;
- struct resource res;
#ifdef CONFIG_PPC_I8259
struct device_node *cascade_node = NULL;
int cascade_irq;
@@ -43,9 +42,8 @@ void __init mpc86xx_init_irq(void)
np = of_find_node_by_type(NULL, "open-pic");
if (np == NULL)
return;
- of_address_to_resource(np, 0, &res);
- mpic = mpic_alloc(np, res.start,
+ mpic = mpic_alloc(np, 0,
MPIC_PRIMARY | MPIC_WANTS_RESET |
MPIC_BIG_ENDIAN | MPIC_BROKEN_FRR_NIRQS |
MPIC_SINGLE_DEST_CPU,
diff --git a/arch/powerpc/platforms/powermac/pic.c b/arch/powerpc/platforms/powermac/pic.c
index 901bfbd..78456fd 100644
--- a/arch/powerpc/platforms/powermac/pic.c
+++ b/arch/powerpc/platforms/powermac/pic.c
@@ -498,14 +498,8 @@ static struct mpic * __init pmac_setup_one_mpic(struct device_node *np,
int master)
{
const char *name = master ? " MPIC 1 " : " MPIC 2 ";
- struct resource r;
struct mpic *mpic;
unsigned int flags = master ? MPIC_PRIMARY : 0;
- int rc;
-
- rc = of_address_to_resource(np, 0, &r);
- if (rc)
- return NULL;
pmac_call_feature(PMAC_FTR_ENABLE_MPIC, np, 0, 0);
@@ -519,7 +513,7 @@ static struct mpic * __init pmac_setup_one_mpic(struct device_node *np,
if (master && (flags & MPIC_BIG_ENDIAN))
flags |= MPIC_U3_HT_IRQS;
- mpic = mpic_alloc(np, r.start, flags, 0, 0, name);
+ mpic = mpic_alloc(np, 0, flags, 0, 0, name);
if (mpic == NULL)
return NULL;
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c
index b3fa3d7..8f24c6e 100644
--- a/arch/powerpc/sysdev/mpic.c
+++ b/arch/powerpc/sysdev/mpic.c
@@ -1142,7 +1142,24 @@ struct mpic * __init mpic_alloc(struct device_node *node,
const char *vers;
int i;
int intvec_top;
- u64 paddr = phys_addr;
+
+ /*
+ * If no phyiscal address was specified then all of the phyiscal
+ * addressing parameters must come from the device-tree.
+ */
+ if (!phys_addr) {
+ BUG_ON(!node);
+
+ /* Check if it is DCR-based */
+ if (of_get_property(node, "dcr-reg", NULL)) {
+ flags |= MPIC_USES_DCR;
+ } else {
+ struct resource r;
+ if (of_address_to_resource(node, 0, &r))
+ return NULL;
+ phys_addr = r.start;
+ }
+ }
mpic = kzalloc(sizeof(struct mpic), GFP_KERNEL);
if (mpic == NULL)
@@ -1224,35 +1241,25 @@ struct mpic * __init mpic_alloc(struct device_node *node,
#endif
/* default register type */
- mpic->reg_type = (flags & MPIC_BIG_ENDIAN) ?
- mpic_access_mmio_be : mpic_access_mmio_le;
-
- /* If no physical address is passed in, a device-node is mandatory */
- BUG_ON(paddr == 0 && node == NULL);
+ if (flags & MPIC_BIG_ENDIAN)
+ mpic->reg_type = mpic_access_mmio_be;
+ else
+ mpic->reg_type = mpic_access_mmio_le;
- /* If no physical address passed in, check if it's dcr based */
- if (paddr == 0 && of_get_property(node, "dcr-reg", NULL) != NULL) {
+ /*
+ * An MPIC with a "dcr-reg" property must be accessed that way, but
+ * only if the kernel includes DCR support.
+ */
#ifdef CONFIG_PPC_DCR
- mpic->flags |= MPIC_USES_DCR;
+ if (flags & MPIC_USES_DCR)
mpic->reg_type = mpic_access_dcr;
#else
- BUG();
-#endif /* CONFIG_PPC_DCR */
- }
-
- /* If the MPIC is not DCR based, and no physical address was passed
- * in, try to obtain one
- */
- if (paddr == 0 && !(mpic->flags & MPIC_USES_DCR)) {
- const u32 *reg = of_get_property(node, "reg", NULL);
- BUG_ON(reg == NULL);
- paddr = of_translate_address(node, reg);
- BUG_ON(paddr == OF_BAD_ADDR);
- }
+ BUG_ON(flags & MPIC_USES_DCR);
+#endif
/* Map the global registers */
- mpic_map(mpic, node, paddr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
- mpic_map(mpic, node, paddr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
+ mpic_map(mpic, node, phys_addr, &mpic->gregs, MPIC_INFO(GREG_BASE), 0x1000);
+ mpic_map(mpic, node, phys_addr, &mpic->tmregs, MPIC_INFO(TIMER_BASE), 0x1000);
/* Reset */
@@ -1307,7 +1314,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
for_each_possible_cpu(i) {
unsigned int cpu = get_hard_smp_processor_id(i);
- mpic_map(mpic, node, paddr, &mpic->cpuregs[cpu],
+ mpic_map(mpic, node, phys_addr, &mpic->cpuregs[cpu],
MPIC_INFO(CPU_BASE) + cpu * MPIC_INFO(CPU_STRIDE),
0x1000);
}
@@ -1315,7 +1322,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
/* Initialize main ISU if none provided */
if (mpic->isu_size == 0) {
mpic->isu_size = mpic->num_sources;
- mpic_map(mpic, node, paddr, &mpic->isus[0],
+ mpic_map(mpic, node, phys_addr, &mpic->isus[0],
MPIC_INFO(IRQ_BASE), MPIC_INFO(IRQ_STRIDE) * mpic->isu_size);
}
mpic->isu_shift = 1 + __ilog2(mpic->isu_size - 1);
@@ -1347,7 +1354,7 @@ struct mpic * __init mpic_alloc(struct device_node *node,
}
printk(KERN_INFO "mpic: Setting up MPIC \"%s\" version %s at %llx,"
" max %d CPUs\n",
- name, vers, (unsigned long long)paddr, num_possible_cpus());
+ name, vers, (unsigned long long)phys_addr, num_possible_cpus());
printk(KERN_INFO "mpic: ISU size: %d, shift: %d, mask: %x\n",
mpic->isu_size, mpic->isu_shift, mpic->isu_mask);
--
1.7.2.5
^ permalink raw reply related
* [PATCH v3 01/10] powerpc/85xx: Move mpc85xx_smp_init() decl to a new "smp.h"
From: Kyle Moffett @ 2011-12-02 16:27 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: Michael Ellerman, Paul Mackerras, Kyle Moffett, linuxppc-dev
In-Reply-To: <1322795058.3729.48.camel@pasglop>
This removes a bunch of "extern" declarations and CONFIG_SMP ifdefs.
Signed-off-by: Kyle Moffett <Kyle.D.Moffett@boeing.com>
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Kumar Gala <galak@kernel.crashing.org>
---
arch/powerpc/platforms/85xx/corenet_ds.c | 7 +------
arch/powerpc/platforms/85xx/mpc85xx_ds.c | 6 +-----
arch/powerpc/platforms/85xx/mpc85xx_mds.c | 7 +------
arch/powerpc/platforms/85xx/mpc85xx_rdb.c | 7 +------
arch/powerpc/platforms/85xx/p1022_ds.c | 7 +------
arch/powerpc/platforms/85xx/p1023_rds.c | 7 +------
arch/powerpc/platforms/85xx/smp.c | 1 +
arch/powerpc/platforms/85xx/smp.h | 15 +++++++++++++++
arch/powerpc/platforms/85xx/xes_mpc85xx.c | 6 +-----
9 files changed, 23 insertions(+), 40 deletions(-)
create mode 100644 arch/powerpc/platforms/85xx/smp.h
diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c b/arch/powerpc/platforms/85xx/corenet_ds.c
index c48b661..3052821 100644
--- a/arch/powerpc/platforms/85xx/corenet_ds.c
+++ b/arch/powerpc/platforms/85xx/corenet_ds.c
@@ -31,6 +31,7 @@
#include <linux/of_platform.h>
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
+#include "smp.h"
void __init corenet_ds_pic_init(void)
{
@@ -65,10 +66,6 @@ void __init corenet_ds_pic_init(void)
/*
* Setup the architecture
*/
-#ifdef CONFIG_SMP
-void __init mpc85xx_smp_init(void);
-#endif
-
void __init corenet_ds_setup_arch(void)
{
#ifdef CONFIG_PCI
@@ -77,9 +74,7 @@ void __init corenet_ds_setup_arch(void)
#endif
dma_addr_t max = 0xffffffff;
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
#ifdef CONFIG_PCI
for_each_node_by_type(np, "pci") {
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
index 2113120..3f66631 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
@@ -35,6 +35,7 @@
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
+#include "smp.h"
#include "mpc85xx.h"
@@ -154,9 +155,6 @@ static int mpc85xx_exclude_device(struct pci_controller *hose,
/*
* Setup the architecture
*/
-#ifdef CONFIG_SMP
-extern void __init mpc85xx_smp_init(void);
-#endif
static void __init mpc85xx_ds_setup_arch(void)
{
#ifdef CONFIG_PCI
@@ -189,9 +187,7 @@ static void __init mpc85xx_ds_setup_arch(void)
ppc_md.pci_exclude_device = mpc85xx_exclude_device;
#endif
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
#ifdef CONFIG_SWIOTLB
if (memblock_end_of_DRAM() > max) {
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
index 495cfd9..813b5d3 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c
@@ -51,6 +51,7 @@
#include <asm/qe_ic.h>
#include <asm/mpic.h>
#include <asm/swiotlb.h>
+#include "smp.h"
#include "mpc85xx.h"
@@ -155,10 +156,6 @@ static int mpc8568_mds_phy_fixups(struct phy_device *phydev)
* Setup the architecture
*
*/
-#ifdef CONFIG_SMP
-extern void __init mpc85xx_smp_init(void);
-#endif
-
#ifdef CONFIG_QUICC_ENGINE
static void __init mpc85xx_mds_reset_ucc_phys(void)
{
@@ -363,9 +360,7 @@ static void __init mpc85xx_mds_setup_arch(void)
}
#endif
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
mpc85xx_mds_qe_init();
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
index 9feccbb..b1ca429 100644
--- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
+++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c
@@ -29,6 +29,7 @@
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
+#include "smp.h"
#include "mpc85xx.h"
@@ -84,9 +85,6 @@ void __init mpc85xx_rdb_pic_init(void)
/*
* Setup the architecture
*/
-#ifdef CONFIG_SMP
-extern void __init mpc85xx_smp_init(void);
-#endif
static void __init mpc85xx_rdb_setup_arch(void)
{
#ifdef CONFIG_PCI
@@ -104,10 +102,7 @@ static void __init mpc85xx_rdb_setup_arch(void)
#endif
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
-
printk(KERN_INFO "MPC85xx RDB board from Freescale Semiconductor\n");
}
diff --git a/arch/powerpc/platforms/85xx/p1022_ds.c b/arch/powerpc/platforms/85xx/p1022_ds.c
index 2bf4342..8d5c22b 100644
--- a/arch/powerpc/platforms/85xx/p1022_ds.c
+++ b/arch/powerpc/platforms/85xx/p1022_ds.c
@@ -26,6 +26,7 @@
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
#include <asm/fsl_guts.h>
+#include "smp.h"
#include "mpc85xx.h"
@@ -268,10 +269,6 @@ void __init p1022_ds_pic_init(void)
mpic_init(mpic);
}
-#ifdef CONFIG_SMP
-void __init mpc85xx_smp_init(void);
-#endif
-
/*
* Setup the architecture
*/
@@ -311,9 +308,7 @@ static void __init p1022_ds_setup_arch(void)
diu_ops.valid_monitor_port = p1022ds_valid_monitor_port;
#endif
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
#ifdef CONFIG_SWIOTLB
if (memblock_end_of_DRAM() > max) {
diff --git a/arch/powerpc/platforms/85xx/p1023_rds.c b/arch/powerpc/platforms/85xx/p1023_rds.c
index e76c4dc..57c3e0f 100644
--- a/arch/powerpc/platforms/85xx/p1023_rds.c
+++ b/arch/powerpc/platforms/85xx/p1023_rds.c
@@ -30,6 +30,7 @@
#include <asm/prom.h>
#include <asm/udbg.h>
#include <asm/mpic.h>
+#include "smp.h"
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
@@ -41,10 +42,6 @@
* Setup the architecture
*
*/
-#ifdef CONFIG_SMP
-void __init mpc85xx_smp_init(void);
-#endif
-
static void __init mpc85xx_rds_setup_arch(void)
{
struct device_node *np;
@@ -89,9 +86,7 @@ static void __init mpc85xx_rds_setup_arch(void)
fsl_add_bridge(np, 0);
#endif
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
}
machine_device_initcall(p1023_rds, mpc85xx_common_publish_devices);
diff --git a/arch/powerpc/platforms/85xx/smp.c b/arch/powerpc/platforms/85xx/smp.c
index 2df4785..ff42490 100644
--- a/arch/powerpc/platforms/85xx/smp.c
+++ b/arch/powerpc/platforms/85xx/smp.c
@@ -27,6 +27,7 @@
#include <sysdev/fsl_soc.h>
#include <sysdev/mpic.h>
+#include "smp.h"
extern void __early_start(void);
diff --git a/arch/powerpc/platforms/85xx/smp.h b/arch/powerpc/platforms/85xx/smp.h
new file mode 100644
index 0000000..e2b4493
--- /dev/null
+++ b/arch/powerpc/platforms/85xx/smp.h
@@ -0,0 +1,15 @@
+#ifndef POWERPC_85XX_SMP_H_
+#define POWERPC_85XX_SMP_H_ 1
+
+#include <linux/init.h>
+
+#ifdef CONFIG_SMP
+void __init mpc85xx_smp_init(void);
+#else
+static inline void mpc85xx_smp_init(void)
+{
+ /* Nothing to do */
+}
+#endif
+
+#endif /* not POWERPC_85XX_SMP_H_ */
diff --git a/arch/powerpc/platforms/85xx/xes_mpc85xx.c b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
index 4632c1b..daf9bef 100644
--- a/arch/powerpc/platforms/85xx/xes_mpc85xx.c
+++ b/arch/powerpc/platforms/85xx/xes_mpc85xx.c
@@ -32,6 +32,7 @@
#include <sysdev/fsl_soc.h>
#include <sysdev/fsl_pci.h>
+#include "smp.h"
#include "mpc85xx.h"
@@ -138,9 +139,6 @@ static int primary_phb_addr;
/*
* Setup the architecture
*/
-#ifdef CONFIG_SMP
-extern void __init mpc85xx_smp_init(void);
-#endif
static void __init xes_mpc85xx_setup_arch(void)
{
#ifdef CONFIG_PCI
@@ -174,9 +172,7 @@ static void __init xes_mpc85xx_setup_arch(void)
}
#endif
-#ifdef CONFIG_SMP
mpc85xx_smp_init();
-#endif
}
machine_device_initcall(xes_mpc8572, mpc85xx_common_publish_devices);
--
1.7.2.5
^ permalink raw reply related
* [PATCH v3 00/10] powerpc/mpic: General cleanup patch series
From: Kyle Moffett @ 2011-12-02 16:27 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, Paul Mackerras, Michael Ellerman
In-Reply-To: <1322795058.3729.48.camel@pasglop>
Hello,
This is version 3 of the MPIC cleanup patches.
A few minor bugfixes have been rolled into patches 2, 7, and 10, kudos
to Paul Mackerras and Michael Ellerman for reporting them.
Additionally, the series has been rebased onto Ben's "next" branch
for easier merging:
git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git next
Unfortunately, my local board-support code conflicts with the mpc85xx
device-tree updates in that branch, so I haven't been able to do more
testing locally. I will hopefully have that resolved soon, however.
Cheers,
Kyle Moffett
^ permalink raw reply
* Re: sam460ex, sm501 incorrect device id with kernel >=linux-2.6.39
From: Anatolij Gustschin @ 2011-12-02 15:35 UTC (permalink / raw)
To: acrux; +Cc: linuxppc-dev
In-Reply-To: <20111202154833.72c75615.acrux_it@libero.it>
Hi,
On Fri, 2 Dec 2011 15:48:33 +0100
acrux <acrux_it@libero.it> wrote:
...
> This little hack fix my problem:
> --- a/inlcude/linux/sm501.h 2011-12-02 01:11:04.000000000 +0100
> +++ b/include/linux/sm501.h 2011-12-02 01:11:09.000000000 +0100
> @@ -174,8 +174,8 @@
> };
>
> #if defined(CONFIG_PPC32)
> -#define smc501_readl(addr) ioread32be((addr))
> -#define smc501_writel(val, addr) iowrite32be((val), (addr))
> +#define smc501_readl(addr) ioread32((addr))
> +#define smc501_writel(val, addr) iowrite32((val), (addr))
> #else
> #define smc501_readl(addr) readl(addr)
> #define smc501_writel(val, addr) writel(val, addr)
>
>
> but instead, why am I obliged to read it as little endian to have the correct value?
The SM502 registers are in little endian format, you access them
over PCI interface, that is the reason. The commit introduced
a regression, I'll try to fix it this weekend. IIRC, there is
a flag to switch to big-endian register format in SM502, but
I'm not sure if it will also affect frame buffer data format.
Anatolij
^ permalink raw reply
* Re: sam460ex, sm501 incorrect device id with kernel >=linux-2.6.39
From: acrux @ 2011-12-02 14:48 UTC (permalink / raw)
To: Anatolij Gustschin; +Cc: linuxppc-dev
In-Reply-To: <20111128212224.2bd66125@wker>
On Mon, 28 Nov 2011 21:22:24 +0100
Anatolij Gustschin <agust@denx.de> wrote:
> On Mon, 28 Nov 2011 20:56:55 +0100
> acrux <acrux_it@libero.it> wrote:
> ...
> > it seems to be an endianess issue but i didn't find when it was
> > introduced. Really strange this kind of issue was never noticed
> > bumping from 2.6.38.x to 2.6.39.x .
>
> Look at commit bf5f0019046d596d613caf74722ba4994e153899
> (video, sm501: add I/O functions for use on powerpc).
> This is the issue, I think. Especially changes in
> include/linux/sm501.h by this commit. Since CONFIG_PPC32 is defined
> for canyonlands, ioread32be() is used to access the registers at PCI
> space which is wrong. The patch was tested on tqm5200 with sm501
> connected on localbus, so using ioread32be() worked there. Your sm502
> is on PCI bus I suppose. This issue needs to be fixed.
>
well, the commit suggested is this one:
http://git.kernel.org/?p=linux/kernel/git/next/linux-next.git;a=commitdiff;h=bf5f0019046d596d613caf74722ba4994e153899
This little hack fix my problem:
--- a/inlcude/linux/sm501.h 2011-12-02 01:11:04.000000000 +0100
+++ b/include/linux/sm501.h 2011-12-02 01:11:09.000000000 +0100
@@ -174,8 +174,8 @@
};
#if defined(CONFIG_PPC32)
-#define smc501_readl(addr) ioread32be((addr))
-#define smc501_writel(val, addr) iowrite32be((val), (addr))
+#define smc501_readl(addr) ioread32((addr))
+#define smc501_writel(val, addr) iowrite32((val), (addr))
#else
#define smc501_readl(addr) readl(addr)
#define smc501_writel(val, addr) writel(val, addr)
but instead, why am I obliged to read it as little endian to have the correct value?
thanks for your help,
--nico
--
GNU/Linux on Power Architecture
CRUX PPC - http://cruxppc.org/
^ permalink raw reply
* Re: [PATCH] powerpc: Add support for OpenBlockS 600
From: Josh Boyer @ 2011-12-02 11:52 UTC (permalink / raw)
To: Olof Johansson; +Cc: linuxppc-dev
In-Reply-To: <CAOesGMgkh-OzyRH_O+2TT7AzhY0bHWazua9s6Mj9qmb174DANw@mail.gmail.com>
On Fri, Dec 2, 2011 at 1:40 AM, Olof Johansson <olof@lixom.net> wrote:
> Hi,
>
> On Thu, Dec 1, 2011 at 9:35 PM, Benjamin Herrenschmidt
> <benh@kernel.crashing.org> wrote:
>
>> =A0arch/powerpc/boot/dts/obs600.dts =A0 =A0 =A0 =A0 =A0 | =A0314 +++++++=
+++++++++++++++++++++
>
> It'd be nice to have dtsi files for the SoCs, there's a lot of boiler
> plate in there. That shouldn't hold up this specific patch though.
That sounds like a cleanup project for me. I just need to figure out
how they work and find time.
>> =A0arch/powerpc/boot/wrapper =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 22=
++-
>> =A0arch/powerpc/configs/40x/obs600_defconfig =A0| =A0 83 ++++++++
>
> A new single-board defconfig? On arm that is a strong NACK, I'd say
> it's a bad idea on powerpc as well.
I like them. Particularly when they're the output of savedefconfig.
josh
^ permalink raw reply
* Re: [PATCH 1/3] serial: make bugs field not specific to 8250 type uarts.
From: Alan Cox @ 2011-12-02 11:49 UTC (permalink / raw)
To: Paul Gortmaker
Cc: gregkh, linux-kernel, linux-serial, scottwood, linuxppc-dev,
Alan Cox
In-Reply-To: <CAP=VYLpn7kJJ6we3diqhCR+QzjQtzTmkEzSP-uw07=udJKYK6g@mail.gmail.com>
> If you have an idea in mind how arch/platform code should cleanly
> pass data about known uart bugs to the uart driver, then let me know
> what you have in mind. I've no real attachment to what I proposed
> here -- it just happened to be the solution I thought would be the least
> offensive. If there is a better idea floating around, I'll go ahead and
> try to implement it.
My first guess is that "the uart driver" is our first historical mistake.
Non standard 8250ish uarts should be their own platform driver which uses
8250.c for support.
Things like 8250_dw.c is perhaps more the style we want to be looking at
for other devices and adjusting 8250.c as needed to export or split
methods up so they can be used as helpers.
Alan
^ permalink raw reply
* Re: [PATCH 3/3] 8250: add workaround for MPC8[356]xx UART break IRQ storm
From: Alan Cox @ 2011-12-02 11:30 UTC (permalink / raw)
To: Kumar Gala
Cc: gregkh, linux-kernel, Paul Gortmaker, linux-serial, Scott Wood,
linuxppc-dev, alan
In-Reply-To: <176AE2A1-6AA2-4F14-942F-8ED77AB1DBEC@kernel.crashing.org>
> > OK, I'll simply change the above to CONFIG_PPC then.
>
> It does, the bug is in the uart IP which I don't think we ever plan on fixing, so 32 or 64-bit parts will have it for ever and ever ;)
It should be runtime selected, there should be no ifdefs here.
^ permalink raw reply
* Re: [PATCH] powerpc: Add support for OpenBlockS 600
From: Benjamin Herrenschmidt @ 2011-12-02 8:49 UTC (permalink / raw)
To: Olof Johansson; +Cc: linuxppc-dev
In-Reply-To: <CAOesGMgkh-OzyRH_O+2TT7AzhY0bHWazua9s6Mj9qmb174DANw@mail.gmail.com>
On Thu, 2011-12-01 at 22:40 -0800, Olof Johansson wrote:
> Hi,
>
> On Thu, Dec 1, 2011 at 9:35 PM, Benjamin Herrenschmidt
> <benh@kernel.crashing.org> wrote:
>
> > arch/powerpc/boot/dts/obs600.dts | 314 ++++++++++++++++++++++++++++
>
> It'd be nice to have dtsi files for the SoCs, there's a lot of boiler
> plate in there. That shouldn't hold up this specific patch though.
Right definitely. One thing that I wonder tho (I haven't looked at the
dtsi stuff specifically), can it "remove" a node ?
Ie. The 405EX dtsi will probably expose the PCIe bridges in that
specific case, but I want them out as they aren't wired and trying to
use them causes a hang on this board.
Another approach is to stick in a disabled property and make sure the
ppc4xx_pci code checks it.
> > arch/powerpc/boot/wrapper | 22 ++-
> > arch/powerpc/configs/40x/obs600_defconfig | 83 ++++++++
>
> A new single-board defconfig? On arm that is a strong NACK, I'd say
> it's a bad idea on powerpc as well.
The defconfigs are just there for the user sake, I find them handy
myself. I have no objection (as maintainer) to having them since
nowadays they are really small and can be handy for embedded systems
(ie, on a tiny 405 based machine you really want to cut out the bloat
you don't need).
As long as the board -can- be built as part of a combo that is.
So as maintainer, I think I'll keep applying a different policy than ARM
in that area ;-)
Cheers,
Ben.
^ permalink raw reply
* Re: [PATCH] pq3: Add default tbi address
From: Kumar Gala @ 2011-12-02 7:20 UTC (permalink / raw)
To: Andy Fleming; +Cc: netdev, linuxppc-dev, David Miller
In-Reply-To: <1322809549-32622-2-git-send-email-afleming@freescale.com>
On Dec 2, 2011, at 1:05 AM, Andy Fleming wrote:
> The MDIO driver has been changed so that it no longer supports
> scanning the MDIO bus for a free address for the TBI PHY. This
> feature was fragile, and required scanning the bus before the bus
> was fully up and registered. The intended way for FSL devices to
> specify the TBI PHY's address is via a tbi node in the device tree.
> All of the device trees had such a node, except for the recent p1/p2
> trees. Rather than hand-fixing all of those boards, set a default
> value (most boards were using 0x11, anyway), and any board which
> wants to change it from that default can then override it in its
> board dts file.
>=20
> This fixes an issue where p1/p2 boards would fail to bring up
> Ethernet, due to not finding a tbi node.
Is this only needed on 1st controller because its what has external PHY =
control?
> Signed-off-by: Andy Fleming <afleming@freescale.com>
> ---
> arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi | 5 +++++
> arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi | 5 +++++
> 2 files changed, 10 insertions(+), 0 deletions(-)
This doesn't seem correct, meaning this should really be in the board =
.dts not in the IP.
I think the driver should check and warn if this property doesn't exist.
>=20
> diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi =
b/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
> index a1979ae..0a42e21 100644
> --- a/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
> @@ -50,4 +50,9 @@ mdio@24520 {
> #size-cells =3D <0>;
> compatible =3D "fsl,gianfar-mdio";
> reg =3D <0x24520 0x20>;
> +
> + tbi-phy@11 {
> + device-type =3D "tbi-phy";
> + reg =3D <0x11>;
> + };
> };
> diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi =
b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
> index 1382fec..964670a 100644
> --- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
> +++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
> @@ -38,6 +38,11 @@ mdio@24000 {
> #size-cells =3D <0>;
> compatible =3D "fsl,etsec2-mdio";
> reg =3D <0x24000 0x1000 0xb0030 0x4>;
> +
> + tbi-phy@11 {
> + device-type =3D "tbi-phy";
> + reg =3D <0x11>;
> + };
> };
>=20
> ethernet@b0000 {
> --=20
> 1.7.3.4
>=20
^ permalink raw reply
* [PATCH] Revert "net: fsl_pq_mdio: fix non tbi phy access"
From: Andy Fleming @ 2011-12-02 7:05 UTC (permalink / raw)
To: David Miller, Kumar Gala; +Cc: netdev, linuxppc-dev
This reverts commit c3e072f8a6c5625028531c40ec65f7e301531be2.
The TBI PHY Address must always be set to something sensible.
If not, the value currently in the register may interfere
with MDIO transactions to that address. The architected
solution is to have a TBI node in the device tree, which corresponds
to the desired address (and which should be chosen so that it does
not conflict with other PHYs on the bus). If that node is not there,
it is incorrect to just continue. We must return an error, so that
developers have a chance to realize they've mis-configured their
device trees. A separate patch has been submitted to add such
a node to the device trees for boards which were missing that node.
Signed-off-by: Andy Fleming <afleming@freescale.com>
---
drivers/net/ethernet/freescale/fsl_pq_mdio.c | 12 ++++++------
1 files changed, 6 insertions(+), 6 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fsl_pq_mdio.c b/drivers/net/ethernet/freescale/fsl_pq_mdio.c
index f109602..6ff124c 100644
--- a/drivers/net/ethernet/freescale/fsl_pq_mdio.c
+++ b/drivers/net/ethernet/freescale/fsl_pq_mdio.c
@@ -356,16 +356,16 @@ static int fsl_pq_mdio_probe(struct platform_device *ofdev)
if (prop)
tbiaddr = *prop;
+ }
- if (tbiaddr == -1) {
- err = -EBUSY;
+ if (tbiaddr == -1) {
+ err = -EBUSY;
- goto err_free_irqs;
- } else {
- out_be32(tbipa, tbiaddr);
- }
+ goto err_free_irqs;
}
+ out_be32(tbipa, tbiaddr);
+
err = of_mdiobus_register(new_bus, np);
if (err) {
printk (KERN_ERR "%s: Cannot register as MDIO bus\n",
--
1.7.3.4
^ permalink raw reply related
* [PATCH] pq3: Add default tbi address
From: Andy Fleming @ 2011-12-02 7:05 UTC (permalink / raw)
To: David Miller, Kumar Gala; +Cc: netdev, linuxppc-dev
In-Reply-To: <1322809549-32622-1-git-send-email-afleming@freescale.com>
The MDIO driver has been changed so that it no longer supports
scanning the MDIO bus for a free address for the TBI PHY. This
feature was fragile, and required scanning the bus before the bus
was fully up and registered. The intended way for FSL devices to
specify the TBI PHY's address is via a tbi node in the device tree.
All of the device trees had such a node, except for the recent p1/p2
trees. Rather than hand-fixing all of those boards, set a default
value (most boards were using 0x11, anyway), and any board which
wants to change it from that default can then override it in its
board dts file.
This fixes an issue where p1/p2 boards would fail to bring up
Ethernet, due to not finding a tbi node.
Signed-off-by: Andy Fleming <afleming@freescale.com>
---
arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi | 5 +++++
arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi | 5 +++++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi b/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
index a1979ae..0a42e21 100644
--- a/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
+++ b/arch/powerpc/boot/dts/fsl/pq3-etsec1-0.dtsi
@@ -50,4 +50,9 @@ mdio@24520 {
#size-cells = <0>;
compatible = "fsl,gianfar-mdio";
reg = <0x24520 0x20>;
+
+ tbi-phy@11 {
+ device-type = "tbi-phy";
+ reg = <0x11>;
+ };
};
diff --git a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
index 1382fec..964670a 100644
--- a/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
+++ b/arch/powerpc/boot/dts/fsl/pq3-etsec2-0.dtsi
@@ -38,6 +38,11 @@ mdio@24000 {
#size-cells = <0>;
compatible = "fsl,etsec2-mdio";
reg = <0x24000 0x1000 0xb0030 0x4>;
+
+ tbi-phy@11 {
+ device-type = "tbi-phy";
+ reg = <0x11>;
+ };
};
ethernet@b0000 {
--
1.7.3.4
^ permalink raw reply related
* RE: [linuxppc-release] [powerpc] boot up problem
From: Jia Hongtao-B38951 @ 2011-12-02 6:45 UTC (permalink / raw)
To: Kumar Gala; +Cc: LinuxPPC-dev list, Li Yang-R58472
In-Reply-To: <D762CECC-33EC-4D5D-8AD6-7E5150D15117@kernel.crashing.org>
Yes, both v3.2-rc3 and v3.2-rc4 in Linus's tree have the same issue.
- Hongtao.
-----Original Message-----
From: Kumar Gala [mailto:galak@kernel.crashing.org]=20
Sent: Friday, December 02, 2011 12:12 PM
To: Jia Hongtao-B38951
Cc: LinuxPPC-dev list; Li Yang-R58472
Subject: Re: [linuxppc-release] [powerpc] boot up problem
On Dec 1, 2011, at 8:21 PM, Jia Hongtao-B38951 wrote:
> Hi
>=20
> I just found that the 'next' branch you mentioned have problem to boot up=
.
> I test it in p1022ds and p1010rdb boards and the result are both the same=
.
> Note that for p1022ds I use "make p1022ds.dtb" to make the dtb file(36bit=
) with 36bit-uboot.
> And for p1010rdb I use all 32bit image.
> The problem list below:
Can you try Linus's tree and v3.2-rc4
http://git.kernel.org/?p=3Dlinux/kernel/git/torvalds/linux.git;a=3Dsummary
and see if you have same issue.
> scsi0 : sata_fsl
> ata1: SATA max UDMA/133 irq 74
> fsl-sata fffe19000.sata: Sata FSL Platform/CSB Driver init
> scsi1 : sata_fsl
> ata2: SATA max UDMA/133 irq 41
> Fixed MDIO Bus: probed
> Unable to handle kernel paging request for data at address 0x00000000=20
> Faulting instruction address: 0xc0451630
> Oops: Kernel access of bad area, sig: 11 [#1] SMP NR_CPUS=3D2 P1022 DS=20
> Modules linked in:
> NIP: c0451630 LR: c0451618 CTR: 00000007
> REGS: ef03fce0 TRAP: 0300 Not tainted (3.2.0-rc3-00099-g883381d)
> MSR: 00029000 <EE,ME,CE> CR: 24042022 XER: 00000000
> DEAR: 00000000, ESR: 00800000
> TASK =3D ef040000[1] 'swapper' THREAD: ef03e000 CPU: 0
> GPR00: ef03fd98 ef03fd90 ef040000 ef1ab22c 00000000 00000002 ffeb0000=20
> 0000fffe
> GPR08: b0541215 00000000 00000000 00000000 24042028 23c406c2 00000000=20
> 00000000
> GPR16: c0000a00 00000014 3fffffff 03ff9000 00000015 7ff3a760 f1044030=20
> fffffff4
> GPR24: c053e128 ef1ab230 c056a3a8 ef03e000 ef040000 ef1ab22c 00000000=20
> ef1ab228 NIP [c0451630] __mutex_lock_slowpath+0xb4/0x190 LR [c0451618]=20
> __mutex_lock_slowpath+0x9c/0x190 Call Trace:
> [ef03fdd0] [c0451758] mutex_lock+0x4c/0x50 [ef03fde0] [c02b5124]=20
> mdiobus_read+0x38/0x74 [ef03fe00] [c02b41f4] get_phy_id+0x24/0x80=20
> [ef03fe20] [c02b9de4] fsl_pq_mdio_probe+0x3b4/0x580 [ef03feb0]=20
> [c0266120] platform_drv_probe+0x20/0x30 [ef03fec0] [c0264bbc]=20
> driver_probe_device+0xa4/0x1d4 [ef03fee0] [c0264da8]=20
> __driver_attach+0xbc/0xc0 [ef03ff00] [c0263ac0]=20
> bus_for_each_dev+0x60/0x9c [ef03ff30] [c02647f4]=20
> driver_attach+0x24/0x34 [ef03ff40] [c0264444]=20
> bus_add_driver+0x1ac/0x274 [ef03ff70] [c02651b0]=20
> driver_register+0x88/0x154 [ef03ff90] [c0266450]=20
> platform_driver_register+0x68/0x78
> [ef03ffa0] [c05d93b8] fsl_pq_mdio_init+0x18/0x28 [ef03ffb0] [c0001eb8]=20
> do_one_initcall+0x34/0x1a8 [ef03ffe0] [c05bb82c]=20
> kernel_init+0xa0/0x13c [ef03fff0] [c000d878] kernel_thread+0x4c/0x68=20
> Instruction dump:
> 801c0020 2f800063 419dffe8 3bbf0004 7fa3eb78 48001aad 813f000c=20
> 38010008
> 3b3f0008 901f000c 93210008 9121000c
> 3800ffff 93810010 7c0004ac
> ---[ end trace 1643a9a9c5097f8f ]---
> Kernel panic - not syncing: Attempted to kill init!
> Call Trace:
> [ef03fbc0] [c0008044] show_stack+0x44/0x154 (unreliable) [ef03fc00]=20
> [c04532c8] panic+0xa4/0x1d8 [ef03fc50] [c0049a00] do_exit+0x5dc/0x684=20
> [ef03fca0] [c000a6f0] die+0xdc/0x1b4 [ef03fcc0] [c00128d0]=20
> bad_page_fault+0xb4/0xfc [ef03fcd0] [c000ebe4]=20
> handle_page_fault+0x7c/0x80
> --- Exception: 300 at __mutex_lock_slowpath+0xb4/0x190
> LR =3D __mutex_lock_slowpath+0x9c/0x190
> [ef03fd90] [00000000] (null) (unreliable)
> [ef03fdd0] [c0451758] mutex_lock+0x4c/0x50 [ef03fde0] [c02b5124]=20
> mdiobus_read+0x38/0x74 [ef03fe00] [c02b41f4] get_phy_id+0x24/0x80=20
> [ef03fe20] [c02b9de4] fsl_pq_mdio_probe+0x3b4/0x580 [ef03feb0]=20
> [c0266120] platform_drv_probe+0x20/0x30 [ef03fec0] [c0264bbc]=20
> driver_probe_device+0xa4/0x1d4 [ef03fee0] [c0264da8]=20
> __driver_attach+0xbc/0xc0 [ef03ff00] [c0263ac0]=20
> bus_for_each_dev+0x60/0x9c [ef03ff30] [c02647f4]=20
> driver_attach+0x24/0x34 [ef03ff40] [c0264444]=20
> bus_add_driver+0x1ac/0x274 [ef03ff70] [c02651b0]=20
> driver_register+0x88/0x154 [ef03ff90] [c0266450]=20
> platform_driver_register+0x68/0x78
> [ef03ffa0] [c05d93b8] fsl_pq_mdio_init+0x18/0x28 [ef03ffb0] [c0001eb8]=20
> do_one_initcall+0x34/0x1a8 [ef03ffe0] [c05bb82c]=20
> kernel_init+0xa0/0x13c [ef03fff0] [c000d878] kernel_thread+0x4c/0x68=20
> Rebooting in 180 seconds..
>=20
> Do you or anyone else have any idea about this?
> Thanks.
^ permalink raw reply
* Re: [PATCH] powerpc: Add support for OpenBlockS 600
From: Olof Johansson @ 2011-12-02 6:40 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev
In-Reply-To: <1322804108.3729.50.camel@pasglop>
Hi,
On Thu, Dec 1, 2011 at 9:35 PM, Benjamin Herrenschmidt
<benh@kernel.crashing.org> wrote:
> =A0arch/powerpc/boot/dts/obs600.dts =A0 =A0 =A0 =A0 =A0 | =A0314 ++++++++=
++++++++++++++++++++
It'd be nice to have dtsi files for the SoCs, there's a lot of boiler
plate in there. That shouldn't hold up this specific patch though.
> =A0arch/powerpc/boot/wrapper =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0 =A0| =A0 22 =
++-
> =A0arch/powerpc/configs/40x/obs600_defconfig =A0| =A0 83 ++++++++
A new single-board defconfig? On arm that is a strong NACK, I'd say
it's a bad idea on powerpc as well.
-Olof
^ permalink raw reply
* [PATCH] powerpc: Add support for OpenBlockS 600
From: Benjamin Herrenschmidt @ 2011-12-02 5:35 UTC (permalink / raw)
To: linuxppc-dev
So I've had one of these for a while and it looks like the vendor never
bothered submitting the support upstream.
This adds it using ppc40x_simple and provides a device-tree.
There are some changes to the boot wrapper because the way u-boot works
on this thing, it seems to expect a multipart image with the kernel,
initrd and dtb in it.
The USB support is missing as it needs the yet unmerged driver for
the DWC OTG part and the GPIOs may need further definition in the dts.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
---
arch/powerpc/Makefile | 2 +-
arch/powerpc/boot/Makefile | 7 +
arch/powerpc/boot/dts/obs600.dts | 314 ++++++++++++++++++++++++++++
arch/powerpc/boot/wrapper | 22 ++-
arch/powerpc/configs/40x/obs600_defconfig | 83 ++++++++
arch/powerpc/platforms/40x/Kconfig | 10 +
arch/powerpc/platforms/40x/ppc40x_simple.c | 3 +-
7 files changed, 438 insertions(+), 3 deletions(-)
create mode 100644 arch/powerpc/boot/dts/obs600.dts
create mode 100644 arch/powerpc/configs/40x/obs600_defconfig
diff --git a/arch/powerpc/Makefile b/arch/powerpc/Makefile
index 59f462b..ffe4d88 100644
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
@@ -165,7 +165,7 @@ all: zImage
# With make 3.82 we cannot mix normal and wildcard targets
BOOT_TARGETS1 := zImage zImage.initrd uImage
-BOOT_TARGETS2 := zImage% dtbImage% treeImage.% cuImage.% simpleImage.%
+BOOT_TARGETS2 := zImage% dtbImage% treeImage.% cuImage.% simpleImage.% uImage.%
PHONY += $(BOOT_TARGETS1) $(BOOT_TARGETS2)
diff --git a/arch/powerpc/boot/Makefile b/arch/powerpc/boot/Makefile
index 72ee8c1..80c133c 100644
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -199,6 +199,7 @@ image-$(CONFIG_EP405) += dtbImage.ep405
image-$(CONFIG_HOTFOOT) += cuImage.hotfoot
image-$(CONFIG_WALNUT) += treeImage.walnut
image-$(CONFIG_ACADIA) += cuImage.acadia
+image-$(CONFIG_OBS600) += uImage.obs600
# Board ports in arch/powerpc/platform/44x/Kconfig
image-$(CONFIG_EBONY) += treeImage.ebony cuImage.ebony
@@ -316,6 +317,12 @@ $(obj)/zImage.iseries: vmlinux
$(obj)/uImage: vmlinux $(wrapperbits)
$(call if_changed,wrap,uboot)
+$(obj)/uImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
+ $(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
+
+$(obj)/uImage.%: vmlinux $(obj)/%.dtb $(wrapperbits)
+ $(call if_changed,wrap,uboot-$*,,$(obj)/$*.dtb)
+
$(obj)/cuImage.initrd.%: vmlinux $(obj)/%.dtb $(wrapperbits)
$(call if_changed,wrap,cuboot-$*,,$(obj)/$*.dtb,$(obj)/ramdisk.image.gz)
diff --git a/arch/powerpc/boot/dts/obs600.dts b/arch/powerpc/boot/dts/obs600.dts
new file mode 100644
index 0000000..daad350
--- /dev/null
+++ b/arch/powerpc/boot/dts/obs600.dts
@@ -0,0 +1,314 @@
+/*
+ * Device Tree Source for PlatHome OpenBlockS 600 (405EX)
+ *
+ * Copyright 2011 Ben Herrenschmidt, IBM Corp.
+ *
+ * Based on Kilauea by:
+ *
+ * Copyright 2007-2009 DENX Software Engineering, Stefan Roese <sr@denx.de>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without
+ * any warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+/ {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ model = "PlatHome,OpenBlockS 600";
+ compatible = "plathome,obs600";
+ dcr-parent = <&{/cpus/cpu@0}>;
+
+ aliases {
+ ethernet0 = &EMAC0;
+ ethernet1 = &EMAC1;
+ serial0 = &UART0;
+ serial1 = &UART1;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu@0 {
+ device_type = "cpu";
+ model = "PowerPC,405EX";
+ reg = <0x00000000>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ timebase-frequency = <0>; /* Filled in by U-Boot */
+ i-cache-line-size = <32>;
+ d-cache-line-size = <32>;
+ i-cache-size = <16384>; /* 16 kB */
+ d-cache-size = <16384>; /* 16 kB */
+ dcr-controller;
+ dcr-access-method = "native";
+ };
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0x00000000 0x00000000>; /* Filled in by U-Boot */
+ };
+
+ UIC0: interrupt-controller {
+ compatible = "ibm,uic-405ex", "ibm,uic";
+ interrupt-controller;
+ cell-index = <0>;
+ dcr-reg = <0x0c0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ };
+
+ UIC1: interrupt-controller1 {
+ compatible = "ibm,uic-405ex","ibm,uic";
+ interrupt-controller;
+ cell-index = <1>;
+ dcr-reg = <0x0d0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
+ interrupt-parent = <&UIC0>;
+ };
+
+ UIC2: interrupt-controller2 {
+ compatible = "ibm,uic-405ex","ibm,uic";
+ interrupt-controller;
+ cell-index = <2>;
+ dcr-reg = <0x0e0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupts = <0x1c 0x4 0x1d 0x4>; /* cascade */
+ interrupt-parent = <&UIC0>;
+ };
+
+ CPM0: cpm {
+ compatible = "ibm,cpm";
+ dcr-access-method = "native";
+ dcr-reg = <0x0b0 0x003>;
+ unused-units = <0x00000000>;
+ idle-doze = <0x02000000>;
+ standby = <0xe3e74800>;
+ };
+
+ plb {
+ compatible = "ibm,plb-405ex", "ibm,plb4";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+
+ SDRAM0: memory-controller {
+ compatible = "ibm,sdram-405ex", "ibm,sdram-4xx-ddr2";
+ dcr-reg = <0x010 0x002>;
+ interrupt-parent = <&UIC2>;
+ interrupts = <0x5 0x4 /* ECC DED Error */
+ 0x6 0x4>; /* ECC SEC Error */
+ };
+
+ CRYPTO: crypto@ef700000 {
+ compatible = "amcc,ppc405ex-crypto", "amcc,ppc4xx-crypto";
+ reg = <0xef700000 0x80400>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x17 0x2>;
+ };
+
+ MAL0: mcmal {
+ compatible = "ibm,mcmal-405ex", "ibm,mcmal2";
+ dcr-reg = <0x180 0x062>;
+ num-tx-chans = <2>;
+ num-rx-chans = <2>;
+ interrupt-parent = <&MAL0>;
+ interrupts = <0x0 0x1 0x2 0x3 0x4>;
+ #interrupt-cells = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
+ /*RXEOB*/ 0x1 &UIC0 0xb 0x4
+ /*SERR*/ 0x2 &UIC1 0x0 0x4
+ /*TXDE*/ 0x3 &UIC1 0x1 0x4
+ /*RXDE*/ 0x4 &UIC1 0x2 0x4>;
+ interrupt-map-mask = <0xffffffff>;
+ };
+
+ POB0: opb {
+ compatible = "ibm,opb-405ex", "ibm,opb";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0x80000000 0x80000000 0x10000000
+ 0xef600000 0xef600000 0x00a00000
+ 0xf0000000 0xf0000000 0x10000000>;
+ dcr-reg = <0x0a0 0x005>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+
+ EBC0: ebc {
+ compatible = "ibm,ebc-405ex", "ibm,ebc";
+ dcr-reg = <0x012 0x002>;
+ #address-cells = <2>;
+ #size-cells = <1>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ /* ranges property is supplied by U-Boot */
+ interrupts = <0x5 0x1>;
+ interrupt-parent = <&UIC1>;
+
+ nor_flash@0,0 {
+ compatible = "amd,s29gl512n", "cfi-flash";
+ bank-width = <2>;
+ reg = <0x00000000 0x00000000 0x08000000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ partition@0 {
+ label = "kernel + initrd";
+ reg = <0x00000000 0x03de0000>;
+ };
+ partition@3de0000 {
+ label = "user config area";
+ reg = <0x03de0000 0x00080000>;
+ };
+ partition@3e60000 {
+ label = "user program area";
+ reg = <0x03e60000 0x04000000>;
+ };
+ partition@7e60000 {
+ label = "flat device tree";
+ reg = <0x07e60000 0x00080000>;
+ };
+ partition@7ee0000 {
+ label = "test program";
+ reg = <0x07ee0000 0x00080000>;
+ };
+ partition@7f60000 {
+ label = "u-boot env";
+ reg = <0x07f60000 0x00040000>;
+ };
+ partition@7fa0000 {
+ label = "u-boot";
+ reg = <0x07fa0000 0x00060000>;
+ };
+ };
+ };
+
+ UART0: serial@ef600200 {
+ device_type = "serial";
+ compatible = "ns16550";
+ reg = <0xef600200 0x00000008>;
+ virtual-reg = <0xef600200>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ current-speed = <0>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x1a 0x4>;
+ };
+
+ UART1: serial@ef600300 {
+ device_type = "serial";
+ compatible = "ns16550";
+ reg = <0xef600300 0x00000008>;
+ virtual-reg = <0xef600300>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ current-speed = <0>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x1 0x4>;
+ };
+
+ IIC0: i2c@ef600400 {
+ compatible = "ibm,iic-405ex", "ibm,iic";
+ reg = <0xef600400 0x00000014>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x2 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ rtc@68 {
+ compatible = "dallas,ds1340";
+ reg = <0x68>;
+ };
+ };
+
+ IIC1: i2c@ef600500 {
+ compatible = "ibm,iic-405ex", "ibm,iic";
+ reg = <0xef600500 0x00000014>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x7 0x4>;
+ };
+
+ RGMII0: emac-rgmii@ef600b00 {
+ compatible = "ibm,rgmii-405ex", "ibm,rgmii";
+ reg = <0xef600b00 0x00000104>;
+ has-mdio;
+ };
+
+ EMAC0: ethernet@ef600900 {
+ linux,network-index = <0x0>;
+ device_type = "network";
+ compatible = "ibm,emac-405ex", "ibm,emac4sync";
+ interrupt-parent = <&EMAC0>;
+ interrupts = <0x0 0x1>;
+ #interrupt-cells = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ interrupt-map = </*Status*/ 0x0 &UIC0 0x18 0x4
+ /*Wake*/ 0x1 &UIC1 0x1d 0x4>;
+ reg = <0xef600900 0x000000c4>;
+ local-mac-address = [000000000000]; /* Filled in by U-Boot */
+ mal-device = <&MAL0>;
+ mal-tx-channel = <0>;
+ mal-rx-channel = <0>;
+ cell-index = <0>;
+ max-frame-size = <9000>;
+ rx-fifo-size = <4096>;
+ tx-fifo-size = <2048>;
+ rx-fifo-size-gige = <16384>;
+ tx-fifo-size-gige = <16384>;
+ phy-mode = "rgmii";
+ phy-map = <0x00000000>;
+ rgmii-device = <&RGMII0>;
+ rgmii-channel = <0>;
+ has-inverted-stacr-oc;
+ has-new-stacr-staopc;
+ };
+
+ EMAC1: ethernet@ef600a00 {
+ linux,network-index = <0x1>;
+ device_type = "network";
+ compatible = "ibm,emac-405ex", "ibm,emac4sync";
+ interrupt-parent = <&EMAC1>;
+ interrupts = <0x0 0x1>;
+ #interrupt-cells = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ interrupt-map = </*Status*/ 0x0 &UIC0 0x19 0x4
+ /*Wake*/ 0x1 &UIC1 0x1f 0x4>;
+ reg = <0xef600a00 0x000000c4>;
+ local-mac-address = [000000000000]; /* Filled in by U-Boot */
+ mal-device = <&MAL0>;
+ mal-tx-channel = <1>;
+ mal-rx-channel = <1>;
+ cell-index = <1>;
+ max-frame-size = <9000>;
+ rx-fifo-size = <4096>;
+ tx-fifo-size = <2048>;
+ rx-fifo-size-gige = <16384>;
+ tx-fifo-size-gige = <16384>;
+ phy-mode = "rgmii";
+ phy-map = <0x00000000>;
+ rgmii-device = <&RGMII0>;
+ rgmii-channel = <1>;
+ has-inverted-stacr-oc;
+ has-new-stacr-staopc;
+ };
+
+ GPIO: gpio@ef600800 {
+ device_type = "gpio";
+ compatible = "ibm,gpio-405ex", "ibm,ppc4xx-gpio";
+ reg = <0xef600800 0x50>;
+ };
+ };
+ };
+ chosen {
+ linux,stdout-path = "/plb/opb/serial@ef600200";
+ };
+};
diff --git a/arch/powerpc/boot/wrapper b/arch/powerpc/boot/wrapper
index c74531a..14cd4bc 100755
--- a/arch/powerpc/boot/wrapper
+++ b/arch/powerpc/boot/wrapper
@@ -163,7 +163,7 @@ coff)
link_address='0x500000'
pie=
;;
-miboot|uboot)
+miboot|uboot*)
# miboot and U-boot want just the bare bits, not an ELF binary
ext=bin
objflags="-O binary"
@@ -291,6 +291,26 @@ uboot)
fi
exit 0
;;
+uboot-obs600)
+ rm -f "$ofile"
+ # obs600 wants a multi image with an initrd, so we need to put a fake
+ # one in even when building a "normal" image.
+ if [ -n "$initrd" ]; then
+ real_rd="$initrd"
+ else
+ real_rd=`mktemp`
+ echo "\0" >>"$real_rd"
+ fi
+ ${MKIMAGE} -A ppc -O linux -T multi -C gzip -a $membase -e $membase \
+ $uboot_version -d "$vmz":"$real_rd":"$dtb" "$ofile"
+ if [ -z "$initrd" ]; then
+ rm -f "$real_rd"
+ fi
+ if [ -z "$cacheit" ]; then
+ rm -f "$vmz"
+ fi
+ exit 0
+ ;;
esac
addsec() {
diff --git a/arch/powerpc/configs/40x/obs600_defconfig b/arch/powerpc/configs/40x/obs600_defconfig
new file mode 100644
index 0000000..91c110d
--- /dev/null
+++ b/arch/powerpc/configs/40x/obs600_defconfig
@@ -0,0 +1,83 @@
+CONFIG_40x=y
+CONFIG_EXPERIMENTAL=y
+CONFIG_SYSVIPC=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_EXPERT=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_WALNUT is not set
+CONFIG_OBS600=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_MATH_EMULATION=y
+CONFIG_NET=y
+CONFIG_PACKET=y
+CONFIG_UNIX=y
+CONFIG_INET=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
+# CONFIG_INET_XFRM_MODE_TUNNEL is not set
+# CONFIG_INET_XFRM_MODE_BEET is not set
+# CONFIG_INET_LRO is not set
+# CONFIG_IPV6 is not set
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_CONNECTOR=y
+CONFIG_MTD=y
+CONFIG_MTD_CMDLINE_PARTS=y
+CONFIG_MTD_OF_PARTS=y
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLOCK=y
+CONFIG_MTD_CFI=y
+CONFIG_MTD_JEDECPROBE=y
+CONFIG_MTD_CFI_AMDSTD=y
+CONFIG_MTD_PHYSMAP_OF=y
+CONFIG_MTD_NAND=y
+CONFIG_MTD_NAND_NDFC=y
+CONFIG_PROC_DEVICETREE=y
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_SIZE=35000
+CONFIG_NETDEVICES=y
+CONFIG_IBM_EMAC=y
+CONFIG_IBM_EMAC_RXB=256
+CONFIG_IBM_EMAC_TXB=256
+# CONFIG_INPUT is not set
+# CONFIG_SERIO is not set
+# CONFIG_VT is not set
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_OF_PLATFORM=y
+# CONFIG_HW_RANDOM is not set
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_IBM_IIC=y
+CONFIG_SENSORS_LM75=y
+CONFIG_THERMAL=y
+# CONFIG_USB_SUPPORT is not set
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_DRV_DS1307=y
+CONFIG_EXT2_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_TMPFS=y
+CONFIG_CRAMFS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+CONFIG_ROOT_NFS=y
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_FS=y
+CONFIG_DETECT_HUNG_TASK=y
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_PCBC=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig
index 1530229..bac24a0 100644
--- a/arch/powerpc/platforms/40x/Kconfig
+++ b/arch/powerpc/platforms/40x/Kconfig
@@ -100,6 +100,16 @@ config XILINX_VIRTEX_GENERIC_BOARD
Most Virtex designs should use this unless it needs to do some
special configuration at board probe time.
+config OBS600
+ bool "OpenBlockS 600"
+ depends on 40x
+ default n
+ select 405EX
+ select PPC40x_SIMPLE
+ help
+ This option enables support for PlatHome OpenBlockS 600 server
+
+
config PPC40x_SIMPLE
bool "Simple PowerPC 40x board support"
depends on 40x
diff --git a/arch/powerpc/platforms/40x/ppc40x_simple.c b/arch/powerpc/platforms/40x/ppc40x_simple.c
index e8dd5c5..ecac237 100644
--- a/arch/powerpc/platforms/40x/ppc40x_simple.c
+++ b/arch/powerpc/platforms/40x/ppc40x_simple.c
@@ -55,7 +55,8 @@ static const char *board[] __initdata = {
"amcc,haleakala",
"amcc,kilauea",
"amcc,makalu",
- "est,hotfoot"
+ "est,hotfoot",
+ "plathome,obs600"
};
static int __init ppc40x_probe(void)
^ permalink raw reply related
* Re: [linuxppc-release] [powerpc] boot up problem
From: Kumar Gala @ 2011-12-02 4:12 UTC (permalink / raw)
To: Andy Fleming
Cc: LinuxPPC-dev list, Fleming Andy-AFLEMING, Tabi Timur-B04825,
Li Yang-R58472, Jia Hongtao-B38951
In-Reply-To: <4ED84C32.3010807@freescale.com>
On Dec 1, 2011, at 9:55 PM, Tabi Timur-B04825 wrote:
> Jia Hongtao-B38951 wrote:
>> Hi
>>=20
>> I just found that the 'next' branch you mentioned have problem to =
boot up.
>> I test it in p1022ds and p1010rdb boards and the result are both the =
same.
>> Note that for p1022ds I use "make p1022ds.dtb" to make the dtb =
file(36bit) with 36bit-uboot.
>> And for p1010rdb I use all 32bit image.
>> The problem list below:
>>=20
>> scsi0 : sata_fsl
>> ata1: SATA max UDMA/133 irq 74
>> fsl-sata fffe19000.sata: Sata FSL Platform/CSB Driver init
>> scsi1 : sata_fsl
>> ata2: SATA max UDMA/133 irq 41
>> Fixed MDIO Bus: probed
>> Unable to handle kernel paging request for data at address 0x00000000
>> Faulting instruction address: 0xc0451630
>> Oops: Kernel access of bad area, sig: 11 [#1]
>=20
> Andy has phy driver patch that fixes this.
Andy,
What's going on here? Is there a fix in v3.2-rc4?
- k=
^ permalink raw reply
* Re: [linuxppc-release] [powerpc] boot up problem
From: Kumar Gala @ 2011-12-02 4:12 UTC (permalink / raw)
To: Jia Hongtao-B38951; +Cc: LinuxPPC-dev list, Li Yang-R58472
In-Reply-To: <412C8208B4A0464FA894C5F0C278CD5DFDC478@039-SN1MPN1-005.039d.mgd.msft.net>
On Dec 1, 2011, at 8:21 PM, Jia Hongtao-B38951 wrote:
> Hi
>=20
> I just found that the 'next' branch you mentioned have problem to boot =
up.
> I test it in p1022ds and p1010rdb boards and the result are both the =
same.
> Note that for p1022ds I use "make p1022ds.dtb" to make the dtb =
file(36bit) with 36bit-uboot.
> And for p1010rdb I use all 32bit image.
> The problem list below:
Can you try Linus's tree and v3.2-rc4
http://git.kernel.org/?p=3Dlinux/kernel/git/torvalds/linux.git;a=3Dsummary=
and see if you have same issue.
> scsi0 : sata_fsl
> ata1: SATA max UDMA/133 irq 74
> fsl-sata fffe19000.sata: Sata FSL Platform/CSB Driver init
> scsi1 : sata_fsl
> ata2: SATA max UDMA/133 irq 41
> Fixed MDIO Bus: probed
> Unable to handle kernel paging request for data at address 0x00000000
> Faulting instruction address: 0xc0451630
> Oops: Kernel access of bad area, sig: 11 [#1]
> SMP NR_CPUS=3D2 P1022 DS
> Modules linked in:
> NIP: c0451630 LR: c0451618 CTR: 00000007
> REGS: ef03fce0 TRAP: 0300 Not tainted (3.2.0-rc3-00099-g883381d)
> MSR: 00029000 <EE,ME,CE> CR: 24042022 XER: 00000000
> DEAR: 00000000, ESR: 00800000
> TASK =3D ef040000[1] 'swapper' THREAD: ef03e000 CPU: 0
> GPR00: ef03fd98 ef03fd90 ef040000 ef1ab22c 00000000 00000002 ffeb0000 =
0000fffe
> GPR08: b0541215 00000000 00000000 00000000 24042028 23c406c2 00000000 =
00000000
> GPR16: c0000a00 00000014 3fffffff 03ff9000 00000015 7ff3a760 f1044030 =
fffffff4
> GPR24: c053e128 ef1ab230 c056a3a8 ef03e000 ef040000 ef1ab22c 00000000 =
ef1ab228
> NIP [c0451630] __mutex_lock_slowpath+0xb4/0x190
> LR [c0451618] __mutex_lock_slowpath+0x9c/0x190
> Call Trace:
> [ef03fdd0] [c0451758] mutex_lock+0x4c/0x50
> [ef03fde0] [c02b5124] mdiobus_read+0x38/0x74
> [ef03fe00] [c02b41f4] get_phy_id+0x24/0x80
> [ef03fe20] [c02b9de4] fsl_pq_mdio_probe+0x3b4/0x580
> [ef03feb0] [c0266120] platform_drv_probe+0x20/0x30
> [ef03fec0] [c0264bbc] driver_probe_device+0xa4/0x1d4
> [ef03fee0] [c0264da8] __driver_attach+0xbc/0xc0
> [ef03ff00] [c0263ac0] bus_for_each_dev+0x60/0x9c
> [ef03ff30] [c02647f4] driver_attach+0x24/0x34
> [ef03ff40] [c0264444] bus_add_driver+0x1ac/0x274
> [ef03ff70] [c02651b0] driver_register+0x88/0x154
> [ef03ff90] [c0266450] platform_driver_register+0x68/0x78
> [ef03ffa0] [c05d93b8] fsl_pq_mdio_init+0x18/0x28
> [ef03ffb0] [c0001eb8] do_one_initcall+0x34/0x1a8
> [ef03ffe0] [c05bb82c] kernel_init+0xa0/0x13c
> [ef03fff0] [c000d878] kernel_thread+0x4c/0x68
> Instruction dump:
> 801c0020 2f800063 419dffe8 3bbf0004 7fa3eb78 48001aad 813f000c =
38010008
> 3b3f0008 901f000c 93210008 9121000c
> 3800ffff 93810010 7c0004ac
> ---[ end trace 1643a9a9c5097f8f ]---
> Kernel panic - not syncing: Attempted to kill init!
> Call Trace:
> [ef03fbc0] [c0008044] show_stack+0x44/0x154 (unreliable)
> [ef03fc00] [c04532c8] panic+0xa4/0x1d8
> [ef03fc50] [c0049a00] do_exit+0x5dc/0x684
> [ef03fca0] [c000a6f0] die+0xdc/0x1b4
> [ef03fcc0] [c00128d0] bad_page_fault+0xb4/0xfc
> [ef03fcd0] [c000ebe4] handle_page_fault+0x7c/0x80
> --- Exception: 300 at __mutex_lock_slowpath+0xb4/0x190
> LR =3D __mutex_lock_slowpath+0x9c/0x190
> [ef03fd90] [00000000] (null) (unreliable)
> [ef03fdd0] [c0451758] mutex_lock+0x4c/0x50
> [ef03fde0] [c02b5124] mdiobus_read+0x38/0x74
> [ef03fe00] [c02b41f4] get_phy_id+0x24/0x80
> [ef03fe20] [c02b9de4] fsl_pq_mdio_probe+0x3b4/0x580
> [ef03feb0] [c0266120] platform_drv_probe+0x20/0x30
> [ef03fec0] [c0264bbc] driver_probe_device+0xa4/0x1d4
> [ef03fee0] [c0264da8] __driver_attach+0xbc/0xc0
> [ef03ff00] [c0263ac0] bus_for_each_dev+0x60/0x9c
> [ef03ff30] [c02647f4] driver_attach+0x24/0x34
> [ef03ff40] [c0264444] bus_add_driver+0x1ac/0x274
> [ef03ff70] [c02651b0] driver_register+0x88/0x154
> [ef03ff90] [c0266450] platform_driver_register+0x68/0x78
> [ef03ffa0] [c05d93b8] fsl_pq_mdio_init+0x18/0x28
> [ef03ffb0] [c0001eb8] do_one_initcall+0x34/0x1a8
> [ef03ffe0] [c05bb82c] kernel_init+0xa0/0x13c
> [ef03fff0] [c000d878] kernel_thread+0x4c/0x68
> Rebooting in 180 seconds..
>=20
> Do you or anyone else have any idea about this?
> Thanks.
^ permalink raw reply
* Re: [linuxppc-release] [powerpc] boot up problem
From: Tabi Timur-B04825 @ 2011-12-02 3:55 UTC (permalink / raw)
To: Jia Hongtao-B38951
Cc: Fleming Andy-AFLEMING, linuxppc-dev@lists.ozlabs.org,
Li Yang-R58472
In-Reply-To: <412C8208B4A0464FA894C5F0C278CD5DFDC478@039-SN1MPN1-005.039d.mgd.msft.net>
Jia Hongtao-B38951 wrote:
> Hi
>
> I just found that the 'next' branch you mentioned have problem to boot up=
.
> I test it in p1022ds and p1010rdb boards and the result are both the same=
.
> Note that for p1022ds I use "make p1022ds.dtb" to make the dtb file(36bit=
) with 36bit-uboot.
> And for p1010rdb I use all 32bit image.
> The problem list below:
>
> scsi0 : sata_fsl
> ata1: SATA max UDMA/133 irq 74
> fsl-sata fffe19000.sata: Sata FSL Platform/CSB Driver init
> scsi1 : sata_fsl
> ata2: SATA max UDMA/133 irq 41
> Fixed MDIO Bus: probed
> Unable to handle kernel paging request for data at address 0x00000000
> Faulting instruction address: 0xc0451630
> Oops: Kernel access of bad area, sig: 11 [#1]
Andy has phy driver patch that fixes this.
--=20
Timur Tabi
Linux kernel developer at Freescale=
^ permalink raw reply
* RE: [PATCH][RFC] fsldma: fix performance degradation by optimizing spinlock use.
From: Shi Xuelin-B29237 @ 2011-12-02 3:47 UTC (permalink / raw)
To: Ira W. Snyder
Cc: vinod.koul@intel.com, dan.j.williams@intel.com,
linuxppc-dev@lists.ozlabs.org, linux-kernel@vger.kernel.org,
Li Yang-R58472
In-Reply-To: <20111130170737.GA25892@ovro.caltech.edu>
SGkgSXJpcywNCg0KPkknbSBjb252aW5jZWQgdGhhdCAic21wX3JtYigpIiBpcyBuZWVkZWQgd2hl
biByZW1vdmluZyB0aGUgc3BpbmxvY2suIEFzIG5vdGVkLCBEb2N1bWVudGF0aW9uL21lbW9yeS1i
YXJyaWVycy50eHQgc2F5cyB0aGF0IHN0b3JlcyBvbiBvbmUgQ1BVIGNhbiBiZQ0KPm9ic2VydmVk
IGJ5IGFub3RoZXIgQ1BVIGluIGEgZGlmZmVyZW50IG9yZGVyLg0KPlByZXZpb3VzbHksIHRoZXJl
IHdhcyBhbiBVTkxPQ0sgKGluIGZzbF9kbWFfdHhfc3VibWl0KSBmb2xsb3dlZCBieSBhIExPQ0sg
KGluIGZzbF90eF9zdGF0dXMpLiBUaGlzIHByb3ZpZGVkIGEgImZ1bGwgYmFycmllciIsIGZvcmNp
bmcgdGhlIG9wZXJhdGlvbnMgdG8gDQo+Y29tcGxldGUgY29ycmVjdGx5IHdoZW4gdmlld2VkIGJ5
IHRoZSBzZWNvbmQgQ1BVLiANCg0KSSBkbyBub3QgYWdyZWUgdGhpcyBzbXBfcm1iKCkgd29ya3Mg
aGVyZS4gQmVjYXVzZSB3aGVuIHRoaXMgc21wX3JtYigpIGV4ZWN1dGVkIGFuZCBiZWdpbiB0byBy
ZWFkIGNoYW4tPmNvbW1vbi5jb29raWUsIHlvdSBzdGlsbCBjYW5ub3QgYXZvaWQgdGhlIG9yZGVy
IGlzc3VlLiBTb21ldGhpbmcgbGlrZSBvbmUgaXMgcmVhZGluZyBvbGQgdmFsdWUsIGJ1dCBhbm90
aGVyIENQVSBpcyB1cGRhdGluZyB0aGUgbmV3IHZhbHVlLiANCg0KTXkgcG9pbnQgaXMgaGVyZSB0
aGUgb3JkZXIgaXMgbm90IGltcG9ydGFudCBmb3IgdGhlIERNQSBkZWNpc2lvbi4NCkNvbXBsZXRl
ZCBETUEgdHggaXMgZGVjaWRlZCBhcyBub3QgY29tcGxldGUgaXMgbm90IGEgYmlnIGRlYWwsIGJl
Y2F1c2UgbmV4dCB0aW1lIGl0IHdpbGwgYmUgT0suDQoNCkkgYmVsaWV2ZSB0aGVyZSBpcyBubyBj
YXNlIHRoYXQgY291bGQgY2F1c2UgdW5jb21wbGV0ZWQgRE1BIHR4IGlzIGRlY2lkZWQgYXMgY29t
cGxldGVkLCBiZWNhdXNlIHRoZSBmc2xfdHhfc3RhdHVzIGlzIGNhbGxlZCBhZnRlciBmc2xfZG1h
X3R4X3N1Ym1pdCBmb3IgYSBzcGVjaWZpYyBjb29raWUuIElmIHlvdSBjYW4gZ2l2ZSBtZSBhbiBl
eGFtcGxlIGhlcmUsIEkgd2lsbCBhZ3JlZSB3aXRoIHlvdS4NCg0KVGhhbmtzLA0KRm9ycmVzdCAN
Cg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IElyYSBXLiBTbnlkZXIgW21haWx0
bzppd3NAb3Zyby5jYWx0ZWNoLmVkdV0gDQpTZW50OiAyMDEx5bm0MTLmnIgx5pelIDE6MDgNClRv
OiBTaGkgWHVlbGluLUIyOTIzNw0KQ2M6IHZpbm9kLmtvdWxAaW50ZWwuY29tOyBkYW4uai53aWxs
aWFtc0BpbnRlbC5jb207IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyBsaW51eC1rZXJu
ZWxAdmdlci5rZXJuZWwub3JnOyBMaSBZYW5nLVI1ODQ3Mg0KU3ViamVjdDogUmU6IFtQQVRDSF1b
UkZDXSBmc2xkbWE6IGZpeCBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbiBieSBvcHRpbWl6aW5nIHNw
aW5sb2NrIHVzZS4NCg0KT24gV2VkLCBOb3YgMzAsIDIwMTEgYXQgMDk6NTc6NDdBTSArMDAwMCwg
U2hpIFh1ZWxpbi1CMjkyMzcgd3JvdGU6DQo+IEhlbGxvIElyYSwNCj4gDQo+IEluIGRyaXZlcnMv
ZG1hL2RtYWVuZ2luZS5jLCB3ZSBoYXZlIGJlbG93IHRpZ2h0IGxvb3AgdG8gY2hlY2sgRE1BIGNv
bXBsZXRpb24gaW4gbWFpbmxpbmUgTGludXg6DQo+ICAgICAgICBkbyB7DQo+ICAgICAgICAgICAg
ICAgICBzdGF0dXMgPSBkbWFfYXN5bmNfaXNfdHhfY29tcGxldGUoY2hhbiwgY29va2llLCBOVUxM
LCBOVUxMKTsNCj4gICAgICAgICAgICAgICAgIGlmICh0aW1lX2FmdGVyX2VxKGppZmZpZXMsIGRt
YV9zeW5jX3dhaXRfdGltZW91dCkpIHsNCj4gICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRr
KEtFUk5fRVJSICJkbWFfc3luY193YWl0X3RpbWVvdXQhXG4iKTsNCj4gICAgICAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIERNQV9FUlJPUjsNCj4gICAgICAgICAgICAgICAgIH0NCj4gICAgICAg
ICB9IHdoaWxlIChzdGF0dXMgPT0gRE1BX0lOX1BST0dSRVNTKTsNCj4gDQoNClRoYXQgaXMgdGhl
IGJvZHkgb2YgZG1hX3N5bmNfd2FpdCgpLiBJdCBpcyBtb3N0bHkgdXNlZCBpbiB0aGUgcmFpZCBj
b2RlLg0KSSB1bmRlcnN0YW5kIHRoYXQgeW91IGRvbid0IHdhbnQgdG8gY2hhbmdlIHRoZSByYWlk
IGNvZGUgdG8gdXNlIGNhbGxiYWNrcy4NCg0KSW4gYW55IGNhc2UsIEkgdGhpbmsgd2UndmUgc3Ry
YXllZCBmcm9tIHRoZSB0b3BpYyB1bmRlciBjb25zaWRlcmF0aW9uLCB3aGljaCBpczogY2FuIHdl
IHJlbW92ZSB0aGlzIHNwaW5sb2NrIHdpdGhvdXQgaW50cm9kdWNpbmcgYSBidWcuDQoNCkknbSBj
b252aW5jZWQgdGhhdCAic21wX3JtYigpIiBpcyBuZWVkZWQgd2hlbiByZW1vdmluZyB0aGUgc3Bp
bmxvY2suIEFzIG5vdGVkLCBEb2N1bWVudGF0aW9uL21lbW9yeS1iYXJyaWVycy50eHQgc2F5cyB0
aGF0IHN0b3JlcyBvbiBvbmUgQ1BVIGNhbiBiZSBvYnNlcnZlZCBieSBhbm90aGVyIENQVSBpbiBh
IGRpZmZlcmVudCBvcmRlci4NCg0KUHJldmlvdXNseSwgdGhlcmUgd2FzIGFuIFVOTE9DSyAoaW4g
ZnNsX2RtYV90eF9zdWJtaXQpIGZvbGxvd2VkIGJ5IGEgTE9DSyAoaW4gZnNsX3R4X3N0YXR1cyku
IFRoaXMgcHJvdmlkZWQgYSAiZnVsbCBiYXJyaWVyIiwgZm9yY2luZyB0aGUgb3BlcmF0aW9ucyB0
byBjb21wbGV0ZSBjb3JyZWN0bHkgd2hlbiB2aWV3ZWQgYnkgdGhlIHNlY29uZCBDUFUuIEZyb20g
dGhlDQp0ZXh0Og0KDQo+IFRoZXJlZm9yZSwgZnJvbSAoMSksICgyKSBhbmQgKDQpIGFuIFVOTE9D
SyBmb2xsb3dlZCBieSBhbiANCj4gdW5jb25kaXRpb25hbCBMT0NLIGlzIGVxdWl2YWxlbnQgdG8g
YSBmdWxsIGJhcnJpZXIsIGJ1dCBhIExPQ0sgZm9sbG93ZWQgYnkgYW4gVU5MT0NLIGlzIG5vdC4N
Cg0KQWxzbywgcGxlYXNlIHJlYWQgIkVYQU1QTEVTIE9GIE1FTU9SWSBCQVJSSUVSIFNFUVVFTkNF
UyIgYW5kICJJTlRFUi1DUFUgTE9DS0lORyBCQVJSSUVSIEVGRkVDVFMiLiBQYXJ0aWN1bGFybHks
IGluICJFWEFNUExFUyBPRiBNRU1PUlkgQkFSUklFUiBTRVFVRU5DRVMiLCB0aGUgdGV4dCBub3Rl
czoNCg0KPiBXaXRob3V0IGludGVydmVudGlvbiwgQ1BVIDIgbWF5IHBlcmNlaXZlIHRoZSBldmVu
dHMgb24gQ1BVIDEgaW4gc29tZSANCj4gZWZmZWN0aXZlbHkgcmFuZG9tIG9yZGVyLCBkZXNwaXRl
IHRoZSB3cml0ZSBiYXJyaWVyIGlzc3VlZCBieSBDUFUgMToNCj4NCj4gW3NuaXAgZGlhZ3JhbV0N
Cj4NCj4gQW5kIHRoaXJkbHksIGEgcmVhZCBiYXJyaWVyIGFjdHMgYXMgYSBwYXJ0aWFsIG9yZGVy
IG9uIGxvYWRzLiBDb25zaWRlciANCj4gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBldmVudHM6
DQo+DQo+IFtzbmlwIGRpYWdyYW1dDQo+DQo+IFdpdGhvdXQgaW50ZXJ2ZW50aW9uLCBDUFUgMiBt
YXkgdGhlbiBjaG9vc2UgdG8gcGVyY2VpdmUgdGhlIGV2ZW50cyBvbiANCj4gQ1BVIDEgaW4gc29t
ZSBlZmZlY3RpdmVseSByYW5kb20gb3JkZXIsIGRlc3BpdGUgdGhlIHdyaXRlIGJhcnJpZXIgaXNz
dWVkIGJ5IENQVSAxOg0KPg0KPiBbc25pcCBkaWFncmFtXQ0KPg0KDQpBbmQgc28gb24uIFBsZWFz
ZSByZWFkIHRoaXMgZW50aXJlIHNlY3Rpb24gaW4gdGhlIGRvY3VtZW50Lg0KDQpJIGNhbid0IGdp
dmUgeW91IGFuIEFDSyBvbiB0aGUgcHJvcG9zZWQgcGF0Y2guIFRvIHRoZSBiZXN0IG9mIG15IHVu
ZGVyc3RhbmRpbmcsIEkgYmVsaWV2ZSBpdCBpbnRyb2R1Y2VzIGEgYnVnLiBJJ3ZlIHRyaWVkIHRv
IHByb3ZpZGUgYXMgbXVjaCBldmlkZW5jZSBmb3IgdGhpcyBiZWxpZWYgYXMgSSBjYW4sIGluIHRo
ZSBmb3JtIG9mIGRvY3VtZW50YXRpb24gaW4gdGhlIGtlcm5lbCBzb3VyY2UgdHJlZS4gSWYgeW91
IGNhbiBjaXRlIHNvbWUgZG9jdW1lbnRhdGlvbiB0aGF0IHNob3dzIEkgYW0gd3JvbmcsIEkgd2ls
bCBoYXBwaWx5IGNoYW5nZSBteSBtaW5kIQ0KDQpJcmENCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3Nh
Z2UtLS0tLQ0KPiBGcm9tOiBJcmEgVy4gU255ZGVyIFttYWlsdG86aXdzQG92cm8uY2FsdGVjaC5l
ZHVdDQo+IFNlbnQ6IDIwMTHlubQxMeaciDMw5pelIDE6MjYNCj4gVG86IExpIFlhbmctUjU4NDcy
DQo+IENjOiBTaGkgWHVlbGluLUIyOTIzNzsgdmlub2Qua291bEBpbnRlbC5jb207IGRhbi5qLndp
bGxpYW1zQGludGVsLmNvbTsgDQo+IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyBsaW51
eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdW1JGQ10gZnNs
ZG1hOiBmaXggcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gYnkgb3B0aW1pemluZyBzcGlubG9jayB1
c2UuDQo+IA0KPiBPbiBUdWUsIE5vdiAyOSwgMjAxMSBhdCAwMzoxOTowNUFNICswMDAwLCBMaSBZ
YW5nLVI1ODQ3MiB3cm90ZToNCj4gPiA+IFN1YmplY3Q6IFJlOiBbUEFUQ0hdW1JGQ10gZnNsZG1h
OiBmaXggcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gYnkgDQo+ID4gPiBvcHRpbWl6aW5nIHNwaW5s
b2NrIHVzZS4NCj4gPiA+IA0KPiA+ID4gT24gVGh1LCBOb3YgMjQsIDIwMTEgYXQgMDg6MTI6MjVB
TSArMDAwMCwgU2hpIFh1ZWxpbi1CMjkyMzcgd3JvdGU6DQo+ID4gPiA+IEhpIElyYSwNCj4gPiA+
ID4NCj4gPiA+ID4gVGhhbmtzIGZvciB5b3VyIHJldmlldy4NCj4gPiA+ID4NCj4gPiA+ID4gQWZ0
ZXIgc2Vjb25kIHRob3VnaHQsIEkgdGhpbmsgeW91ciBzY2VuYXJpbyBtYXkgbm90IG9jY3VyLg0K
PiA+ID4gPiBCZWNhdXNlIHRoZSBjb29raWUgMjAgd2UgcXVlcnkgbXVzdCBiZSByZXR1cm5lZCBi
eQ0KPiA+ID4gPiBmc2xfZG1hX3R4X3N1Ym1pdCguLi4pIGluDQo+ID4gPiBwcmFjdGljZS4NCj4g
PiA+ID4gV2UgbmV2ZXIgcXVlcnkgYSBjb29raWUgbm90IHJldHVybmVkIGJ5IGZzbF9kbWFfdHhf
c3VibWl0KC4uLikuDQo+ID4gPiA+DQo+ID4gPiANCj4gPiA+IEkgYWdyZWUgYWJvdXQgdGhpcyBw
YXJ0Lg0KPiA+ID4gDQo+ID4gPiA+IFdoZW4gd2UgY2FsbCBmc2xfdHhfc3RhdHVzKDIwKSwgdGhl
IGNoYW4tPmNvbW1vbi5jb29raWUgaXMgDQo+ID4gPiA+IGRlZmluaXRlbHkgd3JvdGUgYXMNCj4g
PiA+IDIwIGFuZCBjcHUyIGNvdWxkIG5vdCByZWFkIGFzIDE5Lg0KPiA+ID4gPg0KPiA+ID4gDQo+
ID4gPiBUaGlzIGlzIHdoYXQgSSBkb24ndCBhZ3JlZSBhYm91dC4gSG93ZXZlciwgSSdtIG5vdCBh
biBleHBlcnQgb24gQ1BVIGNhY2hlIHZzLg0KPiA+ID4gbWVtb3J5IGFjY2Vzc2VzIGluIGFuIG11
bHRpLXByb2Nlc3NvciBzeXN0ZW0uIFRoZSBzZWN0aW9uIHRpdGxlZCANCj4gPiA+ICJDQUNIRSBD
T0hFUkVOQ1kiIGluIERvY3VtZW50YXRpb24vbWVtb3J5LWJhcnJpZXJzLnR4dCBsZWFkcyBtZSB0
byANCj4gPiA+IGJlbGlldmUgdGhhdCB0aGUgc2NlbmFyaW8gSSBkZXNjcmliZWQgaXMgcG9zc2li
bGUuDQo+ID4gDQo+ID4gRm9yIEZyZWVzY2FsZSBQb3dlclBDLCB0aGUgY2hpcCBhdXRvbWF0aWNh
bGx5IHRha2VzIGNhcmUgb2YgY2FjaGUgY29oZXJlbmN5LiAgRXZlbiBpZiB0aGlzIGlzIGEgY29u
Y2Vybiwgc3BpbmxvY2sgY2FuJ3QgYWRkcmVzcyBpdC4NCj4gPiANCj4gPiA+IA0KPiA+ID4gV2hh
dCBoYXBwZW5zIGlmIENQVTEncyB3cml0ZSBvZiBjaGFuLT5jb21tb24uY29va2llIG9ubHkgZ29l
cyBpbnRvIA0KPiA+ID4gQ1BVMSdzIGNhY2hlLiBJdCBuZXZlciBtYWtlcyBpdCB0byBtYWluIG1l
bW9yeSBiZWZvcmUgQ1BVMiBmZXRjaGVzIHRoZSBvbGQgdmFsdWUgb2YgMTkuDQo+ID4gPiANCj4g
PiA+IEkgZG9uJ3QgdGhpbmsgeW91IHNob3VsZCBzZWUgYW55IHBlcmZvcm1hbmNlIGltcGFjdCBm
cm9tIHRoZQ0KPiA+ID4gc21wX21iKCkgb3BlcmF0aW9uLg0KPiA+IA0KPiA+IFNtcF9tYigpIGRv
IGhhdmUgaW1wYWN0IG9uIHBlcmZvcm1hbmNlIGlmIGl0J3MgaW4gdGhlIGhvdCBwYXRoLiAgV2hp
bGUgaXQgbWlnaHQgYmUgc2FmZXIgaGF2aW5nIGl0LCBJIGRvdWJ0IGl0IGlzIHJlYWxseSBuZWNl
c3NhcnkuICBJZiB0aGUgQ1BVMSBkb2Vzbid0IGhhdmUgdGhlIHVwZGF0ZWQgbGFzdF91c2VkLCBp
dCdzIHNob3VsZG4ndCBoYXZlIGtub3duIHRoZXJlIGlzIGEgY29va2llIDIwIGV4aXN0ZWQgZWl0
aGVyLg0KPiA+IA0KPiANCj4gSSBiZWxpZXZlIHRoYXQgeW91IGFyZSBjb3JyZWN0LCBmb3IgcG93
ZXJwYy4gSG93ZXZlciwgYW55dGhpbmcgb3V0c2lkZSBvZiBhcmNoL3Bvd2VycGMgc2hvdWxkbid0
IGFzc3VtZSBpdCBvbmx5IHJ1bnMgb24gcG93ZXJwYy4gSSB3b3VsZG4ndCBiZSBzdXJwcmlzZWQg
dG8gc2VlIGZzbGRtYSBydW5uaW5nIG9uIGFuIGlNWCBzb21lZGF5IChBUk0gcHJvY2Vzc29yKS4N
Cj4gDQo+IE15IGludGVycHJldGF0aW9uIHNheXMgdGhhdCB0aGUgY2hhbmdlIGludHJvZHVjZXMg
dGhlIHBvc3NpYmlsaXR5IHRoYXQNCj4gZnNsX3R4X3N0YXR1cygpIHJldHVybnMgdGhlIHdyb25n
IGFuc3dlciBmb3IgYW4gZXh0cmVtZWx5IHNtYWxsIHRpbWUgd2luZG93LCBvbiBTTVAgb25seSwg
YmFzZWQgb24gRG9jdW1lbnRhdGlvbi9tZW1vcnktYmFycmllcnMudHh0LiBCdXQgSSBjYW4ndCBz
ZWVtIGNvbnZpbmNlIHlvdS4NCj4gDQo+IE15IHJlYWwgcXVlc3Rpb24gaXMgd2hhdCBjb2RlIHBh
dGggaXMgaGl0dGluZyB0aGlzIHNwaW5sb2NrPyBJcyBpdCBpbiBtYWlubGluZSBMaW51eD8gV2h5
IGlzIGl0IHBvbGxpbmcgcmF0aGVyIHRoYW4gdXNpbmcgY2FsbGJhY2tzIHRvIGRldGVybWluZSBE
TUEgY29tcGxldGlvbj8NCj4gDQo+IFRoYW5rcywNCj4gSXJhDQo+IA0KPiA+ID4gPiAtLS0tLU9y
aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiBGcm9tOiBJcmEgVy4gU255ZGVyIFttYWlsdG86
aXdzQG92cm8uY2FsdGVjaC5lZHVdDQo+ID4gPiA+IFNlbnQ6IDIwMTHlubQxMeaciDIz5pelIDI6
NTkNCj4gPiA+ID4gVG86IFNoaSBYdWVsaW4tQjI5MjM3DQo+ID4gPiA+IENjOiBkYW4uai53aWxs
aWFtc0BpbnRlbC5jb207IExpIFlhbmctUjU4NDcyOyB6d0B6aC1rZXJuZWwub3JnOyANCj4gPiA+
ID4gdmlub2Qua291bEBpbnRlbC5jb207IGxpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnOyAN
Cj4gPiA+ID4gbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiA+ID4gPiBTdWJqZWN0OiBS
ZTogW1BBVENIXVtSRkNdIGZzbGRtYTogZml4IHBlcmZvcm1hbmNlIGRlZ3JhZGF0aW9uIGJ5IA0K
PiA+ID4gPiBvcHRpbWl6aW5nDQo+ID4gPiBzcGlubG9jayB1c2UuDQo+ID4gPiA+DQo+ID4gPiA+
IE9uIFR1ZSwgTm92IDIyLCAyMDExIGF0IDEyOjU1OjA1UE0gKzA4MDAsIGIyOTIzN0BmcmVlc2Nh
bGUuY29tIHdyb3RlOg0KPiA+ID4gPiA+IEZyb206IEZvcnJlc3QgU2hpIDxiMjkyMzdAZnJlZXNj
YWxlLmNvbT4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ICAgICBkbWEgc3RhdHVzIGNoZWNrIGZ1bmN0
aW9uIGZzbF90eF9zdGF0dXMgaXMgaGVhdmlseSBjYWxsZWQgaW4NCj4gPiA+ID4gPiAgICAgYSB0
aWdodCBsb29wIGFuZCB0aGUgZGVzYyBsb2NrIGluIGZzbF90eF9zdGF0dXMgY29udGVuZGVkIGJ5
DQo+ID4gPiA+ID4gICAgIHRoZSBkbWEgc3RhdHVzIHVwZGF0ZSBmdW5jdGlvbi4gdGhpcyBjYXVz
ZWQgdGhlIGRtYSBwZXJmb3JtYW5jZQ0KPiA+ID4gPiA+ICAgICBkZWdyYWRlcyBtdWNoLg0KPiA+
ID4gPiA+DQo+ID4gPiA+ID4gICAgIHRoaXMgcGF0Y2ggcmVsZWFzZXMgdGhlIGxvY2sgaW4gdGhl
IGZzbF90eF9zdGF0dXMgZnVuY3Rpb24uDQo+ID4gPiA+ID4gICAgIEkgYmVsaWV2ZSBpdCBoYXMg
bm8gbmVnbGVjdCBpbXBhY3Qgb24gdGhlIGZvbGxvd2luZyBjYWxsIG9mDQo+ID4gPiA+ID4gICAg
IGRtYV9hc3luY19pc19jb21wbGV0ZSguLi4pLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgIHdl
IGNhbiBzZWUgYmVsb3cgdGhyZWUgY29uZGl0aW9ucyB3aWxsIGJlIGlkZW50aWZpZWQgYXMgc3Vj
Y2Vzcw0KPiA+ID4gPiA+ICAgICBhKSAgeCA8IGNvbXBsZXRlIDwgdXNlDQo+ID4gPiA+ID4gICAg
IGIpICB4IDwgY29tcGxldGUrTiA8IHVzZStODQo+ID4gPiA+ID4gICAgIGMpICB4IDwgY29tcGxl
dGUgPCB1c2UrTg0KPiA+ID4gPiA+ICAgICBoZXJlIGNvbXBsZXRlIGlzIHRoZSBjb21wbGV0ZWRf
Y29va2llLCB1c2UgaXMgdGhlIGxhc3RfdXNlZA0KPiA+ID4gPiA+ICAgICBjb29raWUsIHggaXMg
dGhlIHF1ZXJ5aW5nIGNvb2tpZSwgTiBpcyBNQVggY29va2llDQo+ID4gPiA+ID4NCj4gPiA+ID4g
PiAgICAgd2hlbiBjaGFuLT5jb21wbGV0ZWRfY29va2llIGlzIGJlaW5nIHJlYWQsIHRoZSBsYXN0
X3VzZWQgbWF5DQo+ID4gPiA+ID4gICAgIGJlIGluY3Jlc2VkLiBBbnl3YXkgaXQgaGFzIG5vIG5l
Z2xlY3QgaW1wYWN0IG9uIHRoZSBkbWEgc3RhdHVzDQo+ID4gPiA+ID4gICAgIGRlY2lzaW9uLg0K
PiA+ID4gPiA+DQo+ID4gPiA+ID4gICAgIFNpZ25lZC1vZmYtYnk6IEZvcnJlc3QgU2hpIDx4dWVs
aW4uc2hpQGZyZWVzY2FsZS5jb20+DQo+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gIGRyaXZlcnMv
ZG1hL2ZzbGRtYS5jIHwgICAgNSAtLS0tLQ0KPiA+ID4gPiA+ICAxIGZpbGVzIGNoYW5nZWQsIDAg
aW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYg
LS1naXQgYS9kcml2ZXJzL2RtYS9mc2xkbWEuYyBiL2RyaXZlcnMvZG1hL2ZzbGRtYS5jIGluZGV4
IA0KPiA+ID4gPiA+IDhhNzgxNTQuLjFkY2E1NmYgMTAwNjQ0DQo+ID4gPiA+ID4gLS0tIGEvZHJp
dmVycy9kbWEvZnNsZG1hLmMNCj4gPiA+ID4gPiArKysgYi9kcml2ZXJzL2RtYS9mc2xkbWEuYw0K
PiA+ID4gPiA+IEBAIC05ODYsMTUgKzk4NiwxMCBAQCBzdGF0aWMgZW51bSBkbWFfc3RhdHVzIA0K
PiA+ID4gPiA+IGZzbF90eF9zdGF0dXMoc3RydWN0DQo+ID4gPiBkbWFfY2hhbiAqZGNoYW4sDQo+
ID4gPiA+ID4gIAlzdHJ1Y3QgZnNsZG1hX2NoYW4gKmNoYW4gPSB0b19mc2xfY2hhbihkY2hhbik7
DQo+ID4gPiA+ID4gIAlkbWFfY29va2llX3QgbGFzdF9jb21wbGV0ZTsNCj4gPiA+ID4gPiAgCWRt
YV9jb29raWVfdCBsYXN0X3VzZWQ7DQo+ID4gPiA+ID4gLQl1bnNpZ25lZCBsb25nIGZsYWdzOw0K
PiA+ID4gPiA+IC0NCj4gPiA+ID4gPiAtCXNwaW5fbG9ja19pcnFzYXZlKCZjaGFuLT5kZXNjX2xv
Y2ssIGZsYWdzKTsNCj4gPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBUaGlzIHdpbGwgY2F1c2Ug
YSBidWcuIFNlZSBiZWxvdyBmb3IgYSBkZXRhaWxlZCBleHBsYW5hdGlvbi4gWW91IG5lZWQgdGhp
cyBpbnN0ZWFkOg0KPiA+ID4gPg0KPiA+ID4gPiAJLyoNCj4gPiA+ID4gCSAqIE9uIGFuIFNNUCBz
eXN0ZW0sIHdlIG11c3QgZW5zdXJlIHRoYXQgdGhpcyBDUFUgaGFzIHNlZW4gdGhlDQo+ID4gPiA+
IAkgKiBtZW1vcnkgYWNjZXNzZXMgcGVyZm9ybWVkIGJ5IGFub3RoZXIgQ1BVIHVuZGVyIHRoZQ0K
PiA+ID4gPiAJICogY2hhbi0+ZGVzY19sb2NrIHNwaW5sb2NrLg0KPiA+ID4gPiAJICovDQo+ID4g
PiA+IAlzbXBfbWIoKTsNCj4gPiA+ID4gPiAgCWxhc3RfY29tcGxldGUgPSBjaGFuLT5jb21wbGV0
ZWRfY29va2llOw0KPiA+ID4gPiA+ICAJbGFzdF91c2VkID0gZGNoYW4tPmNvb2tpZTsNCj4gPiA+
ID4gPg0KPiA+ID4gPiA+IC0Jc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmY2hhbi0+ZGVzY19sb2Nr
LCBmbGFncyk7DQo+ID4gPiA+ID4gLQ0KPiA+ID4gPiA+ICAJZG1hX3NldF90eF9zdGF0ZSh0eHN0
YXRlLCBsYXN0X2NvbXBsZXRlLCBsYXN0X3VzZWQsIDApOw0KPiA+ID4gPiA+ICAJcmV0dXJuIGRt
YV9hc3luY19pc19jb21wbGV0ZShjb29raWUsIGxhc3RfY29tcGxldGUsIA0KPiA+ID4gPiA+IGxh
c3RfdXNlZCk7ICB9DQo+ID4gPiA+DQo+ID4gPiA+IEZhY3RzOg0KPiA+ID4gPiAtIGRjaGFuLT5j
b29raWUgaXMgdGhlIHNhbWUgbWVtYmVyIGFzIGNoYW4tPmNvbW1vbi5jb29raWUgKHNhbWUgDQo+
ID4gPiA+IG1lbW9yeQ0KPiA+ID4gPiBsb2NhdGlvbikNCj4gPiA+ID4gLSBjaGFuLT5jb21tb24u
Y29va2llIGlzIHRoZSAibGFzdCBhbGxvY2F0ZWQgY29va2llIGZvciBhIHBlbmRpbmcgdHJhbnNh
Y3Rpb24iDQo+ID4gPiA+IC0gY2hhbi0+Y29tcGxldGVkX2Nvb2tpZSBpcyB0aGUgImxhc3QgY29t
cGxldGVkIHRyYW5zYWN0aW9uIg0KPiA+ID4gPg0KPiA+ID4gPiBJIGhhdmUgcmVwbGFjZWQgImRj
aGFuLT5jb29raWUiIHdpdGggImNoYW4tPmNvbW1vbi5jb29raWUiIGluIA0KPiA+ID4gPiB0aGUg
YmVsb3cNCj4gPiA+IGV4cGxhbmF0aW9uLCB0byBrZWVwIGV2ZXJ5dGhpbmcgcmVmZXJlbmNlZCBm
cm9tIHRoZSBzYW1lIHN0cnVjdHVyZS4NCj4gPiA+ID4NCj4gPiA+ID4gVmFyaWFibGUgdXNhZ2Ug
YmVmb3JlIHlvdXIgY2hhbmdlLiBFdmVyeXRoaW5nIGlzIHVzZWQgbG9ja2VkLg0KPiA+ID4gPiAt
IFJXIGNoYW4tPmNvbW1vbi5jb29raWUJCShmc2xfZG1hX3R4X3N1Ym1pdCkNCj4gPiA+ID4gLSBS
ICBjaGFuLT5jb21tb24uY29va2llCQkoZnNsX3R4X3N0YXR1cykNCj4gPiA+ID4gLSBSICBjaGFu
LT5jb21wbGV0ZWRfY29va2llCQkoZnNsX3R4X3N0YXR1cykNCj4gPiA+ID4gLSBXICBjaGFuLT5j
b21wbGV0ZWRfY29va2llCQkoZG1hX2RvX3Rhc2tsZXQpDQo+ID4gPiA+DQo+ID4gPiA+IFZhcmlh
YmxlIHVzYWdlIGFmdGVyIHlvdXIgY2hhbmdlOg0KPiA+ID4gPiAtIFJXIGNoYW4tPmNvbW1vbi5j
b29raWUJCUxPQ0tFRA0KPiA+ID4gPiAtIFIgIGNoYW4tPmNvbW1vbi5jb29raWUJCU5PIExPQ0sN
Cj4gPiA+ID4gLSBSICBjaGFuLT5jb21wbGV0ZWRfY29va2llCQlOTyBMT0NLDQo+ID4gPiA+IC0g
VyAgY2hhbi0+Y29tcGxldGVkX2Nvb2tpZSAgICAgICAgICAgICBMT0NLRUQNCj4gPiA+ID4NCj4g
PiA+ID4gV2hhdCBpZiB3ZSBhc3N1bWUgdGhhdCB5b3UgaGF2ZSBhIDIgQ1BVIHN5c3RlbSAoc3Vj
aCBhcyBhIFAyMDIwKS4gDQo+ID4gPiA+IEFmdGVyIHlvdXINCj4gPiA+IGNoYW5nZXMsIG9uZSBw
b3NzaWJsZSBzZXF1ZW5jZSBpczoNCj4gPiA+ID4NCj4gPiA+ID4gPT09IENQVTEgLSBhbGxvY2F0
ZSArIHN1Ym1pdCBkZXNjcmlwdG9yOiBmc2xfZG1hX3R4X3N1Ym1pdCgpID09PSANCj4gPiA+ID4g
c3Bpbl9sb2NrX2lycXNhdmUNCj4gPiA+ID4gZGVzY3JpcHRvci0+Y29va2llID0gMjAJCSh4IGlu
IHlvdXIgZXhhbXBsZSkNCj4gPiA+ID4gY2hhbi0+Y29tbW9uLmNvb2tpZSA9IDIwCSh1c2VkIGlu
IHlvdXIgZXhhbXBsZSkNCj4gPiA+ID4gc3Bpbl91bmxvY2tfaXJxcmVzdG9yZQ0KPiA+ID4gPg0K
PiA+ID4gPiA9PT0gQ1BVMiAtIGltbWVkaWF0ZWx5IGNhbGxzIGZzbF90eF9zdGF0dXMoKSA9PT0N
Cj4gPiA+ID4gY2hhbi0+Y29tbW9uLmNvb2tpZSA9PSAxOQ0KPiA+ID4gPiBjaGFuLT5jb21wbGV0
ZWRfY29va2llID09IDE5DQo+ID4gPiA+IGRlc2NyaXB0b3ItPmNvb2tpZSA9PSAyMA0KPiA+ID4g
Pg0KPiA+ID4gPiBTaW5jZSB3ZSBkb24ndCBoYXZlIGxvY2tzIGFueW1vcmUsIENQVTIgbWF5IG5v
dCBoYXZlIHNlZW4gdGhlIA0KPiA+ID4gPiB3cml0ZSB0bw0KPiA+ID4gPiBjaGFuLT5jb21tb24u
Y29va2llIHlldC4NCj4gPiA+ID4NCj4gPiA+ID4gQWxzbyBhc3N1bWUgdGhhdCB0aGUgRE1BIGhh
cmR3YXJlIGhhcyBub3Qgc3RhcnRlZCBwcm9jZXNzaW5nIHRoZSANCj4gPiA+ID4gdHJhbnNhY3Rp
b24geWV0LiBUaGVyZWZvcmUgZG1hX2RvX3Rhc2tsZXQoKSBoYXMgbm90IGJlZW4gY2FsbGVkLCAN
Cj4gPiA+ID4gYW5kDQo+ID4gPiA+IGNoYW4tPmNvbXBsZXRlZF9jb29raWUgaGFzIG5vdCBiZWVu
IHVwZGF0ZWQuDQo+ID4gPiA+DQo+ID4gPiA+IEluIHRoaXMgY2FzZSwgZG1hX2FzeW5jX2lzX2Nv
bXBsZXRlKCkgKG9uIENQVTIpIHJldHVybnMgDQo+ID4gPiA+IERNQV9TVUNDRVNTLCBldmVuDQo+
ID4gPiB0aG91Z2ggdGhlIERNQSBvcGVyYXRpb24gaGFzIG5vdCBzdWNjZWVkZWQuIFRoZSBETUEg
b3BlcmF0aW9uIGhhcyANCj4gPiA+IG5vdCBldmVuIHN0YXJ0ZWQgeWV0IQ0KPiA+ID4gPg0KPiA+
ID4gPiBUaGUgc21wX21iKCkgZml4ZXMgdGhpcywgc2luY2UgaXQgZm9yY2VzIENQVTIgdG8gaGF2
ZSBzZWVuIGFsbCANCj4gPiA+ID4gbWVtb3J5IG9wZXJhdGlvbnMNCj4gPiA+IHRoYXQgaGFwcGVu
ZWQgYmVmb3JlIENQVTEgcmVsZWFzZWQgdGhlIHNwaW5sb2NrLiBTcGlubG9ja3MgYXJlIA0KPiA+
ID4gaW1wbGljaXQgU01QIG1lbW9yeSBiYXJyaWVycy4NCj4gPiA+ID4NCj4gPiA+ID4gVGhlcmVm
b3JlLCB0aGUgYWJvdmUgZXhhbXBsZSBiZWNvbWVzOg0KPiA+ID4gPiBzbXBfbWIoKTsNCj4gPiA+
ID4gY2hhbi0+Y29tbW9uLmNvb2tpZSA9PSAyMA0KPiA+ID4gPiBjaGFuLT5jb21wbGV0ZWRfY29v
a2llID09IDE5DQo+ID4gPiA+IGRlc2NyaXB0b3ItPmNvb2tpZSA9PSAyMA0KPiA+ID4gPg0KPiA+
ID4gPiBUaGVuIGRtYV9hc3luY19pc19jb21wbGV0ZSgpIHJldHVybnMgRE1BX0lOX1BST0dSRVNT
LCB3aGljaCBpcyBjb3JyZWN0Lg0KPiA+ID4gPg0KPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+IEly
YQ0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fXw0KPiA+ID4gPiBMaW51eHBwYy1kZXYgbWFpbGluZyBsaXN0DQo+
ID4gPiA+IExpbnV4cHBjLWRldkBsaXN0cy5vemxhYnMub3JnDQo+ID4gPiA+IGh0dHBzOi8vbGlz
dHMub3psYWJzLm9yZy9saXN0aW5mby9saW51eHBwYy1kZXYNCj4gPiANCj4gDQoNCg==
^ permalink raw reply
* Re: [PATCH][v2] Enable CONFIG_STRICT_DEVMEM support for Powerpc
From: Sukadev Bhattiprolu @ 2011-12-02 3:25 UTC (permalink / raw)
To: Benjamin Herrenschmidt; +Cc: linuxppc-dev, sbest, paulus, anton
In-Reply-To: <1322789207.3729.45.camel@pasglop>
Benjamin Herrenschmidt [benh@kernel.crashing.org] wrote:
| And an additional comment regarding the rtas bit:
| > +int devmem_is_allowed(unsigned long pfn)
| > +{
| > + if (iomem_is_exclusive(pfn << PAGE_SHIFT))
| > + return 0;
| > + if (!page_is_ram(pfn))
| > + return 1;
| > + if (page_is_rtas(pfn))
| > + return 1;
| > + return 0;
| > +}
|
| This calls it unconditionally... you just broke the build of all !rtas
| platforms. Additionally, putting an extern definition like that in a .c
| file is gross at best....
Oh, Sorry.
|
| Please instead, put in a header something like
|
| #ifdef CONFIG_PPC_RTAS
| extern int page_is_rtas(unsigned long pfn);
| #else
| static inline int page_is_rtas(unsigned long pfn) { }
| #endif
|
| And while at it, call it page_is_rtas_user_buf(); to make it clear what
| we are talking about, ie, not RTAS core per-se but specifically the RMO
| buffer.
Ok. I will rename, move the declaration to <asm/rtas.h> and resend the
incremental patch.
Sukadev
^ permalink raw reply
* Re: [PATCH 10/10] powerpc/mpic: Add in-core support for cascaded MPICs
From: Benjamin Herrenschmidt @ 2011-12-02 3:04 UTC (permalink / raw)
To: Moffett, Kyle D; +Cc: linuxppc-dev, Paul Mackerras, michaele@au1.ibm.com
In-Reply-To: <CDCF68E8-7EF4-4ED7-A1FA-2A2CE74287CB@boeing.com>
On Thu, 2011-12-01 at 19:48 -0600, Moffett, Kyle D wrote:
> Ben,
>
> I fixed the 3 issues that Paul and Michael reported and I can provide them
> to you two different ways, however you would prefer. I can also send the
> patches via email if that's more convenient.
>
> Option 1: Squashed into the the original patches for bisectability:
> git://opensource.exmeritus.com/hww-1u-1a/linux.git mpc85xx/mpic-and-stuff
This option, please just re-send to the list.
Cheers,
Ben.
^ permalink raw reply
* [powerpc] boot up problem
From: Jia Hongtao-B38951 @ 2011-12-02 2:21 UTC (permalink / raw)
To: Kumar Gala; +Cc: linuxppc-dev@lists.ozlabs.org, Li Yang-R58472
In-Reply-To: <3EC6F9E0-C847-4DA8-AD8C-313976982A10@kernel.crashing.org>
Hi
I just found that the 'next' branch you mentioned have problem to boot up.
I test it in p1022ds and p1010rdb boards and the result are both the same.
Note that for p1022ds I use "make p1022ds.dtb" to make the dtb file(36bit) =
with 36bit-uboot.
And for p1010rdb I use all 32bit image.
The problem list below:
scsi0 : sata_fsl
ata1: SATA max UDMA/133 irq 74
fsl-sata fffe19000.sata: Sata FSL Platform/CSB Driver init
scsi1 : sata_fsl
ata2: SATA max UDMA/133 irq 41
Fixed MDIO Bus: probed
Unable to handle kernel paging request for data at address 0x00000000
Faulting instruction address: 0xc0451630
Oops: Kernel access of bad area, sig: 11 [#1]
SMP NR_CPUS=3D2 P1022 DS
Modules linked in:
NIP: c0451630 LR: c0451618 CTR: 00000007
REGS: ef03fce0 TRAP: 0300 Not tainted (3.2.0-rc3-00099-g883381d)
MSR: 00029000 <EE,ME,CE> CR: 24042022 XER: 00000000
DEAR: 00000000, ESR: 00800000
TASK =3D ef040000[1] 'swapper' THREAD: ef03e000 CPU: 0
GPR00: ef03fd98 ef03fd90 ef040000 ef1ab22c 00000000 00000002 ffeb0000 0000f=
ffe
GPR08: b0541215 00000000 00000000 00000000 24042028 23c406c2 00000000 00000=
000
GPR16: c0000a00 00000014 3fffffff 03ff9000 00000015 7ff3a760 f1044030 fffff=
ff4
GPR24: c053e128 ef1ab230 c056a3a8 ef03e000 ef040000 ef1ab22c 00000000 ef1ab=
228
NIP [c0451630] __mutex_lock_slowpath+0xb4/0x190
LR [c0451618] __mutex_lock_slowpath+0x9c/0x190
Call Trace:
[ef03fdd0] [c0451758] mutex_lock+0x4c/0x50
[ef03fde0] [c02b5124] mdiobus_read+0x38/0x74
[ef03fe00] [c02b41f4] get_phy_id+0x24/0x80
[ef03fe20] [c02b9de4] fsl_pq_mdio_probe+0x3b4/0x580
[ef03feb0] [c0266120] platform_drv_probe+0x20/0x30
[ef03fec0] [c0264bbc] driver_probe_device+0xa4/0x1d4
[ef03fee0] [c0264da8] __driver_attach+0xbc/0xc0
[ef03ff00] [c0263ac0] bus_for_each_dev+0x60/0x9c
[ef03ff30] [c02647f4] driver_attach+0x24/0x34
[ef03ff40] [c0264444] bus_add_driver+0x1ac/0x274
[ef03ff70] [c02651b0] driver_register+0x88/0x154
[ef03ff90] [c0266450] platform_driver_register+0x68/0x78
[ef03ffa0] [c05d93b8] fsl_pq_mdio_init+0x18/0x28
[ef03ffb0] [c0001eb8] do_one_initcall+0x34/0x1a8
[ef03ffe0] [c05bb82c] kernel_init+0xa0/0x13c
[ef03fff0] [c000d878] kernel_thread+0x4c/0x68
Instruction dump:
801c0020 2f800063 419dffe8 3bbf0004 7fa3eb78 48001aad 813f000c 38010008
3b3f0008 901f000c 93210008 9121000c
3800ffff 93810010 7c0004ac
---[ end trace 1643a9a9c5097f8f ]---
Kernel panic - not syncing: Attempted to kill init!
Call Trace:
[ef03fbc0] [c0008044] show_stack+0x44/0x154 (unreliable)
[ef03fc00] [c04532c8] panic+0xa4/0x1d8
[ef03fc50] [c0049a00] do_exit+0x5dc/0x684
[ef03fca0] [c000a6f0] die+0xdc/0x1b4
[ef03fcc0] [c00128d0] bad_page_fault+0xb4/0xfc
[ef03fcd0] [c000ebe4] handle_page_fault+0x7c/0x80
--- Exception: 300 at __mutex_lock_slowpath+0xb4/0x190
LR =3D __mutex_lock_slowpath+0x9c/0x190
[ef03fd90] [00000000] (null) (unreliable)
[ef03fdd0] [c0451758] mutex_lock+0x4c/0x50
[ef03fde0] [c02b5124] mdiobus_read+0x38/0x74
[ef03fe00] [c02b41f4] get_phy_id+0x24/0x80
[ef03fe20] [c02b9de4] fsl_pq_mdio_probe+0x3b4/0x580
[ef03feb0] [c0266120] platform_drv_probe+0x20/0x30
[ef03fec0] [c0264bbc] driver_probe_device+0xa4/0x1d4
[ef03fee0] [c0264da8] __driver_attach+0xbc/0xc0
[ef03ff00] [c0263ac0] bus_for_each_dev+0x60/0x9c
[ef03ff30] [c02647f4] driver_attach+0x24/0x34
[ef03ff40] [c0264444] bus_add_driver+0x1ac/0x274
[ef03ff70] [c02651b0] driver_register+0x88/0x154
[ef03ff90] [c0266450] platform_driver_register+0x68/0x78
[ef03ffa0] [c05d93b8] fsl_pq_mdio_init+0x18/0x28
[ef03ffb0] [c0001eb8] do_one_initcall+0x34/0x1a8
[ef03ffe0] [c05bb82c] kernel_init+0xa0/0x13c
[ef03fff0] [c000d878] kernel_thread+0x4c/0x68
Rebooting in 180 seconds..
Do you or anyone else have any idea about this?
Thanks.
-----Original Message-----
From: Kumar Gala [mailto:galak@kernel.crashing.org]=20
Sent: Thursday, November 24, 2011 3:10 PM
To: Jia Hongtao-B38951
Cc: Li Yang-R58472
Subject: Re: [PATCH 1/2] Unify pci/pcie initialization code
When you do this please do it against my latest upstream 'next' branch on:
http://git.kernel.org/?p=3Dlinux/kernel/git/galak/powerpc.git
git://git.kernel.org/pub/scm/linux/kernel/git/galak/powerpc.git
- k
On Nov 24, 2011, at 12:27 AM, Jia Hongtao-B38951 wrote:
> Ok, I got it.
>=20
> - Hongtao
>=20
> -----Original Message-----
> From: Li Yang-R58472
> Sent: Thursday, November 24, 2011 2:06 PM
> To: Jia Hongtao-B38951; Kumar Gala
> Subject: RE: [PATCH 1/2] Unify pci/pcie initialization code
>=20
> Hongtao,
>=20
> Please update all the boards currently using fsl_add_bridge().
>=20
> - Leo
>=20
>> -----Original Message-----
>> From: Kumar Gala [mailto:galak@kernel.crashing.org]
>> Sent: Thursday, November 24, 2011 12:51 PM
>> To: Jia Hongtao-B38951
>> Cc: linuxppc-dev@lists.ozlabs.org; Gala Kumar-B11780; Li Yang-R58472
>> Subject: Re: [PATCH 1/2] Unify pci/pcie initialization code
>>=20
>>=20
>> On Nov 22, 2011, at 12:20 AM, Jia Hongtao-B38951 wrote:
>>=20
>>> Hi Kumar,
>>> We want more comments on this series of patches ([1/2] & [2/2]) to=20
>>> speed
>> up the pushing-to-kernel progress.
>>> Thanks.
>>=20
>> I think the code is fine, but you need to update it for all the=20
>> boards include the 86xx ones.
>>=20
>> - k
>>=20
>>>=20
>>> -----Original Message-----
>>> From: Jia Hongtao-B38951
>>> Sent: Monday, October 31, 2011 1:55 PM
>>> To: linuxppc-dev@lists.ozlabs.org
>>> Cc: Li Yang-R58472; Gala Kumar-B11780; Jia Hongtao-B38951
>>> Subject: [PATCH 1/2] Unify pci/pcie initialization code
>>>=20
>>> In previous version pci/pcie initialization is in platform code=20
>>> which
>> Initialize PCI bridge base on EP/RC or host/agent settings.
>>> We unified pci/pcie initialization as common APIs named=20
>>> fsl_pci_setup
>> which can be called by platform code.
>>>=20
>>> Signed-off-by: Jia Hongtao <B38951@freescale.com>
>>> Signed-off-by: Li Yang <leoli@freescale.com>
>>> ---
>>> arch/powerpc/platforms/85xx/mpc85xx_ds.c | 30 ++-----------------
>>> arch/powerpc/sysdev/fsl_pci.c | 48
>> ++++++++++++++++++++++++++++++
>>> arch/powerpc/sysdev/fsl_pci.h | 5 +++
>>> 3 files changed, 56 insertions(+), 27 deletions(-)
>>>=20
>>> diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
>> b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
>>> index 10e7db0..7188c0b 100644
>>> --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c
>>> +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c
>>> @@ -157,33 +157,12 @@ extern void __init mpc85xx_smp_init(void);=20
>>> #endif
>> static void __init mpc85xx_ds_setup_arch(void) { -#ifdef CONFIG_PCI
>>> - struct device_node *np;
>>> - struct pci_controller *hose;
>>> -#endif
>>> - dma_addr_t max =3D 0xffffffff;
>>> -
>>> if (ppc_md.progress)
>>> ppc_md.progress("mpc85xx_ds_setup_arch()", 0);
>>>=20
>>> -#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) =3D=3D primary_phb_addr)
>>> - fsl_add_bridge(np, 1);
>>> - else
>>> - fsl_add_bridge(np, 0);
>>> -
>>> - hose =3D pci_find_hose_for_OF_device(np);
>>> - max =3D min(max, hose->dma_window_base_cur +
>>> - hose->dma_window_size);
>>> - }
>>> - }
>>> + fsl_pci_setup(primary_phb_addr);
>>>=20
>>> +#ifdef CONFIG_PCI
>>> ppc_md.pci_exclude_device =3D mpc85xx_exclude_device; #endif
>>>=20
>>> @@ -192,11 +171,8 @@ static void __init mpc85xx_ds_setup_arch(void)
>> #endif
>>>=20
>>> #ifdef CONFIG_SWIOTLB
>>> - if (memblock_end_of_DRAM() > max) {
>>> + if (memblock_end_of_DRAM() > 0xffffffff)
>>> ppc_swiotlb_enable =3D 1;
>>> - set_pci_dma_ops(&swiotlb_dma_ops);
>>> - ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
>>> - }
>>> #endif
>>>=20
>>> printk("MPC85xx DS board from Freescale Semiconductor\n"); diff --
>> git a/arch/powerpc/sysdev/fsl_pci.c b/arch/powerpc/sysdev/fsl_pci.c=20
>> index 80b8b7a..4d4536f 100644
>>> --- a/arch/powerpc/sysdev/fsl_pci.c
>>> +++ b/arch/powerpc/sysdev/fsl_pci.c
>>> @@ -402,6 +402,54 @@ int __init fsl_add_bridge(struct device_node=20
>>> *dev,
>> int is_primary) } #endif /* CONFIG_FSL_SOC_BOOKE || CONFIG_PPC_86xx=20
>> */
>>>=20
>>> +static struct of_device_id pci_ids[] =3D {
>>> + { .compatible =3D "fsl,mpc8540-pci", },
>>> + { .compatible =3D "fsl,mpc8548-pcie", },
>>> + {},
>>> +};
>>> +
>>> +/**
>>> + * fsl_pci_setup - Initialization for PCI
>>> + * @primary_phb_addr: primary bus address
>>> + *
>>> + * Add bridge if pci controller is a host */ void=20
>>> +fsl_pci_setup(int
>>> +primary_phb_addr) {
>>> + struct device_node *np;
>>> + struct pci_controller *hose;
>>> + dma_addr_t min_dma_addr =3D 0xffffffff;
>>> +
>>> + for_each_node_by_type(np, "pci") {
>>> + if (of_match_node(pci_ids, np)) {
>>> + struct resource rsrc;
>>> + of_address_to_resource(np, 0, &rsrc);
>>> + if ((rsrc.start & 0xfffff) =3D=3D primary_phb_addr)
>>> + fsl_add_bridge(np, 1);
>>> + else
>>> + fsl_add_bridge(np, 0);
>>> +
>>> + hose =3D pci_find_hose_for_OF_device(np);
>>> + min_dma_addr =3D min(min_dma_addr,
>>> + hose->dma_window_base_cur
>>> + + hose->dma_window_size);
>>> +
>>> + }
>>> + }
>>> +
>>> +#ifdef CONFIG_SWIOTLB
>>> + /*
>>> + * 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() > min_dma_addr) {
>>> + ppc_swiotlb_enable =3D 1;
>>> + set_pci_dma_ops(&swiotlb_dma_ops);
>>> + ppc_md.pci_dma_dev_setup =3D pci_dma_dev_setup_swiotlb;
>>> + }
>>> +#endif
>>> +}
>>> +
>>> DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_FREESCALE, PCI_ANY_ID,
>> quirk_fsl_pcie_header);
>>>=20
>>> #if defined(CONFIG_PPC_83xx) || defined(CONFIG_PPC_MPC512x) diff=20
>>> --git
>> a/arch/powerpc/sysdev/fsl_pci.h b/arch/powerpc/sysdev/fsl_pci.h index
>> a39ed5c..775ea21 100644
>>> --- a/arch/powerpc/sysdev/fsl_pci.h
>>> +++ b/arch/powerpc/sysdev/fsl_pci.h
>>> @@ -89,6 +89,11 @@ struct ccsr_pci { };
>>>=20
>>> extern int fsl_add_bridge(struct device_node *dev, int is_primary);
>>> +#ifndef CONFIG_PCI
>>> +#define fsl_pci_setup(p)
>>> +#else
>>> +extern void fsl_pci_setup(int primary_phb_addr); #endif
>>> 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);
>>> --
>>> 1.7.5.1
>>>=20
>>>=20
>>> _______________________________________________
>>> Linuxppc-dev mailing list
>>> Linuxppc-dev@lists.ozlabs.org
>>> https://lists.ozlabs.org/listinfo/linuxppc-dev
>>=20
>=20
^ permalink raw reply
* Re: [PATCH 10/10] powerpc/mpic: Add in-core support for cascaded MPICs
From: Moffett, Kyle D @ 2011-12-02 1:48 UTC (permalink / raw)
To: Benjamin Herrenschmidt, michaele@au1.ibm.com, Paul Mackerras; +Cc: linuxppc-dev
In-Reply-To: <1322722788.5215.3.camel@concordia>
Ben,
I fixed the 3 issues that Paul and Michael reported and I can provide them
to you two different ways, however you would prefer. I can also send the
patches via email if that's more convenient.
Option 1: Squashed into the the original patches for bisectability:
git://opensource.exmeritus.com/hww-1u-1a/linux.git mpc85xx/mpic-and-stuff
Option 2: As a fixup patch on the end:
git://opensource.exmeritus.com/hww-1u-1a/linux.git mpc85xx/mpic-and-stuff=
-fixup
You can also use HTTP if you would prefer:
http://opensource.exmeritus.com/git/hww-1u-1a/linux.git
Cheers,
Kyle Moffett
--
Curious about my work on the Debian powerpcspe port?
I'm keeping a blog here: http://pureperl.blogspot.com/
^ permalink raw reply
* Re: [PATCH 3/3] 8250: add workaround for MPC8[356]xx UART break IRQ storm
From: Paul Gortmaker @ 2011-12-02 1:42 UTC (permalink / raw)
To: Alan Cox; +Cc: gregkh, linux-kernel, linux-serial, scottwood, linuxppc-dev
In-Reply-To: <20111202005752.10ce5eea@bob.linux.org.uk>
On Thu, Dec 1, 2011 at 7:57 PM, Alan Cox <alan@linux.intel.com> wrote:
>
>> @@ -1553,7 +1554,15 @@ static void serial8250_handle_port(struct
>> uart_8250_port *up)
>> =A0 =A0 =A0 spin_lock_irqsave(&up->port.lock, flags);
>>
>> - =A0 =A0 status =3D serial_inp(up, UART_LSR);
>> + =A0 =A0 /* Workaround for IRQ storm errata on break with Freescale
>> 16550 */
>> + =A0 =A0 if (UART_BUG_FSLBK & up->port.bugs && up->lsr_last &
>> UART_LSR_BI) {
>> + =A0 =A0 =A0 =A0 =A0 =A0 up->lsr_last &=3D ~UART_LSR_BI;
>> + =A0 =A0 =A0 =A0 =A0 =A0 serial_inp(up, UART_RX);
>> + =A0 =A0 =A0 =A0 =A0 =A0 spin_unlock_irqrestore(&up->port.lock, flags);
>> + =A0 =A0 =A0 =A0 =A0 =A0 return;
>> + =A0 =A0 }
>> +
>> + =A0 =A0 status =3D up->lsr_last =3D serial_inp(up, UART_LSR);
>
> We've now had a recent pile of IRQ function changes adding more quirk
> bits and special casing. This doesn't scale. We either need to make
> handle_port a method the specific drivers can override or you could
> hide the mess in your serial_inp implementation and not touch any core
> code.
To be fair, this one is zero cost for !PPC, but I understand your point,
and the idea of hiding it somehow in serial_inp was something that
never crossed my mind. I'll look into seeing if I can abuse that.
>
> I really don't mind which but I suspect dealing with it in your
> serial_inp handler so that when you read UART_LSR you do the fixup
> might be simplest providing you can just do that.
>
> Sorting out a ->handle_port override is probably ultimately the right
> thing to do and then we can push some of the other funnies out further.
>
> At this point it's becoming increasingly clear that 8250 UART cloners
> are both very bad at cloning the things accurately, and very busy adding
> extra useful features so we need to start to treat 8250.c as a library
> you can wrap.
Sad but true. It is like a time warp back to lib8390.c --- whee.
P.
>
> Alan
> --
> To unsubscribe from this list: send the line "unsubscribe linux-serial" i=
n
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at =A0http://vger.kernel.org/majordomo-info.html
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox