Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 23 Sep 2012 16:44:11 +0400
From:      Aleksey Fedorov <aleksey.v.fedorov@gmail.com>
To:        Rafal Jaworowski <raj@semihalf.com>
Cc:        freebsd-ppc@freebsd.org
Subject:   Re: FreeBSD on e500mc 36bit physical addressing
Message-ID:  <CABCAhMFuTd8KmPjDNbvPnFWooS3AWZ_YYR2sWJVezPNHT6BboA@mail.gmail.com>
In-Reply-To: <39077F2D-B518-4EE4-ACE0-E8EB804E245B@semihalf.com>
References:  <CABCAhMFSDay5CdFYn3sJJ3H9h-hTxa7hWN-Vuc4_y6ZFFEtB=w@mail.gmail.com> <39077F2D-B518-4EE4-ACE0-E8EB804E245B@semihalf.com>

next in thread | previous in thread | raw e-mail | index | archive | help
> Hi Aleksey,
> FreeBSD/powerpc does not support the 36-bit physical addr space for Book-E PowerPC as of yet.
>
> Rafal
>

I make some changes to start in 36-bit mode. Now the problem is
'interrupts' property handling during fdtbus probing.
I use dts file from linux. Does FreeBSD require some special dts file
layout compared to linux?
Debug output from kenel boot:

GDB: no debug ports present
KDB: debugger backends: ddb
KDB: current backend: ddb
mmu_booke_bootstrap: entered
 msgbufp at 0xc0751000 end = 0xc0769000
 ptbl_bufs at 0xc0769000 end = 0xc076f000
 kernel ptbls: 224
 kernel pdir at 0xc076f000 end = 0xc092f000
 data_end: 0xc092f000
 updated data_end: 0xc1000000
zero_page_va = 0xc1000000
zero_page_idle_va = 0xc1001000
copy_page_src_va = 0xc1002000
copy_page_dst_va = 0xc1003000
ptbl_buf_pool_vabase = 0xc1004000 end = 0xc2004000
kernel image and allocated data:
 kernload    = 0x0000000001000000
 kernstart   = 0xc0000000
 kernsize    = 0x01000000
processing avail regions:
 0000000000100000-0000000100000000 -> 0000000000100000-0000000001000000 = f00000
 0000000002000000-0000000100000000 ->
0000000002000000-0000000100000000 = fe000000
fill in phys_avail:
 region: 0x0000000000100000 - 0x0000000000ffc000 (0x0000000000efc000)
 region: 0x0000000002000000 - 0x0000000100000000 (0x00000000fe000000)
Maxmem = 0x0000000000100000
phys_avail_count = 2
physsz = 0x00000000feefc000 physmem = 1044220 (0x000feefc)
kernel_pmap = 0xc06820ac
kptbl_min = 768, kernel_ptbls = 224
kernel pdir range: 0xc0000000 - 0xf7ffffff
kstack_sz = 0x00004000
kstack0_phys at 0x0000000000ffc000 - 0x0000000001000000
kstack0 at 0xc2005000 - 0xc2009000
virtual_avail = c2009000
virtual_end   = f8000000
mmu_booke_bootstrap: exit
L1 D-cache enabled
L1 I-cache enabled
powerpc_smp_first_cpu: cpuid 0
powerpc_smp_next_cpu: cpuid 1
powerpc_smp_next_cpu: cpuid 2
powerpc_smp_next_cpu: cpuid 3
powerpc_smp_next_cpu: cpuid 4
powerpc_smp_next_cpu: cpuid 5
powerpc_smp_next_cpu: cpuid 6
powerpc_smp_next_cpu: cpuid 7
Copyright (c) 1992-2012 The FreeBSD Project.
Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
        The Regents of the University of California. All rights reserved.
FreeBSD is a registered trademark of The FreeBSD Foundation.
FreeBSD 10.0-CURRENT #134 r239991=44c70c6-dirty: Sun Sep 23 16:18:53 MSK 2012
    avf@avfh:/usr/obj/powerpc.powerpc/root/freebsd-head/sys/N710 powerpc
WARNING: WITNESS option enabled, expect reduced performance.
Preloaded elf kernel "/boot/kernel/kernel" at 0xc074f000.
cpu0: Freescale e500mc core revision 2.0
cpu0: Features 84000000<PPC32,MMU>
cpu0: HID0 c0800080<EMCP,b1,DOZE,EN_MAS7_UPDATE>
real memory  = 4277125120 (4078 MB)
Physical memory chunk(s):
0x0000000000100000 - 0x0000000000ffbfff, 15712256 bytes (3836 pages)
0x0000000002000000 - 0x00000000fafc4fff, 4177285120 bytes (1019845 pages)
avail memory = 4189515776 (3995 MB)
powerpc_smp_first_cpu: cpuid 0
powerpc_smp_next_cpu: cpuid 1
powerpc_smp_next_cpu: cpuid 2
powerpc_smp_next_cpu: cpuid 3
powerpc_smp_next_cpu: cpuid 4
powerpc_smp_next_cpu: cpuid 5
powerpc_smp_next_cpu: cpuid 6
powerpc_smp_next_cpu: cpuid 7
FreeBSD/SMP: Multiprocessor System Detected: 8 CPUs
cpu0: dev=0 (BSP)
cpu1: dev=1
cpu2: dev=2
cpu3: dev=3
cpu4: dev=4
cpu5: dev=5
cpu6: dev=6
cpu7: dev=7
random device not loaded; using insecure entropy
random: <entropy source, Software, Yarrow>
nfslock: pseudo-device
crypto: <crypto core>
mem: <memory>
openfirm: <Open Firmware control device>
null: <null device, zero device>
nexus0
fdtbus_identify(): fdtbus_identify(driver=0xc04d717c, parent=0xc9e74400)
fdtbus_probe(): fdtbus_probe(dev=0xc9d24a00); pass=2147483647
fdtbus_probe(): fdtbus_probe(dev=0xc9d24a00); pass=2147483647
fdtbus0: <FDT main bus> on nexus0
newbus_device_from_fdt_node(): skipping instantiating FDT device='chosen'
newbus_device_from_fdt_node(): skipping instantiating FDT device='aliases'
fdt_reg_to_rl64(): addr_cells = 2, size_cells = 2
fdt_reg_to_rl64(): tuples = -1, tuple size = 16
newbus_device_create(): added child name='cpus', node=0x1070
newbus_device_from_fdt_node(): skipping instantiating FDT device='memory'
fdt_reg_to_rl64(): addr_cells = 2, size_cells = 2
fdt_reg_to_rl64(): tuples = -1, tuple size = 16
newbus_device_create(): added child name='bman-portals@ff4000000', node=0x1650
fdt_reg_to_rl64(): addr_cells = 2, size_cells = 2
fdt_reg_to_rl64(): tuples = -1, tuple size = 16
newbus_device_create(): added child name='qman-portals@ff4200000', node=0x1da4
fdt_reg_to_rl64(): addr_cells = 2, size_cells = 2
fdt_reg_to_rl64(): tuples = 1, tuple size = 16
fdt_reg_to_rl64(): reg addr start = c00089b0, end = c00099af, count = 1000
newbus_device_create(): added child name='soc@ffe000000', node=0x30b8
fdt_reg_to_rl64(): addr_cells = 2, size_cells = 2
fdt_reg_to_rl64(): tuples = 1, tuple size = 16
fdt_reg_to_rl64(): reg addr start = c012c9b0, end = c012d9af, count = 1000
fdt_intr_to_rl(): no intr-parent phandle
fdt_intr_to_rl(): no intr-cells defined, defaulting to 1
fdt_intr_to_rl(): intr_num=4
unknown: could not process 'interrupts' property for 'localbus@ffe124000'

fatal kernel trap:

   exception       = 0x2 (data storage interrupt)
   virtual address = 0x00000004
   srr0            = 0xc00a7a54
   srr1            = 0x00001200
   curthread       = 0xc0504bd0
          pid = 0, comm = kernel

[ thread pid 0 tid 100000 ]
Stopped at      newbus_device_destroy+0x2c:     lwz     r3, r3, 0x4
db>


localbus@ffe124000 node in dts file is:

        localbus@ffe124000 {
                compatible = "fsl,p4080-elbc", "fsl,elbc", "simple-bus";
                reg = <0xf 0xfe124000 0 0x1000>;
                interrupts = <25 2 0 0>;
                interrupt-parent = <&mpic>;
                #address-cells = <2>;
                #size-cells = <1>;

                ranges = <0 0 0xf 0xe8000000 0x08000000
                          3 0 0xf 0xffdf0000 0x00008000>;

                flash@0,0 {
                        compatible = "cfi-flash";
                        reg = <0 0 0x08000000>;
                        bank-width = <2>;
                        device-width = <2>;
                };

                board-control@3,0 {
                        compatible = "fsl,n710cpld";
                        reg = <3 0 0x20>;
                };
        };


mpic node is:

               mpic: pic@40000 {
                        clock-frequency = <0>;
                        interrupt-controller;
                        #address-cells = <0>;
                        #interrupt-cells = <4>;
                        reg = <0x40000 0x40000>;
                        compatible = "chrp,open-pic";
                        device_type = "open-pic";
                        big-endian;
                        message@1400 {
                                compatible = "fsl,mpic-msg";
                                interrupts = <
                                        0xb0 2 0 0
                                        0xb1 2 0 0
                                        0xb2 2 0 0
                                        0xb3 2 0 0>;
                        };
                };


Why fdt_intr_to_rl() can't find interrupt-parent mpic?



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CABCAhMFuTd8KmPjDNbvPnFWooS3AWZ_YYR2sWJVezPNHT6BboA>