-------- Original-Nachricht -------- > Datum: Tue, 15 Mar 2011 17:44:49 +0100 > Von: nello martuscielli <ppc.ad...@gmail.com> > An: > CC: linuxppc-dev@lists.ozlabs.org, "acrux @ cruxppc" <acrux...@libero.it> > Betreff: Re: any chance to use a modern linux kernel on Pegasos1 G3 ?
> ok, it seems that no one is interested to fix Pegasos1 G3 600MHz > support. > > But if someone is capable (i don't have this skill) here what it > happens reading from serial debug console untill it freezes with > linux-2.6.36.4 > > Pegasos Boot Strap (c) 2002 bplan GmbH > Running on CPU PVR:00083311 > PLL setting : 00000001 > Enable L1 ICache... > Done. > Setting ROM Defaults... > Done. > Configuring SDRAM... > 08000000 > 10000000 > Delaying...Done. > RAMSIZE = 18000000 > 00000004 > Reading W83194 : 00FFFFFFFFFF0000 > Done. > Setting Front Side Bus to 100MHz... > Done. > Releasing IDE reset ... > Done. > Configuring Legacy Devices > Initializing KBD... > Done. > PLL setting : 00000003 > 10000000 > Done. > FFFFFFFF > BIOS: Stage 2 entered arg(FFFC0000,00000000,18000000) > BIOS: MachineInfo at 0FFFFE68 > BIOS: set MemPool limit to BAT size (old=18000000 new=10000000) > BIOS: 0F6FFFE8 bytes added to mempool > LoadFromRFS: starting > LoadFromRFS: lib module 00 has abs load adr at 00C00000 > CopyModule: start > CopyModule: load address : 00C00000 > CopyModule: copy module to ram...done > ModuleCopy: expanding... done > LoadFromRFS: 00000001 modules out of 00000001 loaded > InitLib: start > InitLib: call module as OF > allocated g_e=0xFD00008 (len=19232) > install_root: pkg=0xFD53B90 > after init_environ e=0xFD00008 > running nvramrc... > after running nvramrc > no/bad nvramrc - performing default startup script > Bus addresses: > 253@2 > I/O addresses: > 7936@FE002100 > Memory addresses: > 127M@88040000 > 1.3G@98000000 > Prefetchable memory addresses: > install_ata_disk_driver: reg=0x1000 > init_drive: reset controller 0x1000/0x100E > init_drive: allow 4-bits for heads > init_drive: select drive 0 > init_drive: seccnt=0x1 sector=0x1 cyl_lo=0x0 cyl_hi=0x0 > init_drive: error=0x1 status=0x50 status2=0x50 > init_drive: identify drive: atapi=0 > install_ata_disk_driver: return no error (0) > install_ata_disk_driver: reg=0x1000 > init_drive: allow 4-bits for heads > init_drive: select drive 1 > init_drive: seccnt=0x1 sector=0x1 cyl_lo=0x14 cyl_hi=0xEB > init_drive: error=0x1 status=0x0 status2=0x0 > init_drive: identify drive: atapi=1 > atapi_cmd: cmdlen=12 > atapi_cmd: inlen=8 len=65534 > install_ata_disk_driver: return no error (0) > install_ata_disk_driver: reg=0x1010 > init_drive: reset controller 0x1010/0x101E > init_drive: allow 4-bits for heads > init_drive: select drive 0 > init_drive: seccnt=0x20 sector=0x20 cyl_lo=0x20 cyl_hi=0x20 > init_drive: error=0x20 status=0x20 status2=0x20 > ATA-wait-ready: timeout: status=0x20 > init_drive: failed > install_ata_disk_driver: reg=0x1010 > init_drive: allow 4-bits for heads > init_drive: select drive 1 > init_drive: seccnt=0x30 sector=0x30 cyl_lo=0x30 cyl_hi=0x30 > init_drive: error=0x30 status=0x30 status2=0x30 > ATA-wait-ready: timeout: status=0x30 > init_drive: failed > Bus addresses: > 254@2 > I/O addresses: > 8@FE001038 > 3072@FE001400 > 48K@FE004000 > Memory addresses: > 1792@A0000100 > 1.2G@A0001000 > Prefetchable memory addresses: > 12M@FD400000 > F_INSTALL_CONSOLE: BEGIN > F_INSTALL_CONSOLE: ALIASING SCREEN > F_INSTALL_CONSOLE: ALIASING KBD > EMULATION INT HANDLER ENTERED WITH: > INT NO: 15 > > EAX=0003 EBX=1111 ECX=2222 EDX=3333 ESP=0000 EBP=5555 ESI=6666 EDI=7777 > AX=4E08 BX=C505 CX=0003 DX=202A SP=6CAA BP=5555 SI=5CF9 DI=7777 > DS=C000 ES=BAD0 SS=C000 CS=F000 IP=FE15 NV UP -- PL ZR NA PE NC > CS:IP = F4 C558 C000 0244 3000 0000 01B4 AC63 0200 > UNHANDLED INT 10 FUNCTION 0007 WITHIN EMULATION > F_INSTALL_CONSOLE: END > auto-booting... > do_load: dev="" dlen=0 args="" alen=0 > do_load: alstr="" > do_load: path doesn't start with / > do_load: <diag-device> == <eth> > do_load: no args..use the default > do_load: <diag-file> == <diag> > try_load: dev="eth" dlen=3 args="diag" alen=4 > entering main read/eval loop... > > [...] > atapi_cmd: cmdlen=12 > atapi_cmd: inlen=2048 len=2048 > iso_walk: read: name="zImage.chrp" extent=0x44FD size=0x337272 ret=no > error > iso9660: return R_END > file_system: return end (-4089) > disk-label return len=3371634 ret=end (-4089) > ata_disk_close > disk-label close: > checking exec type Fcode > fcode_is_exec: load=0x400000 loadlen=3371634 > checking exec type Forth > checking exec type ELF > f_go: > checking exec type Fcode > fcode_is_exec: load=0x400000 loadlen=3371634 > checking exec type Forth > checking exec type ELF > alloc_aligned: a 0xFD548E8 align 0xFD5491C size 0xFD54918 addr 0xFD54914 > alloc_constrained: min 0x0, max 0xFFFFFFFF, align 0x1000, mask > 0xFFFFFFFF, size 0x332000, addr 0x300000 > alloc_constrained: acells 0x1 scells 0x1 t1 0xC t2 0xFD5490C u1 > 0xFD54910 u2 0xFD54914 u3 0xFD54918 > alloc_constrained: allocator_block 0xFD54930, next 0x0 addr 0x300000 > size 0xFD00000 > alloc_constrained: fsblock 0x0 > alloc_constrained: addr[] 0x300000 > alloc_constrained: bsize[] 0xFD00000 > alloc_constrained: passed min check > alloc_constrained: addr 0x300000, align 0xFFF, off 0x69696969 > sum 0x0 > alloc_constrained: passed align check > alloc_constrained: passed max check > alloc_constrained: passed mask check > alloc_constrained: passed full size check > alloc_constrained: passed size check > alloc_aligned: a 0xFD548E8 align 0xFD5491C size 0xFD54918 addr 0xFD54914 > alloc_constrained: min 0x0, max 0xFFFFFFFF, align 0x1000, mask > 0xFFFFFFFF, size 0x6883C0, addr 0x632000 > alloc_constrained: acells 0x1 scells 0x1 t1 0xC t2 0xFD5490C u1 > 0xFD54910 u2 0xFD54914 u3 0xFD54918 > alloc_constrained: allocator_block 0xFD54930, next 0x0 addr 0x632000 > size 0xF9CE000 > alloc_constrained: fsblock 0x0 > alloc_constrained: addr[] 0x632000 > alloc_constrained: bsize[] 0xF9CE000 > alloc_constrained: passed min check > alloc_constrained: addr 0x632000, align 0xFFF, off 0x0 > sum 0x0 > alloc_constrained: passed align check > alloc_constrained: passed max check > alloc_constrained: passed mask check > alloc_constrained: passed full size check > alloc_constrained: passed size check > > > > and here giving a try with a smaller (1.9MB) linux boot kernel > [...] > atapi_cmd: cmdlen=12 > atapi_cmd: inlen=2048 len=2048 > iso_walk: read: name="zImage.chrp" extent=0x3CC size=0x1D8A1A ret=no error > iso9660: return R_END > file_system: return end (-4089) > disk-label return len=1935898 ret=end (-4089) > ata_disk_close > disk-label close: > checking exec type Fcode > fcode_is_exec: load=0x400000 loadlen=1935898 > checking exec type Forth > checking exec type ELF > f_go: > checking exec type Fcode > fcode_is_exec: load=0x400000 loadlen=1935898 > checking exec type Forth > checking exec type ELF > alloc_aligned: a 0xFD548E8 align 0xFD5491C size 0xFD54918 addr 0xFD54914 > alloc_constrained: min 0x0, max 0xFFFFFFFF, align 0x1000, mask > 0xFFFFFFFF, size 0x1D3000, addr 0x300000 > alloc_constrained: acells 0x1 scells 0x1 t1 0xC t2 0xFD5490C u1 > 0xFD54910 u2 0xFD54914 u3 0xFD54918 > alloc_constrained: allocator_block 0xFD54930, next 0x0 addr 0x300000 > size 0xFD00000 > alloc_constrained: fsblock 0x0 > alloc_constrained: addr[] 0x300000 > alloc_constrained: bsize[] 0xFD00000 > alloc_constrained: passed min check > alloc_constrained: addr 0x300000, align 0xFFF, off 0x69696969 > sum 0x0 > alloc_constrained: passed align check > alloc_constrained: passed max check > alloc_constrained: passed mask check > alloc_constrained: passed full size check > alloc_constrained: passed size check > alloc_aligned: a 0xFD548E8 align 0xFD5491C size 0xFD54918 addr 0xFD54914 > alloc_constrained: min 0x0, max 0xFFFFFFFF, align 0x1000, mask > 0xFFFFFFFF, size 0x3AC9A0, addr 0x4D3000 > alloc_constrained: acells 0x1 scells 0x1 t1 0xC t2 0xFD5490C u1 > 0xFD54910 u2 0xFD54914 u3 0xFD54918 > alloc_constrained: allocator_block 0xFD54930, next 0x0 addr 0x4D3000 > size 0xFB2D000 > alloc_constrained: fsblock 0x0 > alloc_constrained: addr[] 0x4D3000 > alloc_constrained: bsize[] 0xFB2D000 > alloc_constrained: passed min check > alloc_constrained: addr 0x4D3000, align 0xFFF, off 0x0 > sum 0x0 > alloc_constrained: passed align check > alloc_constrained: passed max check > alloc_constrained: passed mask check > alloc_constrained: passed full size check > alloc_constrained: passed size check I don't know much about the Pegasos OF, but did you give GRUB2 for OF a try? Maybe it can boot a newer Linux kernel, if it is not a device tree related problem. On the other side you mentioned this workaround in arch/ppc/kernel/prom_init.c to me some time ago: unsigned long __init prom_init(int r3, int r4, prom_entry pp) : > 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 (call_prom("getprop", 4, 1, prom_chosen, "mmu", > &prom_mmu, sizeof(prom_mmu)) <= 0) { > prom_print(" no MMU found\n"); > } else if (call_prom_ret("call-method", 4, 4, result, "translate", > prom_mmu, &_stext, 1) != 0) { > prom_print(" (translate failed)\n"); > } else { > /* We assume the phys. address size is 3 cells */ > phys = result[2]; > } Can anybody comment, if this "broken translate method in the OF" would still be needed for arch/powerpc? Gerhard -- Schon gehört? GMX hat einen genialen Phishing-Filter in die Toolbar eingebaut! http://www.gmx.net/de/go/toolbar _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev