any chance to use a modern linux kernel on Pegasos1 G3 ?
Gerhard Pircher
gerhard_pircher at gmx.net
Wed Mar 16 04:14:48 EST 2011
-------- Original-Nachricht --------
> Datum: Tue, 15 Mar 2011 17:44:49 +0100
> Von: nello martuscielli <ppc.addon at gmail.com>
> An:
> CC: linuxppc-dev at lists.ozlabs.org, "acrux @ cruxppc" <acrux_it at 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 at 2
> I/O addresses:
> 7936 at FE002100
> Memory addresses:
> 127M at 88040000
> 1.3G at 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 at 2
> I/O addresses:
> 8 at FE001038
> 3072 at FE001400
> 48K at FE004000
> Memory addresses:
> 1792 at A0000100
> 1.2G at A0001000
> Prefetchable memory addresses:
> 12M at 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
More information about the Linuxppc-dev
mailing list