Message ID | 20081205165504.GA30966@oksana.dev.rtsoft.ru (mailing list archive) |
---|---|
State | Accepted, archived |
Commit | 20cfb41ba82d9dfc7f09451ab26e826a68a4c896 |
Delegated to: | Kumar Gala |
Headers | show |
On Dec 5, 2008, at 10:55 AM, Anton Vorontsov wrote: > This patch implements traditional way of !QE case handling. > Alternative version is coming (w/o ifdefs in the board files). > > p.s. I don't know if it is 2.6.28 material... > > arch/powerpc/platforms/83xx/mpc832x_rdb.c | 3 ++- > arch/powerpc/platforms/83xx/mpc836x_rdk.c | 6 ++++-- > 2 files changed, 6 insertions(+), 3 deletions(-) this doesn't seem critical right now so I'd say we wait for .29 - k
Kumar Gala wrote:
> this doesn't seem critical right now so I'd say we wait for .29
I agree. None of the defconfigs or default behavior expose this bug. I don't
expect anyone to actually turn off the QE in a real-world situation.
On Dec 5, 2008, at 10:55 AM, Anton Vorontsov wrote: > Some 83xx boards were not ready for the optional QUICC Engine support. > > This patch fixes following build errors: > > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb308): undefined reference to `par_io_data_set' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb334): undefined reference to `par_io_data_set' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb408): undefined reference to `qe_ic_get_high_irq' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb478): undefined reference to `qe_ic_get_low_irq' > arch/powerpc/platforms/built-in.o: In function `mpc832x_spi_init': > mpc832x_rdb.c:(.init.text+0x574c): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x5768): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x5784): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x57a0): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x57bc): undefined reference to > `par_io_config_pin' > arch/powerpc/platforms/built-in.o:mpc832x_rdb.c:(.init.text+0x57d8): > more undefined references to `par_io_config_pin' follow > arch/powerpc/platforms/built-in.o: In function `mpc836x_rdk_init_IRQ': > mpc836x_rdk.c:(.init.text+0x5e84): undefined reference to `qe_ic_init' > arch/powerpc/platforms/built-in.o: In function > `mpc836x_rdk_setup_arch': > mpc836x_rdk.c:(.init.text+0x5f10): undefined reference to `qe_reset' > make: *** [.tmp_vmlinux1] Error 1 > > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> > --- > > This patch implements traditional way of !QE case handling. > Alternative version is coming (w/o ifdefs in the board files). > > p.s. I don't know if it is 2.6.28 material... what's the state of this patch vs the alternate version? - k
On Tue, Dec 16, 2008 at 12:18:07PM -0600, Kumar Gala wrote: [..] >> This patch implements traditional way of !QE case handling. >> Alternative version is coming (w/o ifdefs in the board files). >> >> p.s. I don't know if it is 2.6.28 material... > > what's the state of this patch vs the alternate version? Pros of the alternative version: - No #ifdefs in .c files. Cons of the alternative version: - For this code (assuming QE=n): if ((np = of_find_node_by_name(NULL, "par_io")) != NULL) par_io_init(np); GCC can still issue the of_find_node_by_name() call. (I wonder if there is any way to tell gcc that particular function doesn't produce any side-effects so that gcc can optimize it away too). It's up to you to decide which version you want to merge.
Anton Vorontsov wrote: > GCC can still issue the of_find_node_by_name() call. (I wonder if > there is any way to tell gcc that particular function doesn't > produce any side-effects so that gcc can optimize it away too). __attribute__((pure)) -Scott
On Tue, Dec 16, 2008 at 01:00:13PM -0600, Scott Wood wrote: > Anton Vorontsov wrote: >> GCC can still issue the of_find_node_by_name() call. (I wonder if >> there is any way to tell gcc that particular function doesn't >> produce any side-effects so that gcc can optimize it away too). > > __attribute__((pure)) Ah, thanks! But I forgot that of_find_node_by_name() and friends aren't actually "pure", they're getting the node. :-(
On Dec 16, 2008, at 1:14 PM, Anton Vorontsov wrote: > On Tue, Dec 16, 2008 at 01:00:13PM -0600, Scott Wood wrote: >> Anton Vorontsov wrote: >>> GCC can still issue the of_find_node_by_name() call. (I wonder if >>> there is any way to tell gcc that particular function doesn't >>> produce any side-effects so that gcc can optimize it away too). >> >> __attribute__((pure)) > > Ah, thanks! > > But I forgot that of_find_node_by_name() and friends aren't > actually "pure", they're getting the node. :-( Looking at include/linux/compiler-gcc.h I'm guessing the proper way to use it is __pure & inclusion of compiler.h - k
On Fri, Dec 05, 2008 at 07:55:04PM +0300, Anton Vorontsov wrote: > Some 83xx boards were not ready for the optional QUICC Engine support. > > This patch fixes following build errors: > > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb308): undefined reference to `par_io_data_set' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb334): undefined reference to `par_io_data_set' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb408): undefined reference to `qe_ic_get_high_irq' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb478): undefined reference to `qe_ic_get_low_irq' > arch/powerpc/platforms/built-in.o: In function `mpc832x_spi_init': > mpc832x_rdb.c:(.init.text+0x574c): undefined reference to `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x5768): undefined reference to `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x5784): undefined reference to `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x57a0): undefined reference to `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x57bc): undefined reference to `par_io_config_pin' > arch/powerpc/platforms/built-in.o:mpc832x_rdb.c:(.init.text+0x57d8): more undefined references to `par_io_config_pin' follow > arch/powerpc/platforms/built-in.o: In function `mpc836x_rdk_init_IRQ': > mpc836x_rdk.c:(.init.text+0x5e84): undefined reference to `qe_ic_init' > arch/powerpc/platforms/built-in.o: In function `mpc836x_rdk_setup_arch': > mpc836x_rdk.c:(.init.text+0x5f10): undefined reference to `qe_reset' > make: *** [.tmp_vmlinux1] Error 1 > > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> > --- Kumar, After all I think we should apply this version. Soon I'll send cleanup patches for all QE boards to remove need for most #ifdefs. But so far let's be consistent and do what other boards are doing. Thanks, > This patch implements traditional way of !QE case handling. > Alternative version is coming (w/o ifdefs in the board files). > > p.s. I don't know if it is 2.6.28 material... > > arch/powerpc/platforms/83xx/mpc832x_rdb.c | 3 ++- > arch/powerpc/platforms/83xx/mpc836x_rdk.c | 6 ++++-- > 2 files changed, 6 insertions(+), 3 deletions(-) > > diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c > index 0300268..7e20e91 100644 > --- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c > +++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c > @@ -38,6 +38,7 @@ > #define DBG(fmt...) > #endif > > +#ifdef CONFIG_QUICC_ENGINE > static void mpc83xx_spi_activate_cs(u8 cs, u8 polarity) > { > pr_debug("%s %d %d\n", __func__, cs, polarity); > @@ -77,8 +78,8 @@ static int __init mpc832x_spi_init(void) > mpc83xx_spi_activate_cs, > mpc83xx_spi_deactivate_cs); > } > - > machine_device_initcall(mpc832x_rdb, mpc832x_spi_init); > +#endif /* CONFIG_QUICC_ENGINE */ > > /* ************************************************************************ > * > diff --git a/arch/powerpc/platforms/83xx/mpc836x_rdk.c b/arch/powerpc/platforms/83xx/mpc836x_rdk.c > index a5273bb..b0090aa 100644 > --- a/arch/powerpc/platforms/83xx/mpc836x_rdk.c > +++ b/arch/powerpc/platforms/83xx/mpc836x_rdk.c > @@ -51,8 +51,9 @@ static void __init mpc836x_rdk_setup_arch(void) > for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") > mpc83xx_add_bridge(np); > #endif > - > +#ifdef CONFIG_QUICC_ENGINE > qe_reset(); > +#endif > } > > static void __init mpc836x_rdk_init_IRQ(void) > @@ -71,13 +72,14 @@ static void __init mpc836x_rdk_init_IRQ(void) > */ > ipic_set_default_priority(); > of_node_put(np); > - > +#ifdef CONFIG_QUICC_ENGINE > np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); > if (!np) > return; > > qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic); > of_node_put(np); > +#endif > } > > /* > -- > 1.5.6.5 > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@ozlabs.org > https://ozlabs.org/mailman/listinfo/linuxppc-dev
On Dec 5, 2008, at 10:55 AM, Anton Vorontsov wrote: > Some 83xx boards were not ready for the optional QUICC Engine support. > > This patch fixes following build errors: > > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb308): undefined reference to `par_io_data_set' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb334): undefined reference to `par_io_data_set' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb408): undefined reference to `qe_ic_get_high_irq' > arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': > (.text+0xb478): undefined reference to `qe_ic_get_low_irq' > arch/powerpc/platforms/built-in.o: In function `mpc832x_spi_init': > mpc832x_rdb.c:(.init.text+0x574c): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x5768): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x5784): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x57a0): undefined reference to > `par_io_config_pin' > mpc832x_rdb.c:(.init.text+0x57bc): undefined reference to > `par_io_config_pin' > arch/powerpc/platforms/built-in.o:mpc832x_rdb.c:(.init.text+0x57d8): > more undefined references to `par_io_config_pin' follow > arch/powerpc/platforms/built-in.o: In function `mpc836x_rdk_init_IRQ': > mpc836x_rdk.c:(.init.text+0x5e84): undefined reference to `qe_ic_init' > arch/powerpc/platforms/built-in.o: In function > `mpc836x_rdk_setup_arch': > mpc836x_rdk.c:(.init.text+0x5f10): undefined reference to `qe_reset' > make: *** [.tmp_vmlinux1] Error 1 > > Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> > --- > > This patch implements traditional way of !QE case handling. > Alternative version is coming (w/o ifdefs in the board files). > > p.s. I don't know if it is 2.6.28 material... > > arch/powerpc/platforms/83xx/mpc832x_rdb.c | 3 ++- > arch/powerpc/platforms/83xx/mpc836x_rdk.c | 6 ++++-- > 2 files changed, 6 insertions(+), 3 deletions(-) applied to next - k
diff --git a/arch/powerpc/platforms/83xx/mpc832x_rdb.c b/arch/powerpc/platforms/83xx/mpc832x_rdb.c index 0300268..7e20e91 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_rdb.c +++ b/arch/powerpc/platforms/83xx/mpc832x_rdb.c @@ -38,6 +38,7 @@ #define DBG(fmt...) #endif +#ifdef CONFIG_QUICC_ENGINE static void mpc83xx_spi_activate_cs(u8 cs, u8 polarity) { pr_debug("%s %d %d\n", __func__, cs, polarity); @@ -77,8 +78,8 @@ static int __init mpc832x_spi_init(void) mpc83xx_spi_activate_cs, mpc83xx_spi_deactivate_cs); } - machine_device_initcall(mpc832x_rdb, mpc832x_spi_init); +#endif /* CONFIG_QUICC_ENGINE */ /* ************************************************************************ * diff --git a/arch/powerpc/platforms/83xx/mpc836x_rdk.c b/arch/powerpc/platforms/83xx/mpc836x_rdk.c index a5273bb..b0090aa 100644 --- a/arch/powerpc/platforms/83xx/mpc836x_rdk.c +++ b/arch/powerpc/platforms/83xx/mpc836x_rdk.c @@ -51,8 +51,9 @@ static void __init mpc836x_rdk_setup_arch(void) for_each_compatible_node(np, "pci", "fsl,mpc8349-pci") mpc83xx_add_bridge(np); #endif - +#ifdef CONFIG_QUICC_ENGINE qe_reset(); +#endif } static void __init mpc836x_rdk_init_IRQ(void) @@ -71,13 +72,14 @@ static void __init mpc836x_rdk_init_IRQ(void) */ ipic_set_default_priority(); of_node_put(np); - +#ifdef CONFIG_QUICC_ENGINE np = of_find_compatible_node(NULL, NULL, "fsl,qe-ic"); if (!np) return; qe_ic_init(np, 0, qe_ic_cascade_low_ipic, qe_ic_cascade_high_ipic); of_node_put(np); +#endif } /*
Some 83xx boards were not ready for the optional QUICC Engine support. This patch fixes following build errors: arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': (.text+0xb308): undefined reference to `par_io_data_set' arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': (.text+0xb334): undefined reference to `par_io_data_set' arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': (.text+0xb408): undefined reference to `qe_ic_get_high_irq' arch/powerpc/platforms/built-in.o: In function `flush_disable_caches': (.text+0xb478): undefined reference to `qe_ic_get_low_irq' arch/powerpc/platforms/built-in.o: In function `mpc832x_spi_init': mpc832x_rdb.c:(.init.text+0x574c): undefined reference to `par_io_config_pin' mpc832x_rdb.c:(.init.text+0x5768): undefined reference to `par_io_config_pin' mpc832x_rdb.c:(.init.text+0x5784): undefined reference to `par_io_config_pin' mpc832x_rdb.c:(.init.text+0x57a0): undefined reference to `par_io_config_pin' mpc832x_rdb.c:(.init.text+0x57bc): undefined reference to `par_io_config_pin' arch/powerpc/platforms/built-in.o:mpc832x_rdb.c:(.init.text+0x57d8): more undefined references to `par_io_config_pin' follow arch/powerpc/platforms/built-in.o: In function `mpc836x_rdk_init_IRQ': mpc836x_rdk.c:(.init.text+0x5e84): undefined reference to `qe_ic_init' arch/powerpc/platforms/built-in.o: In function `mpc836x_rdk_setup_arch': mpc836x_rdk.c:(.init.text+0x5f10): undefined reference to `qe_reset' make: *** [.tmp_vmlinux1] Error 1 Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> --- This patch implements traditional way of !QE case handling. Alternative version is coming (w/o ifdefs in the board files). p.s. I don't know if it is 2.6.28 material... arch/powerpc/platforms/83xx/mpc832x_rdb.c | 3 ++- arch/powerpc/platforms/83xx/mpc836x_rdk.c | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-)