* lk2.4.25 compile fails with ELDK3.1
From: Sanjay Bajaj @ 2005-01-24 14:30 UTC (permalink / raw)
To: linuxppc-embedded
Hi! All,
I am new to this list, therefore, please correct my mistakes, if I do =
any.
I downloaded/installed ELDK 3.1 and also unzip lk2.4.25 which came with =
it. I used the default Xilinx ml300 config to compile the lk2.4.25. The =
following error is seen at the end of the compile:
ppc_4xx-objcopy -O elf32-powerpc \
--add-section=3D.image=3D../images/vmlinux.gz \
--set-section-flags=3D.image=3Dcontents,alloc,load,readonly,data =
\
../common/dummy.o image.o
ppc_4xx-ld -T ../ld.script -Ttext 0x00400000 -Bstatic -o zvmlinux head.o =
../common/relocate.o misc-embedded.o .
./common/misc-common.o ../common/string.o ../common/util.o =
../common/serial_stub.o embed_config.o xiic_l.o ../co
mmon/ns16550.o image.o ../lib/zlib.a
ppc_4xx-objcopy -O elf32-powerpc zvmlinux zvmlinux -R .comment -R .stab =
-R .stabstr \
-R .ramdisk -R .sysmap
mv zvmlinux ../images/zImage.
mv zvmlinux ../images/zImage.elf
mv: can't stat source zvmlinux
make[2]: *** [zImage] Error 1
make[2]: Leaving directory `/usr/src/linux-2.4.25/arch/ppc/boot/simple'
make[1]: *** [zImage] Error 2
make[1]: Leaving directory `/usr/src/linux-2.4.25/arch/ppc/boot'
make: *** [zImage] Error 2
I tried the same effort with ELDK 3.0 for lk2.4.24, that works fine. I =
have used different lk versions with ELDK 3.1 with the same result. Any =
ideas/pointers/explanations? They would greatly help.
Thanks,
Sanjay
^ permalink raw reply
* Java/eclipse in PPC
From: David Medina @ 2005-01-24 10:45 UTC (permalink / raw)
To: linuxppc-dev
en_EN: Hello list,
es_ES: Hola lista,
en_EN: I have a Ibook G4 (the last - 23.01.05) where are installed
Debian Ubuntu 4.01 to PPC (logical)
es_ES: Dispongo de un Ibook G4 (el ultimo - 23.01.05) donde corre una
Debian ubuntu 4.01 para ppc (logicamente).
en_EN: I want to install Java and Eclipse to development. The SDK of
Java is "easy" because can be downloaded to www.ibm.com the version
"1.4.2 SR1"
es_ES: Desearia instalar Java y Eclipse para desarrollo. El SDK de
java esta "sencillo" debido a que se puede descargar facilmente de
www.ibm.com la version "1.4.2 SR1"
en_EN: But... How i can install eclipse IDE?=BF
es_ES: Pero... el eclipse como puedo conseguirlo?=BF.
en_EN: I search in Google and have find two solutions:
es_ES: Desde luego no pregunto sin antes ir a San Google, y este me ha
mostrado dos opciones:
en_EN: 1. Compiling since source code:
es_ES: 1. Compilarlo desde las fuentes descrito en:
http://download.eclipse.org/downloads/drops/R-3.0.1-200409161125/srcInclude=
dBuildInstructions.html
en_EN: Compiling only specific parts of eclipse x86
es_ES: 2. Compilar partes expecificas desde la version oficial del
eclipse x86 descrito en:
http://www.rexi.org/linux/eclipse-ppc.html
en_EN: In the first option, this is the output error:
es_ES: En la primera opcion obtengo este error al hacer el "build -os
...."
JVMDG217: Dump Handler is Processing Signal 4 - Please Wait.
JVMDG303: JVM Requesting Java core file
JVMDG304: Java core file written to
/home/frodo/eclipse_src/javacore.20050123.123151.6641.txt
JVMDG215: Dump Handler has Processed Exception Signal 4.
./build: line 60: 6641 Instrucci=F3n ilegal ant -buildfile
build.xml $target -DinstallOs=3D$os -DinstallWs=3D$ws -DinstallArch=3D$arch
-Dbootclasspath=3D$bootclasspath -DjavacTarget=3D1.2
en_EN: In the second option where recompiling SWT don=B4t create the 3
.so (only libswt-gtk-3036-so) and although continue with the process
and eclipse executable was created, where i start eclipse only can see
bootsplash before that the output error was:
es_ES: En la segunda opcion al recompilar SWT no se crean los 3 .so
(solo libswt-gtk-3036.so) y aunque siga con el proceso y se cree el
ejecutable eclipse, al iniciarlo solo se muestra el bootsplash antes
de dar el error:
JVMDG217: Dump Handler is Processing Signal 4 - Please Wait.
JVMDG303: JVM Requesting Java core file
JVMDG304: Java core file written to
/home/frodo/eclipse/javacore.20050123.123452.6704.txt
JVMDG215: Dump Handler has Processed Exception Signal 4.
en_EN: I think that the error is in SDK of ibm.com :(. Can i find the
solution?=BF
es_ES: No tengo muchas esperanzas en que alguien encuentre solucion,
porque creo que el error esta en el SDK de ibm.com.
en_EN: Bye and thanks
es_ES: Agradeceria todo tipo de ayuda. SALUDOS ;)
^ permalink raw reply
* [PATCH] ppc32: Add support for Pegasos machines
From: Benjamin Herrenschmidt @ 2005-01-24 5:48 UTC (permalink / raw)
To: Andrew Morton; +Cc: linuxppc-dev list, Sven Luther
Hi !
This patch, mostly from Sven Luther and reworked by me, adds support for
Pegasos machines to the ppc32 arch. The patch contains all of the arch
code. I'll send separately a few driver changes as well.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Index: linux-work/arch/ppc/syslib/prom_init.c
===================================================================
--- linux-work.orig/arch/ppc/syslib/prom_init.c 2005-01-24 11:42:36.000000000 +1100
+++ linux-work/arch/ppc/syslib/prom_init.c 2005-01-24 15:45:43.000000000 +1100
@@ -810,6 +810,9 @@
char *p, *d;
unsigned long phys;
void *result[3];
+ char model[32];
+ phandle node;
+ int rc;
/* Default */
phys = (unsigned long) &_stext;
@@ -866,11 +869,20 @@
klimit = (char *) (mem - offset);
- /* If we are already running at 0xc0000000, we assume we were
- * loaded by an OF bootloader which did set a BAT for us.
- * This breaks OF translate so we force phys to be 0.
- */
- if (offset == 0) {
+ node = call_prom("finddevice", 1, 1, "/");
+ rc = call_prom("getprop", 4, 1, node, "model", model, sizeof(model));
+ if (rc > 0 && !strncmp (model, "Pegasos", 7)
+ && strncmp (model, "Pegasos2", 8)) {
+ /* Pegasos 1 has a broken translate method in the OF,
+ * and furthermore the BATs are mapped 1:1 so the phys
+ * address calculated above is correct, so let's use
+ * it directly.
+ */
+ } else if (offset == 0) {
+ /* If we are already running at 0xc0000000, we assume we were
+ * loaded by an OF bootloader which did set a BAT for us.
+ * This breaks OF translate so we force phys to be 0.
+ */
prom_print("(already at 0xc0000000) phys=0\n");
phys = 0;
} else if ((int) call_prom("getprop", 4, 1, prom_chosen, "mmu",
Index: linux-work/arch/ppc/platforms/chrp_pci.c
===================================================================
--- linux-work.orig/arch/ppc/platforms/chrp_pci.c 2005-01-24 11:42:35.000000000 +1100
+++ linux-work/arch/ppc/platforms/chrp_pci.c 2005-01-24 15:52:23.000000000 +1100
@@ -97,8 +97,10 @@
rtas_read_config(struct pci_bus *bus, unsigned int devfn, int offset,
int len, u32 *val)
{
+ struct pci_controller *hose = bus->sysdata;
unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
- | ((bus->number & 0xff) << 16);
+ | (((bus->number - hose->first_busno) & 0xff) << 16)
+ | (hose->index << 24);
unsigned long ret = ~0UL;
int rval;
@@ -111,8 +113,10 @@
rtas_write_config(struct pci_bus *bus, unsigned int devfn, int offset,
int len, u32 val)
{
+ struct pci_controller *hose = bus->sysdata;
unsigned long addr = (offset & 0xff) | ((devfn & 0xff) << 8)
- | ((bus->number & 0xff) << 16);
+ | (((bus->number - hose->first_busno) & 0xff) << 16)
+ | (hose->index << 24);
int rval;
rval = call_rtas("write-pci-config", 3, 1, NULL, addr, len, val);
@@ -186,6 +190,22 @@
iounmap(reg);
}
+/* Marvell Discovery II based Pegasos 2 */
+static void __init setup_peg2(struct pci_controller *hose, struct device_node *dev)
+{
+ struct device_node *root = find_path_device("/");
+ struct device_node *rtas;
+
+ rtas = of_find_node_by_name (root, "rtas");
+ if (rtas) {
+ hose->ops = &rtas_pci_ops;
+ } else {
+ printk ("RTAS supporting Pegasos OF not found, please upgrade"
+ " your firmware\n");
+ }
+ pci_assign_all_busses = 1;
+}
+
void __init
chrp_find_bridges(void)
{
@@ -195,7 +215,7 @@
struct pci_controller *hose;
unsigned int *dma;
char *model, *machine;
- int is_longtrail = 0, is_mot = 0;
+ int is_longtrail = 0, is_mot = 0, is_pegasos = 0;
struct device_node *root = find_path_device("/");
/*
@@ -207,6 +227,10 @@
if (machine != NULL) {
is_longtrail = strncmp(machine, "IBM,LongTrail", 13) == 0;
is_mot = strncmp(machine, "MOT", 3) == 0;
+ if (strncmp(machine, "Pegasos2", 8) == 0)
+ is_pegasos = 2;
+ else if (strncmp(machine, "Pegasos", 7) == 0)
+ is_pegasos = 1;
}
for (dev = root->child; dev != NULL; dev = dev->sibling) {
if (dev->type == NULL || strcmp(dev->type, "pci") != 0)
@@ -257,6 +281,10 @@
hose->ops = &gg2_pci_ops;
hose->cfg_data = p;
gg2_pci_config_base = p;
+ } else if (is_pegasos == 1) {
+ setup_indirect_pci(hose, 0xfec00cf8, 0xfee00cfc);
+ } else if (is_pegasos == 2) {
+ setup_peg2(hose, dev);
} else {
printk("No methods for %s (model %s), using RTAS\n",
dev->full_name, model);
@@ -275,5 +303,7 @@
}
}
- ppc_md.pcibios_fixup = chrp_pcibios_fixup;
+ /* Do not fixup interrupts from OF tree on pegasos */
+ if (is_pegasos != 0)
+ ppc_md.pcibios_fixup = chrp_pcibios_fixup;
}
Index: linux-work/arch/ppc/platforms/chrp_time.c
===================================================================
--- linux-work.orig/arch/ppc/platforms/chrp_time.c 2005-01-24 11:42:35.000000000 +1100
+++ linux-work/arch/ppc/platforms/chrp_time.c 2005-01-24 15:43:37.000000000 +1100
@@ -41,6 +41,8 @@
int base;
rtcs = find_compatible_devices("rtc", "pnpPNP,b00");
+ if (rtcs == NULL)
+ rtcs = find_compatible_devices("rtc", "ds1385-rtc");
if (rtcs == NULL || rtcs->addrs == NULL)
return 0;
base = rtcs->addrs[0].address;
Index: linux-work/arch/ppc/platforms/chrp_setup.c
===================================================================
--- linux-work.orig/arch/ppc/platforms/chrp_setup.c 2005-01-24 11:42:35.000000000 +1100
+++ linux-work/arch/ppc/platforms/chrp_setup.c 2005-01-24 16:01:01.000000000 +1100
@@ -37,6 +37,7 @@
#include <linux/seq_file.h>
#include <linux/root_dev.h>
#include <linux/initrd.h>
+#include <linux/module.h>
#include <asm/io.h>
#include <asm/pgtable.h>
@@ -68,6 +69,9 @@
extern unsigned long pmac_find_end_of_memory(void);
extern int of_show_percpuinfo(struct seq_file *, int);
+int _chrp_type;
+EXPORT_SYMBOL(_chrp_type);
+
/*
* XXX this should be in xmon.h, but putting it there means xmon.h
* has to include <linux/interrupt.h> (to get irqreturn_t), which
@@ -214,8 +218,33 @@
}
-void __init
-chrp_setup_arch(void)
+static void __init pegasos_set_l2cr(void)
+{
+ struct device_node *np;
+
+ /* On Pegasos, enable the l2 cache if needed, as the OF forgets it */
+ if (_chrp_type != _CHRP_Pegasos)
+ return;
+
+ /* Enable L2 cache if needed */
+ np = find_type_devices("cpu");
+ if (np != NULL) {
+ unsigned int *l2cr = (unsigned int *)
+ get_property (np, "l2cr", NULL);
+ if (l2cr == NULL) {
+ printk ("Pegasos l2cr : no cpu l2cr property found\n");
+ return;
+ }
+ if (!((*l2cr) & 0x80000000)) {
+ printk ("Pegasos l2cr : L2 cache was not active, "
+ "activating\n");
+ _set_L2CR(0);
+ _set_L2CR((*l2cr) | 0x80000000);
+ }
+ }
+}
+
+void __init chrp_setup_arch(void)
{
struct device_node *device;
@@ -232,6 +261,9 @@
#endif
ROOT_DEV = Root_SDA2; /* sda2 (sda1 is for the kernel) */
+ /* On pegasos, enable the L2 cache if not already done by OF */
+ pegasos_set_l2cr();
+
/* Lookup PCI host bridges */
chrp_find_bridges();
@@ -402,15 +434,17 @@
chrp_find_openpic();
- prom_get_irq_senses(init_senses, NUM_8259_INTERRUPTS, NR_IRQS);
- OpenPIC_InitSenses = init_senses;
- OpenPIC_NumInitSenses = NR_IRQS - NUM_8259_INTERRUPTS;
-
- openpic_init(NUM_8259_INTERRUPTS);
- /* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
- openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade",
- i8259_irq);
+ if (OpenPIC_Addr) {
+ prom_get_irq_senses(init_senses, NUM_8259_INTERRUPTS, NR_IRQS);
+ OpenPIC_InitSenses = init_senses;
+ OpenPIC_NumInitSenses = NR_IRQS - NUM_8259_INTERRUPTS;
+
+ openpic_init(NUM_8259_INTERRUPTS);
+ /* We have a cascade on OpenPIC IRQ 0, Linux IRQ 16 */
+ openpic_hookup_cascade(NUM_8259_INTERRUPTS, "82c59 cascade",
+ i8259_irq);
+ }
for (i = 0; i < NUM_8259_INTERRUPTS; i++)
irq_desc[i].handler = &i8259_pic;
i8259_init(chrp_int_ack);
@@ -450,6 +484,9 @@
chrp_init(unsigned long r3, unsigned long r4, unsigned long r5,
unsigned long r6, unsigned long r7)
{
+ struct device_node *root = find_path_device ("/");
+ char *machine = NULL;
+
#ifdef CONFIG_BLK_DEV_INITRD
/* take care of initrd if we have one */
if ( r6 )
@@ -464,12 +501,29 @@
DMA_MODE_WRITE = 0x48;
isa_io_base = CHRP_ISA_IO_BASE; /* default value */
+ if (root)
+ machine = get_property(root, "model", NULL);
+ if (machine && strncmp(machine, "Pegasos", 7) == 0) {
+ _chrp_type = _CHRP_Pegasos;
+ } else if (machine && strncmp(machine, "IBM", 3) == 0) {
+ _chrp_type = _CHRP_IBM;
+ } else if (machine && strncmp(machine, "MOT", 3) == 0) {
+ _chrp_type = _CHRP_Motorola;
+ } else {
+ /* Let's assume it is an IBM chrp if all else fails */
+ _chrp_type = _CHRP_IBM;
+ }
+
ppc_md.setup_arch = chrp_setup_arch;
ppc_md.show_percpuinfo = of_show_percpuinfo;
ppc_md.show_cpuinfo = chrp_show_cpuinfo;
+
ppc_md.irq_canonicalize = chrp_irq_canonicalize;
ppc_md.init_IRQ = chrp_init_IRQ;
- ppc_md.get_irq = openpic_get_irq;
+ if (_chrp_type == _CHRP_Pegasos)
+ ppc_md.get_irq = i8259_irq;
+ else
+ ppc_md.get_irq = openpic_get_irq;
ppc_md.init = chrp_init2;
Index: linux-work/include/asm-ppc/processor.h
===================================================================
--- linux-work.orig/include/asm-ppc/processor.h 2005-01-24 11:43:03.000000000 +1100
+++ linux-work/include/asm-ppc/processor.h 2005-01-24 15:39:17.000000000 +1100
@@ -34,6 +34,7 @@
/* these are arbitrary */
#define _CHRP_Motorola 0x04 /* motorola chrp, the cobra */
#define _CHRP_IBM 0x05 /* IBM chrp, the longtrail and longtrail 2 */
+#define _CHRP_Pegasos 0x06 /* Genesi/bplan's Pegasos and Pegasos2 */
#define _GLOBAL(n)\
.stabs __stringify(n:F-1),N_FUN,0,0,n;\
@@ -54,6 +55,7 @@
/* what kind of prep workstation we are */
extern int _prep_type;
+extern int _chrp_type;
/*
* This is used to identify the board type from a given PReP board
^ permalink raw reply
* help
From: wayne.chen @ 2005-01-24 4:33 UTC (permalink / raw)
To: linuxppc-embedded
[-- Attachment #1: Type: text/plain, Size: 4 bytes --]
help
[-- Attachment #2: Type: text/html, Size: 47 bytes --]
^ permalink raw reply
* Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs
From: Benjamin Herrenschmidt @ 2005-01-24 1:25 UTC (permalink / raw)
To: Mikael Pettersson; +Cc: linuxppc-dev list, Paul Mackerras, Linux Kernel list
In-Reply-To: <1106441036.5387.41.camel@gaston>
On Sun, 2005-01-23 at 11:43 +1100, Benjamin Herrenschmidt wrote:
> I know about this problem, I'm working on a proper fix. Thanks for your
> report.
Can you send me the PVR value for both of these CPUs
(cat /proc/cpuinfo) ? I can't find right now why they would lock up
unless the default idle loop is _not_ run properly, that is for some
reason, NAP or DOZE mode end up not beeing enabled. Can you send me
your .config as well ?
Finally, try that patch and tell me if it makes a difference. It makes
sure we re-enable interrupts in cpu_idle, and thus should only be a
workaround. I found _one_ actual code path where we fail to re-enable
them, and this is when neither DOZE nor NAP mode is enabled, which
should not happen on any G3 (they should all support DOZE mode), and
might happe non some G4s if the chipset doesn't support NAP or
powersave_nap is set to 0 in proc, but that shouldn't be the case of an
eMac neither...
--- linux-work.orig/arch/ppc/kernel/idle.c 2005-01-24 11:42:35.000000000 +1100
+++ linux-work/arch/ppc/kernel/idle.c 2005-01-24 12:19:41.114353760 +1100
@@ -39,17 +39,15 @@
powersave = ppc_md.power_save;
if (!need_resched()) {
+ local_irq_enable();
if (powersave != NULL)
powersave();
else {
#ifdef CONFIG_SMP
set_thread_flag(TIF_POLLING_NRFLAG);
- local_irq_enable();
while (!need_resched())
barrier();
clear_thread_flag(TIF_POLLING_NRFLAG);
-#else
- local_irq_enable();
#endif
}
}
Ben.
^ permalink raw reply
* [PATCH] ppc32: fix PCI2 IO space mapping on CDS
From: Kumar Gala @ 2005-01-23 18:27 UTC (permalink / raw)
To: akpm; +Cc: linuxppc-embedded
The ppc pci bus and resource fixups will automatically adjust the IO space
mappings by (hose->io_base_virt - isa_io_base). Since we map all of PCI
IO space (PCI1 & PCI2) with a single mapping so it is continguious in
virtual, physical, and PCI IO space the offset will equal
MPC85XX_PCI1_IO_SIZE. There for we needed to reduce the setting by
that amount for everything to work properly on CDS.
Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
---
diff -Nru a/arch/ppc/platforms/85xx/mpc85xx_cds_common.h b/arch/ppc/platforms/85xx/mpc85xx_cds_common.h
--- a/arch/ppc/platforms/85xx/mpc85xx_cds_common.h 2005-01-23 12:22:34 -06:00
+++ b/arch/ppc/platforms/85xx/mpc85xx_cds_common.h 2005-01-23 12:22:34 -06:00
@@ -60,8 +60,10 @@
#define MPC85XX_PCI1_IO_SIZE 0x01000000
/* PCI 2 memory map */
-#define MPC85XX_PCI2_LOWER_IO 0x01000000
-#define MPC85XX_PCI2_UPPER_IO 0x01ffffff
+/* Note: the standard PPC fixups will cause IO space to get bumped by
+ * hose->io_base_virt - isa_io_base => MPC85XX_PCI1_IO_SIZE */
+#define MPC85XX_PCI2_LOWER_IO 0x00000000
+#define MPC85XX_PCI2_UPPER_IO 0x00ffffff
#define MPC85XX_PCI2_LOWER_MEM 0xa0000000
#define MPC85XX_PCI2_UPPER_MEM 0xbfffffff
^ permalink raw reply
* Re: [PATCH] raid6: altivec support
From: Sven Luther @ 2005-01-23 11:17 UTC (permalink / raw)
To: Benjamin Herrenschmidt
Cc: linuxppc-dev list, Linus Torvalds, David Woodhouse,
Linux Kernel list, H. Peter Anvin
In-Reply-To: <1106176939.5294.39.camel@gaston>
On Thu, Jan 20, 2005 at 10:22:18AM +1100, Benjamin Herrenschmidt wrote:
> On Wed, 2005-01-19 at 07:43 +0000, David Woodhouse wrote:
> > On Wed, 2005-01-19 at 15:11 +1100, Benjamin Herrenschmidt wrote:
> > > We should probably "backport" that simplification to ppc32...
> >
> > Yeah.... I'm increasingly tempted to merge ppc32/ppc64 into one arch
> > like mips/parisc/s390. Or would that get vetoed on the basis that we
> > don't have all that horrid non-OF platform support in ppc64 yet, and
> > we're still kidding ourselves that all those embedded vendors will
> > either not notice ppc64 or will use OF?
>
> Oh well... i've though about it too, and decided that I was not ready to
> try it. For one, the problem you mention, with the pile of embedded
> junk. I made the design decision to define an OF client interface as the
> standard & mandatory entry mecanism to the ppc64 kernel (except legacy
> iSeries of course, but I don't want that to multiply). That or the
> kexec-like entrypoint passing a flattened device-tree in.
>
> Also, there are other significant differences in other areas. At this
> point, I think the differences are bigger than the common code.
>
> What would be interesting would be to proceed incrementally, having a
> directory somewhere to put the "common" ppc/ppc64 code, and slowly
> moving things there.
It may be too complicated, but what about letting the commong code in ppc, and
moving the ppc32 code into ppc32 ?
Friendly,
Sven Luther
^ permalink raw reply
* Serial console problem on MPC8272ADS board
From: ning @ 2005-01-23 8:56 UTC (permalink / raw)
To: linuxppc-embedded
Hello to all
I am trying to use ttyS1(SCC4) as Linux serial console
port on on MPC8272ADS board.
but it doesn't work.
My linux kernel is 2.4.22,and using u-boot-1.1.1 as a
bootload.
Linux kernel doesn't output any log information after
u-boot's message:
Uncompressing kernel Image ... OK
If I use ttyS0(SCC1) as a serial console port,Linux will
startup successfully.
CPM UART driver version 0.01
ttyS0 at 0x8000 is a SCC
ttyS1 at 0x8300 is a SCC
...
I found serial console port seems be defined in
/arch/ppc/8260_io/uart.c,
but it doesn't work enen if I change
CONFIG_SERIAL_CONSOLE_PORT to 1 (default:0)
I wonder serial console port only can be set to
ttyS0(SCC1) on MPC8272ADS?
Thanks.
__________________________________
Do You Yahoo!?
Upgrade Your Life
http://bb.yahoo.co.jp/
^ permalink raw reply
* Re: BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs
From: Benjamin Herrenschmidt @ 2005-01-23 0:43 UTC (permalink / raw)
To: Mikael Pettersson; +Cc: linuxppc-dev list, Paul Mackerras, Linux Kernel list
In-Reply-To: <200501221723.j0MHN6eD000684@harpo.it.uu.se>
On Sat, 2005-01-22 at 18:23 +0100, Mikael Pettersson wrote:
> Kernels 2.6.11-rc2 and -rc1 hang during boot on my Beige PowerMac G3.
> The last kernel message on the console is:
>
> adb: starting probe task...
>
> At this point the kernel hangs and doesn't respond to any attempt
> to invoke SYSRQ or XMON. Normally the subsequent messages would be:
>
> adb devices: [2]: 2 5 [3]: 3 1
> ADB keyboard at 2, handler set to 3
> Detected ADB keyboard, type ISO, swapping keys.
> input: ADB keyboard on adb2:2.05/input
> ADB HID on ID 3 not yet registered
> ADB mouse at 3, handler set to 2
> input: ADB mouse on adb3:3.01/input
> adb: finished probe task...
>
> The 2.6.11-rc1 kernel also hung on an eMac (G4). On that machine it
> appears the hang occurred in radeonfb: the screen flickers off/on
> during radeonfb initialisation, but with 2.6.11-rc1 the screen just
> went black. Afterwards the eMac did not respond to any keyboard or
> network activity, so I have to assume it hung hard.
>
> I've traced the cause of the hangs to a local_irq_disable() added to
> init/main.c:rest_init() in 2.6.10-bk12. Removing it eliminates the
> hangs on both the G3 and the eMac:
I know about this problem, I'm working on a proper fix. Thanks for your
report.
Ben.
^ permalink raw reply
* [PATCH] nvram driver as module (was Re: nvram driver not possible as a module)
From: Joerg Dorchain @ 2005-01-22 21:20 UTC (permalink / raw)
To: Guido Guenther, linuxppc-dev list
In-Reply-To: <20050120105026.GG27077@Redstar.dorchain.net>
[-- Attachment #1: Type: text/plain, Size: 3442 bytes --]
On Thu, Jan 20, 2005 at 11:50:26AM +0100, Joerg Dorchain wrote:
> > Does this help:
> [...]
>
> Most likely, if there wasn't a specific reason to use bootmem.
>
> I'll try tonight.
Well, it did not crash. The following does even work ;-)
Signed-off-by: Joerg Dorchain <joerg@dorchain.net>
--- ./include/asm-ppc/system.h.orig 2005-01-22 21:30:19.000000000 +0100
+++ ./include/asm-ppc/system.h 2005-01-22 21:28:48.335018120 +0100
@@ -69,7 +69,7 @@
#define _set_L3CR(val) do { } while(0)
#endif
extern void via_cuda_init(void);
-extern void pmac_nvram_init(void);
+extern int pmac_nvram_init(void);
extern void read_rtc_time(void);
extern void pmac_find_display(void);
extern void giveup_fpu(struct task_struct *);
--- arch/ppc/platforms/pmac_nvram.c.orig 2005-01-22 20:46:21.000000000 +0100
+++ arch/ppc/platforms/pmac_nvram.c 2005-01-22 22:15:10.000000000 +0100
@@ -75,8 +75,8 @@
* Read and write the non-volatile RAM on PowerMacs and CHRP machines.
*/
static int nvram_naddrs;
-static volatile unsigned char *nvram_addr;
-static volatile unsigned char *nvram_data;
+static volatile unsigned char *nvram_addr = NULL;
+static volatile unsigned char *nvram_data = NULL;
static int nvram_mult, is_core_99;
static int core99_bank = 0;
static int nvram_partitions[3];
@@ -88,7 +88,7 @@
static int (*core99_write_bank)(int bank, u8* datas);
static int (*core99_erase_bank)(int bank);
-static char *nvram_image __pmacdata;
+static char *nvram_image __pmacdata = NULL;
static unsigned char __pmac core99_nvram_read_byte(int addr)
@@ -467,7 +467,7 @@
#endif
}
-void __init pmac_nvram_init(void)
+int __init pmac_nvram_init(void)
{
struct device_node *dp;
@@ -476,7 +476,7 @@
dp = find_devices("nvram");
if (dp == NULL) {
printk(KERN_ERR "Can't find NVRAM device\n");
- return;
+ return -ENODEV;
}
nvram_naddrs = dp->n_addrs;
is_core_99 = device_is_compatible(dp, "nvram,flash");
@@ -486,12 +486,16 @@
if (nvram_naddrs < 1) {
printk(KERN_ERR "nvram: no address\n");
- return;
+ return -ENODEV;
}
+#ifdef MODULE
+ nvram_image = kmalloc(NVRAM_SIZE, GFP_KERNEL);
+#else
nvram_image = alloc_bootmem(NVRAM_SIZE);
+#endif
if (nvram_image == NULL) {
printk(KERN_ERR "nvram: can't allocate ram image\n");
- return;
+ return -ENODEV;
}
nvram_data = ioremap(dp->addrs[0].address, NVRAM_SIZE*2);
nvram_naddrs = 1; /* Make sure we get the correct case */
@@ -550,8 +554,10 @@
} else {
printk(KERN_ERR "Don't know how to access NVRAM with %d addresses\n",
nvram_naddrs);
+ return -ENODEV;
}
lookup_partitions();
+ return 0;
}
int __pmac pmac_get_partition(int partition)
@@ -579,6 +585,29 @@
ppc_md.nvram_write_val(xpaddr + offset, data);
}
+static void pmac_nvram_exit(void)
+{
+#ifdef MODULE
+ if (ppc_md.nvram_sync)
+ ppc_md.nvram_sync();
+ if (nvram_addr)
+ iounmap(nvram_addr);
+ if (nvram_data)
+ iounmap(nvram_data);
+ if (nvram_image)
+ kfree(nvram_image);
+ nvram_addr=NULL;
+ nvram_data=NULL;
+ nvram_image=NULL;
+ ppc_md.nvram_read_val = NULL;
+ ppc_md.nvram_write_val = NULL;
+ ppc_md.nvram_sync = NULL;
+#endif
+}
+
+MODULE_LICENSE("GPL");
+module_exit(pmac_nvram_exit);
+module_init(pmac_nvram_init);
EXPORT_SYMBOL(pmac_get_partition);
EXPORT_SYMBOL(pmac_xpram_read);
EXPORT_SYMBOL(pmac_xpram_write);
[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply
* BUG: 2.6.11-rc2 and -rc1 hang during boot on PowerMacs
From: Mikael Pettersson @ 2005-01-22 17:23 UTC (permalink / raw)
To: benh, paulus; +Cc: linuxppc-dev, linux-kernel
Kernels 2.6.11-rc2 and -rc1 hang during boot on my Beige PowerMac G3.
The last kernel message on the console is:
adb: starting probe task...
At this point the kernel hangs and doesn't respond to any attempt
to invoke SYSRQ or XMON. Normally the subsequent messages would be:
adb devices: [2]: 2 5 [3]: 3 1
ADB keyboard at 2, handler set to 3
Detected ADB keyboard, type ISO, swapping keys.
input: ADB keyboard on adb2:2.05/input
ADB HID on ID 3 not yet registered
ADB mouse at 3, handler set to 2
input: ADB mouse on adb3:3.01/input
adb: finished probe task...
The 2.6.11-rc1 kernel also hung on an eMac (G4). On that machine it
appears the hang occurred in radeonfb: the screen flickers off/on
during radeonfb initialisation, but with 2.6.11-rc1 the screen just
went black. Afterwards the eMac did not respond to any keyboard or
network activity, so I have to assume it hung hard.
I've traced the cause of the hangs to a local_irq_disable() added to
init/main.c:rest_init() in 2.6.10-bk12. Removing it eliminates the
hangs on both the G3 and the eMac:
diff -rupN linux-2.6.11-rc2/init/main.c linux-2.6.11-rc2.ppc32-nohang-fix/init/main.c
--- linux-2.6.11-rc2/init/main.c 2005-01-22 12:08:14.000000000 +0100
+++ linux-2.6.11-rc2.ppc32-nohang-fix/init/main.c 2005-01-22 13:55:07.000000000 +0100
@@ -377,7 +377,7 @@ static void noinline rest_init(void)
* Re-enable preemption but disable interrupts to make sure
* we dont get preempted until we schedule() in cpu_idle().
*/
- local_irq_disable();
+// local_irq_disable();
preempt_enable_no_resched();
unlock_kernel();
cpu_idle();
The hangs occured with unpatched vanilla kernel sources, and I used
a simple no-frills .config with SMP and PREEMPT both off.
/Mikael
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.11-rc2
# Sat Jan 22 16:24:36 2005
#
CONFIG_MMU=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_RWSEM_XCHGADD_ALGORITHM=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_HAVE_DEC_LOCK=y
CONFIG_PPC=y
CONFIG_PPC32=y
CONFIG_GENERIC_NVRAM=y
#
# Code maturity level options
#
# CONFIG_EXPERIMENTAL is not set
CONFIG_CLEAN_COMPILE=y
CONFIG_BROKEN_ON_SMP=y
#
# General setup
#
CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_BSD_PROCESS_ACCT is not set
CONFIG_SYSCTL=y
# CONFIG_AUDIT is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_HOTPLUG is not set
# CONFIG_KOBJECT_UEVENT is not set
# CONFIG_IKCONFIG is not set
CONFIG_EMBEDDED=y
CONFIG_KALLSYMS=y
# CONFIG_KALLSYMS_ALL is not set
# CONFIG_KALLSYMS_EXTRA_PASS is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SHMEM=y
CONFIG_CC_ALIGN_FUNCTIONS=0
CONFIG_CC_ALIGN_LABELS=0
CONFIG_CC_ALIGN_LOOPS=0
CONFIG_CC_ALIGN_JUMPS=0
# CONFIG_TINY_SHMEM is not set
#
# Loadable module support
#
# CONFIG_MODULES is not set
#
# Processor
#
CONFIG_6xx=y
# CONFIG_40x is not set
# CONFIG_44x is not set
# CONFIG_POWER3 is not set
# CONFIG_POWER4 is not set
# CONFIG_8xx is not set
# CONFIG_E500 is not set
CONFIG_ALTIVEC=y
# CONFIG_TAU is not set
# CONFIG_CPU_FREQ is not set
# CONFIG_PPC601_SYNC_FIX is not set
CONFIG_PPC_STD_MMU=y
#
# Platform options
#
CONFIG_PPC_MULTIPLATFORM=y
# CONFIG_APUS is not set
# CONFIG_KATANA is not set
# CONFIG_WILLOW is not set
# CONFIG_CPCI690 is not set
# CONFIG_PCORE is not set
# CONFIG_POWERPMC250 is not set
# CONFIG_CHESTNUT is not set
# CONFIG_SPRUCE is not set
# CONFIG_EV64260 is not set
# CONFIG_LOPEC is not set
# CONFIG_MCPN765 is not set
# CONFIG_MVME5100 is not set
# CONFIG_PPLUS is not set
# CONFIG_PRPMC750 is not set
# CONFIG_PRPMC800 is not set
# CONFIG_SANDPOINT is not set
# CONFIG_ADIR is not set
# CONFIG_K2 is not set
# CONFIG_PAL4 is not set
# CONFIG_GEMINI is not set
# CONFIG_EST8260 is not set
# CONFIG_SBC82xx is not set
# CONFIG_SBS8260 is not set
# CONFIG_RPX8260 is not set
# CONFIG_TQM8260 is not set
# CONFIG_ADS8272 is not set
# CONFIG_PQ2FADS is not set
# CONFIG_LITE5200 is not set
CONFIG_PPC_CHRP=y
CONFIG_PPC_PMAC=y
CONFIG_PPC_PREP=y
CONFIG_PPC_OF=y
CONFIG_PPCBUG_NVRAM=y
# CONFIG_SMP is not set
# CONFIG_PREEMPT is not set
# CONFIG_HIGHMEM is not set
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_PROC_DEVICETREE=y
# CONFIG_PREP_RESIDUAL is not set
# CONFIG_CMDLINE_BOOL is not set
#
# Bus options
#
# CONFIG_ISA is not set
CONFIG_GENERIC_ISA_DMA=y
CONFIG_PCI=y
CONFIG_PCI_DOMAINS=y
# CONFIG_PCI_LEGACY_PROC is not set
CONFIG_PCI_NAMES=y
#
# PCCARD (PCMCIA/CardBus) support
#
# CONFIG_PCCARD is not set
#
# PC-card bridges
#
#
# Advanced setup
#
# CONFIG_ADVANCED_OPTIONS is not set
#
# Default settings for advanced configuration options are used
#
CONFIG_HIGHMEM_START=0xfe000000
CONFIG_LOWMEM_SIZE=0x30000000
CONFIG_KERNEL_START=0xc0000000
CONFIG_TASK_SIZE=0x80000000
CONFIG_BOOT_LOAD=0x00800000
#
# Device Drivers
#
#
# Generic Driver Options
#
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_DEBUG_DRIVER is not set
#
# Memory Technology Devices (MTD)
#
# CONFIG_MTD is not set
#
# Parallel port support
#
# CONFIG_PARPORT is not set
#
# Plug and Play support
#
#
# Block devices
#
# CONFIG_BLK_DEV_FD is not set
# CONFIG_MAC_FLOPPY is not set
# CONFIG_BLK_CPQ_DA is not set
# CONFIG_BLK_CPQ_CISS_DA is not set
# CONFIG_BLK_DEV_DAC960 is not set
# CONFIG_BLK_DEV_COW_COMMON is not set
# CONFIG_BLK_DEV_LOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_SX8 is not set
# CONFIG_BLK_DEV_UB is not set
# CONFIG_BLK_DEV_RAM is not set
CONFIG_BLK_DEV_RAM_COUNT=16
CONFIG_INITRAMFS_SOURCE=""
# CONFIG_LBD is not set
# CONFIG_CDROM_PKTCDVD is not set
#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
CONFIG_IOSCHED_AS=y
CONFIG_IOSCHED_DEADLINE=y
CONFIG_IOSCHED_CFQ=y
# CONFIG_ATA_OVER_ETH is not set
#
# ATA/ATAPI/MFM/RLL support
#
CONFIG_IDE=y
CONFIG_BLK_DEV_IDE=y
#
# Please see Documentation/ide.txt for help/info on IDE drives
#
# CONFIG_BLK_DEV_IDE_SATA is not set
CONFIG_BLK_DEV_IDEDISK=y
# CONFIG_IDEDISK_MULTI_MODE is not set
# CONFIG_BLK_DEV_IDECD is not set
# CONFIG_BLK_DEV_IDEFLOPPY is not set
# CONFIG_IDE_TASK_IOCTL is not set
#
# IDE chipset support/bugfixes
#
# CONFIG_IDE_GENERIC is not set
CONFIG_BLK_DEV_IDEPCI=y
# CONFIG_IDEPCI_SHARE_IRQ is not set
# CONFIG_BLK_DEV_OFFBOARD is not set
# CONFIG_BLK_DEV_GENERIC is not set
# CONFIG_BLK_DEV_SL82C105 is not set
CONFIG_BLK_DEV_IDEDMA_PCI=y
# CONFIG_BLK_DEV_IDEDMA_FORCED is not set
# CONFIG_IDEDMA_PCI_AUTO is not set
# CONFIG_BLK_DEV_AEC62XX is not set
# CONFIG_BLK_DEV_ALI15X3 is not set
# CONFIG_BLK_DEV_AMD74XX is not set
# CONFIG_BLK_DEV_CMD64X is not set
# CONFIG_BLK_DEV_TRIFLEX is not set
# CONFIG_BLK_DEV_CY82C693 is not set
# CONFIG_BLK_DEV_CS5530 is not set
# CONFIG_BLK_DEV_HPT34X is not set
# CONFIG_BLK_DEV_HPT366 is not set
# CONFIG_BLK_DEV_SC1200 is not set
# CONFIG_BLK_DEV_PIIX is not set
# CONFIG_BLK_DEV_NS87415 is not set
CONFIG_BLK_DEV_PDC202XX_OLD=y
CONFIG_PDC202XX_BURST=y
# CONFIG_BLK_DEV_PDC202XX_NEW is not set
# CONFIG_BLK_DEV_SVWKS is not set
# CONFIG_BLK_DEV_SIIMAGE is not set
# CONFIG_BLK_DEV_SLC90E66 is not set
# CONFIG_BLK_DEV_TRM290 is not set
# CONFIG_BLK_DEV_VIA82CXXX is not set
# CONFIG_BLK_DEV_IDE_PMAC is not set
# CONFIG_IDE_ARM is not set
CONFIG_BLK_DEV_IDEDMA=y
# CONFIG_IDEDMA_IVB is not set
# CONFIG_IDEDMA_AUTO is not set
# CONFIG_BLK_DEV_HD is not set
#
# SCSI device support
#
# CONFIG_SCSI is not set
#
# Multi-device support (RAID and LVM)
#
# CONFIG_MD is not set
#
# Fusion MPT device support
#
#
# IEEE 1394 (FireWire) support
#
# CONFIG_IEEE1394 is not set
#
# I2O device support
#
# CONFIG_I2O is not set
#
# Macintosh device drivers
#
CONFIG_ADB=y
CONFIG_ADB_CUDA=y
# CONFIG_ADB_PMU is not set
# CONFIG_ADB_MACIO is not set
CONFIG_INPUT_ADBHID=y
# CONFIG_MAC_EMUMOUSEBTN is not set
# CONFIG_ANSLCD is not set
#
# Networking support
#
CONFIG_NET=y
#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETLINK_DEV is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_IP_TCPDIAG is not set
# CONFIG_IP_TCPDIAG_IPV6 is not set
# CONFIG_NETFILTER is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
#
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
# CONFIG_NET_CLS_ROUTE is not set
#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
CONFIG_NETDEVICES=y
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
#
# ARCnet devices
#
# CONFIG_ARCNET is not set
#
# Ethernet (10 or 100Mbit)
#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
# CONFIG_MACE is not set
# CONFIG_BMAC is not set
# CONFIG_HAPPYMEAL is not set
# CONFIG_SUNGEM is not set
# CONFIG_NET_VENDOR_3COM is not set
#
# Tulip family network device support
#
CONFIG_NET_TULIP=y
CONFIG_TULIP=y
# CONFIG_TULIP_MMIO is not set
# CONFIG_TULIP_NAPI is not set
# CONFIG_DE4X5 is not set
# CONFIG_WINBOND_840 is not set
# CONFIG_DM9102 is not set
# CONFIG_HP100 is not set
# CONFIG_NET_PCI is not set
#
# Ethernet (1000 Mbit)
#
# CONFIG_ACENIC is not set
# CONFIG_DL2K is not set
# CONFIG_E1000 is not set
# CONFIG_NS83820 is not set
# CONFIG_HAMACHI is not set
# CONFIG_R8169 is not set
# CONFIG_SK98LIN is not set
# CONFIG_TIGON3 is not set
#
# Ethernet (10000 Mbit)
#
# CONFIG_IXGB is not set
# CONFIG_S2IO is not set
#
# Token Ring devices
#
# CONFIG_TR is not set
#
# Wireless LAN (non-hamradio)
#
# CONFIG_NET_RADIO is not set
#
# Wan interfaces
#
# CONFIG_WAN is not set
# CONFIG_FDDI is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
#
# ISDN subsystem
#
# CONFIG_ISDN is not set
#
# Telephony Support
#
# CONFIG_PHONE is not set
#
# Input device support
#
CONFIG_INPUT=y
#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
# CONFIG_INPUT_TSDEV is not set
# CONFIG_INPUT_EVDEV is not set
# CONFIG_INPUT_EVBUG is not set
#
# Input I/O drivers
#
# CONFIG_GAMEPORT is not set
CONFIG_SOUND_GAMEPORT=y
# CONFIG_SERIO is not set
# CONFIG_SERIO_I8042 is not set
#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set
#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
# CONFIG_SERIAL_NONSTANDARD is not set
#
# Serial drivers
#
# CONFIG_SERIAL_8250 is not set
#
# Non-8250 serial port support
#
# CONFIG_SERIAL_PMACZILOG is not set
CONFIG_UNIX98_PTYS=y
# CONFIG_LEGACY_PTYS is not set
#
# IPMI
#
# CONFIG_IPMI_HANDLER is not set
#
# Watchdog Cards
#
# CONFIG_WATCHDOG is not set
CONFIG_NVRAM=y
CONFIG_GEN_RTC=y
# CONFIG_GEN_RTC_X is not set
# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_APPLICOM is not set
#
# Ftape, the floppy tape device driver
#
# CONFIG_AGP is not set
# CONFIG_DRM is not set
# CONFIG_RAW_DRIVER is not set
#
# I2C support
#
# CONFIG_I2C is not set
#
# Dallas's 1-wire bus
#
# CONFIG_W1 is not set
#
# Misc devices
#
#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
#
# Digital Video Broadcasting Devices
#
# CONFIG_DVB is not set
#
# Graphics support
#
CONFIG_FB=y
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set
# CONFIG_FB_CIRRUS is not set
# CONFIG_FB_PM2 is not set
# CONFIG_FB_CYBER2000 is not set
# CONFIG_FB_OF is not set
# CONFIG_FB_CONTROL is not set
# CONFIG_FB_PLATINUM is not set
# CONFIG_FB_VALKYRIE is not set
# CONFIG_FB_CT65550 is not set
# CONFIG_FB_ASILIANT is not set
# CONFIG_FB_IMSTT is not set
# CONFIG_FB_VGA16 is not set
# CONFIG_FB_RIVA is not set
# CONFIG_FB_MATROX is not set
# CONFIG_FB_RADEON_OLD is not set
# CONFIG_FB_RADEON is not set
# CONFIG_FB_ATY128 is not set
CONFIG_FB_ATY=y
CONFIG_FB_ATY_CT=y
# CONFIG_FB_ATY_GENERIC_LCD is not set
# CONFIG_FB_ATY_XL_INIT is not set
# CONFIG_FB_ATY_GX is not set
# CONFIG_FB_SIS is not set
# CONFIG_FB_NEOMAGIC is not set
# CONFIG_FB_KYRO is not set
# CONFIG_FB_3DFX is not set
# CONFIG_FB_VOODOO1 is not set
# CONFIG_FB_TRIDENT is not set
# CONFIG_FB_VIRTUAL is not set
#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
CONFIG_FONT_8x16=y
#
# Logo configuration
#
# CONFIG_LOGO is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
#
# Sound
#
# CONFIG_SOUND is not set
#
# USB support
#
CONFIG_USB=y
# CONFIG_USB_DEBUG is not set
#
# Miscellaneous USB options
#
# CONFIG_USB_DEVICEFS is not set
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
#
# USB Host Controller Drivers
#
# CONFIG_USB_EHCI_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
# CONFIG_USB_UHCI_HCD is not set
# CONFIG_USB_SL811_HCD is not set
#
# USB Device Class drivers
#
# CONFIG_USB_BLUETOOTH_TTY is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may also be needed; see USB_STORAGE Help for more information
#
# CONFIG_USB_STORAGE is not set
#
# USB Input Devices
#
CONFIG_USB_HID=y
# CONFIG_USB_HIDINPUT is not set
# CONFIG_USB_HIDDEV is not set
# CONFIG_USB_AIPTEK is not set
# CONFIG_USB_WACOM is not set
# CONFIG_USB_KBTAB is not set
# CONFIG_USB_POWERMATE is not set
# CONFIG_USB_MTOUCH is not set
# CONFIG_USB_EGALAX is not set
# CONFIG_USB_XPAD is not set
# CONFIG_USB_ATI_REMOTE is not set
#
# USB Imaging devices
#
#
# USB Multimedia devices
#
# CONFIG_USB_DABUSB is not set
#
# Video4Linux support is needed for USB Multimedia device support
#
#
# USB Network Adapters
#
# CONFIG_USB_KAWETH is not set
# CONFIG_USB_PEGASUS is not set
# CONFIG_USB_USBNET is not set
#
# USB port drivers
#
#
# USB Serial Converter support
#
# CONFIG_USB_SERIAL is not set
#
# USB Miscellaneous drivers
#
# CONFIG_USB_EMI62 is not set
# CONFIG_USB_EMI26 is not set
# CONFIG_USB_LCD is not set
# CONFIG_USB_LED is not set
# CONFIG_USB_CYTHERM is not set
# CONFIG_USB_PHIDGETKIT is not set
# CONFIG_USB_PHIDGETSERVO is not set
# CONFIG_USB_IDMOUSE is not set
#
# USB ATM/DSL drivers
#
#
# USB Gadget Support
#
# CONFIG_USB_GADGET is not set
#
# MMC/SD Card support
#
# CONFIG_MMC is not set
#
# InfiniBand support
#
# CONFIG_INFINIBAND is not set
#
# File systems
#
# CONFIG_EXT2_FS is not set
CONFIG_EXT3_FS=y
# CONFIG_EXT3_FS_XATTR is not set
CONFIG_JBD=y
# CONFIG_JBD_DEBUG is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_XFS_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_ROMFS_FS is not set
# CONFIG_QUOTA is not set
# CONFIG_DNOTIFY is not set
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set
#
# DOS/FAT/NT Filesystems
#
# CONFIG_MSDOS_FS is not set
# CONFIG_VFAT_FS is not set
# CONFIG_NTFS_FS is not set
#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_SYSFS=y
# CONFIG_DEVPTS_FS_XATTR is not set
# CONFIG_TMPFS is not set
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
#
# Miscellaneous filesystems
#
# CONFIG_HFSPLUS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
#
# Network File Systems
#
# CONFIG_NFS_FS is not set
# CONFIG_NFSD is not set
# CONFIG_EXPORTFS is not set
# CONFIG_SMB_FS is not set
# CONFIG_CIFS is not set
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
#
# Partition Types
#
CONFIG_PARTITION_ADVANCED=y
# CONFIG_ACORN_PARTITION is not set
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
CONFIG_MAC_PARTITION=y
# CONFIG_MSDOS_PARTITION is not set
# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
# CONFIG_EFI_PARTITION is not set
#
# Native Language Support
#
# CONFIG_NLS is not set
#
# Library routines
#
# CONFIG_CRC_CCITT is not set
CONFIG_CRC32=y
# CONFIG_LIBCRC32C is not set
#
# Kernel hacking
#
CONFIG_DEBUG_KERNEL=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_SCHEDSTATS is not set
CONFIG_DEBUG_SLAB=y
CONFIG_DEBUG_SPINLOCK=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
# CONFIG_DEBUG_KOBJECT is not set
# CONFIG_DEBUG_INFO is not set
# CONFIG_DEBUG_FS is not set
CONFIG_XMON=y
# CONFIG_BDI_SWITCH is not set
CONFIG_BOOTX_TEXT=y
#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
#
# Cryptographic options
#
# CONFIG_CRYPTO is not set
#
# Hardware crypto devices
#
^ permalink raw reply
* Re: [PATCH] PPC: fix stack alignment for signal handlers
From: Paul Mackerras @ 2005-01-22 9:03 UTC (permalink / raw)
To: Roland McGrath
Cc: Andrew Morton, linuxppc-dev, Linus Torvalds, linux-kernel,
Dave Jones
In-Reply-To: <200501220756.j0M7u06B021617@magilla.sf.frob.com>
Roland McGrath writes:
> For PPC32 signal handlers, while the frame itself was of properly aligned
> size, no alignment of the starting stack pointer was done at all, so that a
> signal handler can still get a misaligned stack pointer if the interrupted
> registers had one, though the kernel isn't gratuitously misaligning good
> ones like it is for PPC64. I added explicit alignment to fix that.
This part is unnecessary, because arch/ppc/kernel/signal.c:do_signal()
already aligns the stack pointer to a 16-byte boundary:
if ((ka.sa.sa_flags & SA_ONSTACK) && current->sas_ss_size
&& !on_sig_stack(regs->gpr[1]))
newsp = current->sas_ss_sp + current->sas_ss_size;
else
newsp = regs->gpr[1];
newsp &= ~0xfUL;
/* Whee! Actually deliver the signal. */
if (ka.sa.sa_flags & SA_SIGINFO)
handle_rt_signal(signr, &ka, &info, oldset, regs, newsp);
else
handle_signal(signr, &ka, &info, oldset, regs, newsp);
The additions to arch/ppc64/kernel/signal32.c are likewise
unnecessary, because do_signal32() also does newsp &= ~0xfUL (in fact
the code there is very similar to the ppc32 code).
You are correct about the 64-bit case though. I thought we had fixed
that but evidently not. Your patch looks fine as far as
arch/ppc64/kernel/signal.c is concerned.
Regards,
Paul.
^ permalink raw reply
* [PATCH] PPC: fix stack alignment for signal handlers
From: Roland McGrath @ 2005-01-22 7:56 UTC (permalink / raw)
To: Paul Mackerras, Linus Torvalds, Andrew Morton
Cc: linuxppc-dev, linux-kernel, Dave Jones
Both the PPC32 and PPC64 ABIs specify that the stack should be kept aligned
to 16 bytes. However, signal handlers on PPC64 are getting run with the
stack misaligned (sp % 16 == 8). This patch fixes that by ensuring that
the signal frame allocated is a multiple of 16 bytes. The PPC32 signal
frame structures are already sized appropriately, though it may be wise to
put an __attribute__ on them as well to make sure they stay that way.
In addition to the PPC64 signal frame itself being of misaligned size, the
explicit alignment of the starting stack pointer is also to 8 instead of
16. I've corrected this as well, so signal frames are aligned even if the
interrupted registers contained a misaligned stack pointer.
For PPC32 signal handlers, while the frame itself was of properly aligned
size, no alignment of the starting stack pointer was done at all, so that a
signal handler can still get a misaligned stack pointer if the interrupted
registers had one, though the kernel isn't gratuitously misaligning good
ones like it is for PPC64. I added explicit alignment to fix that.
Signed-off-by: Roland McGrath <roland@redhat.com>
--- linux-2.6/arch/ppc64/kernel/signal.c
+++ linux-2.6/arch/ppc64/kernel/signal.c
@@ -67,7 +67,7 @@ struct rt_sigframe {
struct siginfo info;
/* 64 bit ABI allows for 288 bytes below sp before decrementing it. */
char abigap[288];
-};
+} __attribute__ ((aligned (16)));
/*
@@ -254,7 +254,7 @@ static inline void __user * get_sigframe
newsp = (current->sas_ss_sp + current->sas_ss_size);
}
- return (void __user *)((newsp - frame_size) & -8ul);
+ return (void __user *)((newsp - frame_size) & -16ul);
}
/*
--- linux-2.6/arch/ppc64/kernel/signal32.c
+++ linux-2.6/arch/ppc64/kernel/signal32.c
@@ -626,9 +626,12 @@ static int handle_rt_signal32(unsigned l
{
struct rt_sigframe32 __user *rt_sf;
struct mcontext32 __user *frame;
- unsigned long origsp = newsp;
+ unsigned long origsp;
compat_sigset_t c_oldset;
+ newsp &= -16UL; /* Force the stack to be aligned properly. */
+ origsp = newsp;
+
/* Set up Signal Frame */
/* Put a Real Time Context onto stack */
newsp -= sizeof(*rt_sf);
@@ -799,7 +802,10 @@ static int handle_signal32(unsigned long
{
struct sigcontext32 __user *sc;
struct sigregs32 __user *frame;
- unsigned long origsp = newsp;
+ unsigned long origsp;
+
+ newsp &= -16UL; /* Force the stack to be aligned properly. */
+ origsp = newsp;
/* Set up Signal Frame */
newsp -= sizeof(struct sigregs32);
--- linux-2.6/arch/ppc/kernel/signal.c
+++ linux-2.6/arch/ppc/kernel/signal.c
@@ -366,7 +366,10 @@ handle_rt_signal(unsigned long sig, stru
{
struct rt_sigframe __user *rt_sf;
struct mcontext __user *frame;
- unsigned long origsp = newsp;
+ unsigned long origsp;
+
+ newsp &= -16UL; /* Force the stack to be aligned properly. */
+ origsp = newsp;
/* Set up Signal Frame */
/* Put a Real Time Context onto stack */
@@ -609,7 +612,10 @@ handle_signal(unsigned long sig, struct
{
struct sigcontext __user *sc;
struct sigregs __user *frame;
- unsigned long origsp = newsp;
+ unsigned long origsp;
+
+ newsp &= -16UL; /* Force the stack to be aligned properly. */
+ origsp = newsp;
/* Set up Signal Frame */
newsp -= sizeof(struct sigregs);
^ permalink raw reply
* Re: [RFC] Option to disable mapping genrtc calls to ppc_md calls
From: Benjamin Herrenschmidt @ 2005-01-21 22:01 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: linuxppc-dev list
In-Reply-To: <Pine.GSO.4.61.0501211013330.1075@waterleaf.sonytel.be>
On Fri, 2005-01-21 at 10:14 +0100, Geert Uytterhoeven wrote:
> On Fri, 21 Jan 2005, Benjamin Herrenschmidt wrote:
> > On Thu, 2005-01-20 at 17:09 -0700, Mark A. Greer wrote:
> > > Yes but as I wrote, I don't have time right now.
> >
> > ... which is exactly my rant ... embedded companies never have time
> > to do the right thing...
>
> Because they have strict (paid for) deadlines, unlike the `we do it for
> fun'-crowd led by Linus ;-)
Then they should include the time of doing stuffs properly in the
initial sizing ...
^ permalink raw reply
* Re: Kernel booting issues on a MPC8270 board
From: Randy Vinson @ 2005-01-21 20:51 UTC (permalink / raw)
To: annamaya; +Cc: linuxppc-embedded
In-Reply-To: <20050121201632.69802.qmail@web53804.mail.yahoo.com>
annamaya wrote:
> I debugged this problem a little more and realized
> that the reset was happenning right after the
> execution of the first kernel instruction at
> 0x0000000c. The instruction at this location was
> "mfpvr r28". I traced this back to a snippet of code
> that was dealing with pipeline depth issues on the
> MPC8260. Once I commented this code out, more
> instructions were issued but the reboot happens
> elsewhere. I am not able to pin-point the location of
> the debug since my BDI fails to catch the reset when
> it happens. Can someone point me to the cause of this
> situation? Thanks in advance.
I'm not familiar with the 8260, but this sounds very much like a
hardware watchdog is expiring somewhere. Check to see if the hardware
has an on-board watchdog (most likely in the timer section of the 8260)
and see if the firmware has armed it. If so, you'll need to add a
snippet of code to disable the watchdog to allow boot-up to complete.
Randy Vinson
^ permalink raw reply
* Re: Kernel booting issues on a MPC8270 board
From: annamaya @ 2005-01-21 21:20 UTC (permalink / raw)
To: annamaya, linuxppc-embedded
In-Reply-To: <20050121201632.69802.qmail@web53804.mail.yahoo.com>
I am sorry but I dont believe the "mfpvr" instruction
has anything to do with it. I thought removing it was
getting rid of the problem but I was wrong. The board
still gets reset when the very first instruction is
executed. I am stumped.
--- annamaya <annamaya@yahoo.com> wrote:
> I debugged this problem a little more and realized
> that the reset was happenning right after the
> execution of the first kernel instruction at
> 0x0000000c. The instruction at this location was
> "mfpvr r28". I traced this back to a snippet of code
> that was dealing with pipeline depth issues on the
> MPC8260. Once I commented this code out, more
> instructions were issued but the reboot happens
> elsewhere. I am not able to pin-point the location
> of
> the debug since my BDI fails to catch the reset when
> it happens. Can someone point me to the cause of
> this
> situation? Thanks in advance.
>
> --- annamaya <annamaya@yahoo.com> wrote:
>
> > I am trying to boot a mvista Linux Kernel ver.
> > 2.4.20
> > on a MPC8270 board. I am using the embed_config()
> > in
> > zImage to pass the board info since the bootloader
> > is
> > not ppcboot. After the message, "Now booting the
> > kernel", the board just reboots, as if someone
> > yanked
> > the reset line. I have BDI hooked up but it
> doesn't
> > seem to catch the reset point in the code. And I
> am
> > unable to trace this to anything in the code. Any
> > suggestions? Thanks in advance.
> >
> >
> >
> > __________________________________
> > Do you Yahoo!?
> > Yahoo! Mail - now with 250MB free storage. Learn
> > more.
> > http://info.mail.yahoo.com/mail_250
> > _______________________________________________
> > Linuxppc-embedded mailing list
> > Linuxppc-embedded@ozlabs.org
> >
>
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
> >
>
>
>
>
> __________________________________
> Do you Yahoo!?
> Read only the mail you want - Yahoo! Mail SpamGuard.
>
> http://promotions.yahoo.com/new_mail
>
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
^ permalink raw reply
* Re: Kernel booting issues on a MPC8270 board
From: annamaya @ 2005-01-21 20:53 UTC (permalink / raw)
To: Randy Vinson; +Cc: linuxppc-embedded
In-Reply-To: <41F16B51.1000003@mvista.com>
Thanks for the input Randy. I thought of this too
early on and verified that the Software Watchdog timer
was disabled. And as I pointed it, it first happened
on the very first instruction even when I was single
stepping on the debugger.
--- Randy Vinson <rvinson@mvista.com> wrote:
> annamaya wrote:
> > I debugged this problem a little more and realized
> > that the reset was happenning right after the
> > execution of the first kernel instruction at
> > 0x0000000c. The instruction at this location was
> > "mfpvr r28". I traced this back to a snippet of
> code
> > that was dealing with pipeline depth issues on the
> > MPC8260. Once I commented this code out, more
> > instructions were issued but the reboot happens
> > elsewhere. I am not able to pin-point the location
> of
> > the debug since my BDI fails to catch the reset
> when
> > it happens. Can someone point me to the cause of
> this
> > situation? Thanks in advance.
>
> I'm not familiar with the 8260, but this sounds very
> much like a
> hardware watchdog is expiring somewhere. Check to
> see if the hardware
> has an on-board watchdog (most likely in the timer
> section of the 8260)
> and see if the firmware has armed it. If so, you'll
> need to add a
> snippet of code to disable the watchdog to allow
> boot-up to complete.
>
> Randy Vinson
>
__________________________________
Do you Yahoo!?
The all-new My Yahoo! - Get yours free!
http://my.yahoo.com
^ permalink raw reply
* Re: Kernel booting issues on a MPC8270 board
From: annamaya @ 2005-01-21 20:16 UTC (permalink / raw)
To: annamaya, linuxppc-embedded
In-Reply-To: <20050120224936.33390.qmail@web53804.mail.yahoo.com>
I debugged this problem a little more and realized
that the reset was happenning right after the
execution of the first kernel instruction at
0x0000000c. The instruction at this location was
"mfpvr r28". I traced this back to a snippet of code
that was dealing with pipeline depth issues on the
MPC8260. Once I commented this code out, more
instructions were issued but the reboot happens
elsewhere. I am not able to pin-point the location of
the debug since my BDI fails to catch the reset when
it happens. Can someone point me to the cause of this
situation? Thanks in advance.
--- annamaya <annamaya@yahoo.com> wrote:
> I am trying to boot a mvista Linux Kernel ver.
> 2.4.20
> on a MPC8270 board. I am using the embed_config()
> in
> zImage to pass the board info since the bootloader
> is
> not ppcboot. After the message, "Now booting the
> kernel", the board just reboots, as if someone
> yanked
> the reset line. I have BDI hooked up but it doesn't
> seem to catch the reset point in the code. And I am
> unable to trace this to anything in the code. Any
> suggestions? Thanks in advance.
>
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! Mail - now with 250MB free storage. Learn
> more.
> http://info.mail.yahoo.com/mail_250
> _______________________________________________
> Linuxppc-embedded mailing list
> Linuxppc-embedded@ozlabs.org
>
https://ozlabs.org/mailman/listinfo/linuxppc-embedded
>
__________________________________
Do you Yahoo!?
Read only the mail you want - Yahoo! Mail SpamGuard.
http://promotions.yahoo.com/new_mail
^ permalink raw reply
* Re: ppc440 and ebony support in 2.6
From: Eugene Surovegin @ 2005-01-21 20:08 UTC (permalink / raw)
To: Shawn Jin; +Cc: linuxppc
In-Reply-To: <c3d0340b050121112736cccbf5@mail.gmail.com>
On Fri, Jan 21, 2005 at 11:27:27AM -0800, Shawn Jin wrote:
> I'd like to know which kernel version and source tree is the best
> choice to be ported into our embedded system with ppc440x5. The
> evaluation board used is Ebony.
>
> Is there enough support for ppc440 in 2.6 release?
Yes, PPC440 is supported in 2.6.
Use kernel.org tree.
--
Eugene
^ permalink raw reply
* ppc440 and ebony support in 2.6
From: Shawn Jin @ 2005-01-21 19:27 UTC (permalink / raw)
To: linuxppc
Hi,
I'd like to know which kernel version and source tree is the best
choice to be ported into our embedded system with ppc440x5. The
evaluation board used is Ebony.
Is there enough support for ppc440 in 2.6 release?
There are a bunch of sources releasing 2.6 ppc. For example,
- official release from www.kernel.org
- source.mvista.com
- DENX's release
- www.ppckernel.org
Which one is the best choice to start with ppc440 and Ebony? Please
shed some light to this issue.
Thanks a lot.
-Shawn.
^ permalink raw reply
* ppc32: allow usage of gen550 on platforms that do not define SERIAL_PORT_DFNS
From: Kumar Gala @ 2005-01-21 16:47 UTC (permalink / raw)
To: akpm; +Cc: linuxppc-embedded
Allows a platform to initialize serial_state completely from gen550_init
and no longer requires it to define SERIAL_PORT_DFNS.
Signed-off-by: Kumar Gala <kumar.gala@freescale.com>
---
diff -Nru a/arch/ppc/syslib/gen550_dbg.c b/arch/ppc/syslib/gen550_dbg.c
--- a/arch/ppc/syslib/gen550_dbg.c 2005-01-21 10:43:30 -06:00
+++ b/arch/ppc/syslib/gen550_dbg.c 2005-01-21 10:43:30 -06:00
@@ -29,6 +29,11 @@
#define SERIAL_BAUD 9600
+/* SERIAL_PORT_DFNS is defined in <asm/serial.h> */
+#ifndef SERIAL_PORT_DFNS
+#define SERIAL_PORT_DFNS
+#endif
+
static struct serial_state rs_table[RS_TABLE_SIZE] = {
SERIAL_PORT_DFNS /* defined in <asm/serial.h> */
};
@@ -154,6 +159,7 @@
rs_table[i].port = serial_req->iobase;
rs_table[i].iomem_base = serial_req->membase;
rs_table[i].iomem_reg_shift = serial_req->regshift;
+ rs_table[i].baud_base = serial_req->uartclk ? serial_req->uartclk / 16 : BASE_BAUD;
}
#ifdef CONFIG_SERIAL_TEXT_DEBUG
^ permalink raw reply
* Re: [RFC] Option to disable mapping genrtc calls to ppc_md calls
From: Corey Minyard @ 2005-01-21 14:39 UTC (permalink / raw)
To: Geert Uytterhoeven; +Cc: linuxppc-dev list
In-Reply-To: <Pine.GSO.4.61.0501211013330.1075@waterleaf.sonytel.be>
Geert Uytterhoeven wrote:
>On Fri, 21 Jan 2005, Benjamin Herrenschmidt wrote:
>
>
>>On Thu, 2005-01-20 at 17:09 -0700, Mark A. Greer wrote:
>>
>>
>>>Yes but as I wrote, I don't have time right now.
>>>
>>>
>> ... which is exactly my rant ... embedded companies never have time
>>to do the right thing...
>>
>>
>
>Because they have strict (paid for) deadlines, unlike the `we do it for
>fun'-crowd led by Linus ;-)
>
>
[begin soapbox]
I disagree with this attitude. I believe there is a balance to be
struck between doing
things right and meeting deadlines, and I believe the embedded hardware
companies
are way too far off on the meeting deadlines side of things. From what
I can tell, they
tend to be penny-wise and pound-foolish. (They do things that save them
a little bit
of money in one area and cost a lot in another area.)
This is, of course, a generalization. I see some good things happening
in some areas.
IMHO, this is due to the fact that these are mostly run by hardware
engineers
and software is an afterthought. For instance, I have dealt with one
company who
used a non-standard interface where a standard one was available. They
probably
saved 1-2 dollars per board. This change probably cost $150,000 in
software costs.
There is no way they will sell close to 75,000 boards. Penny-wise,
pound-foolish.
And they have 10-20 years of support for this non-standard hack.
The more consistent you make things, the lower the software cost. When
you follow
standards, it lowers software costs. Software is *expensive* to create;
the more
you can reuse what is there, the better off you are. It seems to me
that the PPC
hardware vendors have spent 10s if not 100s of millions of dollars in
software costs
that were really kind of pointless. If things were more standard and
consistent,
things would work just as well (and almost certainly better) and the
cost would be
much lower. Then us software folks who work on embedded linux could work on
making things better instead of chasing new board ports.
As I mentioned, there is a balance here. If you are selling, 10 million
units, saving a
dollar per unit at the cost of $150,000 in software is well worth it.
If you can get a 50%
improvement in performance, it's probably worth it. But to gain no
benefit, cost
yourself a lot of money, and reduce your reliability (new software is
generally less
reliable than old), well, that sounds silly to me.
[end soapbox]
After saying this, I don't know how to fix the PPC world. But every
customization
that requires software changes is one more reason for people to use x86
(where
new boards "just work" but can be tuned for performance) and not PPC (where
new boards are pain and suffering to get working and there is no time to
tune them
for performance).
-Corey
^ permalink raw reply
* Re: Classic PPC specific ASM (CONFIG_6XX)
From: Geert Uytterhoeven @ 2005-01-21 12:36 UTC (permalink / raw)
To: Jerome Glisse; +Cc: Linux/PPC Development, Tom Rini, linuxppc64-dev
In-Reply-To: <4240b916050121032230b9c5dc@mail.gmail.com>
On Fri, 21 Jan 2005, Jerome Glisse wrote:
> On Thu, 20 Jan 2005 16:14:42 -0700, Tom Rini <trini@kernel.crashing.org> wrote:
> > On Wed, Jan 12, 2005 at 08:10:58PM +0100, Jerome Glisse wrote:
> >
> > > Wanted to know what is going on with CONFIG_6xx? You will use
> > > my patch or do you have another better way ? :)
> >
> > Can you resend it please?
> >
>
> Here is another version (the previous one used ifdef to comment
> out function call but i read somewhere that this doesn't follow
> codeguideline). Anyway i think that my patch is a ugly hack.
>
> Signed-off-by: Jerome Glisse <j.glisse@gmail.com>
>
> best,
> Jerome Glisse
>
>
>
> diff -Naur linux/arch/ppc/boot/simple/misc-prep.c
> linux-2.6.10/arch/ppc/boot/simple/misc-prep.c
> --- linux/arch/ppc/boot/simple/misc-prep.c 2004-12-24 22:33:51.000000000 +0100
> +++ linux-2.6.10/arch/ppc/boot/simple/misc-prep.c 2005-01-21
> 12:09:50.976426672 +0100
> @@ -34,7 +34,11 @@
> extern void serial_fixups(void);
> extern struct bi_record *decompress_kernel(unsigned long load_addr,
> int num_words, unsigned long cksum);
> +#ifdef CONFIG_6XX
> extern void disable_6xx_mmu(void);
> +#elif
> +void disable_6xx_mmu(void) {}
^^^^^^^^^^^^^^^^^^^^
You better make this one static inline.
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
^ permalink raw reply
* Re: USB Host Controller driver for ISP1362
From: Wolfgang Denk @ 2005-01-21 11:26 UTC (permalink / raw)
To: s.deepak; +Cc: linuxppc-embedded
In-Reply-To: <015801c4ff80$68185b60$4000a8c0@DeepakS>
In message <015801c4ff80$68185b60$4000a8c0@DeepakS> you wrote:
>
> Anyone had worked on porting non PCI ISP 1362 host controller drivers to
> PPC processor?
Why don't you just search the last 3 or 4 days of the mailing list
archive? See for example
http://ozlabs.org/pipermail/linuxppc-embedded/2005-January/001074.html
> Please provide me with some suggestions on this.
Read the netiquette? Read the mailing list archives before posting?
Don't post HTML to mailing lists?
Best regards,
Wolfgang Denk
--
Software Engineering: Embedded and Realtime Systems, Embedded Linux
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd@denx.de
"Remember, Information is not knowledge; Knowledge is not Wisdom;
Wisdom is not truth; Truth is not beauty; Beauty is not love; Love is
not music; Music is the best." - Frank Zappa
^ permalink raw reply
* Re: Classic PPC specific ASM (CONFIG_6XX)
From: Jerome Glisse @ 2005-01-21 11:22 UTC (permalink / raw)
To: Tom Rini; +Cc: linuxppc64-dev, linuxppc-dev
In-Reply-To: <20050120231442.GE2626@smtp.west.cox.net>
On Thu, 20 Jan 2005 16:14:42 -0700, Tom Rini <trini@kernel.crashing.org> wrote:
> On Wed, Jan 12, 2005 at 08:10:58PM +0100, Jerome Glisse wrote:
>
> > Wanted to know what is going on with CONFIG_6xx? You will use
> > my patch or do you have another better way ? :)
>
> Can you resend it please?
>
Here is another version (the previous one used ifdef to comment
out function call but i read somewhere that this doesn't follow
codeguideline). Anyway i think that my patch is a ugly hack.
Signed-off-by: Jerome Glisse <j.glisse@gmail.com>
best,
Jerome Glisse
diff -Naur linux/arch/ppc/boot/simple/misc-prep.c
linux-2.6.10/arch/ppc/boot/simple/misc-prep.c
--- linux/arch/ppc/boot/simple/misc-prep.c 2004-12-24 22:33:51.000000000 +0100
+++ linux-2.6.10/arch/ppc/boot/simple/misc-prep.c 2005-01-21
12:09:50.976426672 +0100
@@ -34,7 +34,11 @@
extern void serial_fixups(void);
extern struct bi_record *decompress_kernel(unsigned long load_addr,
int num_words, unsigned long cksum);
+#ifdef CONFIG_6XX
extern void disable_6xx_mmu(void);
+#elif
+void disable_6xx_mmu(void) {}
+#endif
extern unsigned long mpc10x_get_mem_size(void);
static void
^ 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