Comments (62)
Updated to use /system-serial instead of separate /system-serial-high and /system-serial-low (although I haven't changed the .dts/.dtb).
from linux.
Updated to move the mac address to /axi/usb/hub/ethernet/mac-address.
I've been advised that putting a mac-address at / is going to be a problem we don't want to re-open. Putting it at this location exactly matches the physical hardware devices.
from linux.
You did earlier say: "Everything's be32 so it should be simple to overwrite default values as required. There's already a placeholder for the memory"
But I think the bootargs breaks that. Looks like I have to decompile then compile the dtb file. Unless I've missed something?
from linux.
I was sure I had seen padding in one of the .dts for this but I can't find one now, so you may need to do that. I'm not sure exactly how the format works but you might be able to append another string to the end.
from linux.
What happens if you say:
chosen { bootargs = " "; };
(for a sufficiently large number of spaces)?
from linux.
Problem solved!
Put this in arch/arm/mach-bcm2708/Makefile.boot:
DTC_FLAGS ?= -p 4096
from linux.
Great. I'll start work on this issue.
from linux.
Okay, I've had a go at filling in the required device tree fields. Let me know if there are any problems:
https://dl.dropbox.com/u/3669512/start.elf
from linux.
Nearly. I haven't spent much time on this yet, but with disable_cmdline_tags=1 I get no command-line options in /chosen - or at least my kernel doesn't pick them up. With disable_cmdline_tags=0 it uses ATAGs I think, and the kernel doesn't boot because the device tree isn't there.
from linux.
Can you try making space in the:
chosen { bootargs = " "; };
in bcm2835.dtsi. I will only fill in up to the original length of the bootargs string.
from linux.
Oh it doesn't use the padding space left at the end of the dtb? I'll see if I can't give it a go in a few, but may not be able to until about 20:30.
from linux.
From my limited understanding, the data in the bootargs is just contained inline with the devtree tags, so it's not possible to store that in the padding space without recompiling a new devtree.
It does seem to work if you store a string of, say, 1024 spaces in the bootargs, and I overwrite that with real command line (leaving length as 1024 and spaces intact).
I've updated the start.elf to not store the '\0' inside string, which I think is more correct (it makes is_printable_string return true).
P.S. I'm expecting you to define disable_cmdline_tags=1.
from linux.
Trouble with the big empty string full of spaces is I doubt we'd ever be able to get a device tree with that into mainline. How does fdtput do it? Is http://git.jdl.com/gitweb/?p=dtc.git any help?
from linux.
Looking at code, it won't
* TODO: add options to: * - expand fdt if value doesn't fit
and:
./fdtput -ts bcm2835.dtb /chosen bootargs "root=nfs" Error at 'bootargs': FDT_ERR_NOSPACE
If the big empty string is a blocker for upstreaming, then I'm sure we'll find a solution.
However it may be a temporary solution for the current developement.
from linux.
Right, with the extra padding that lp0 has added when generating the .dtb (DTC_FLAGS ?= -p 4096
) those should never trigger. The padding is added specifically so that fdtput can add in the command-line args without having to expand the fdt. Consider my code for building the .dtb files manually, below:
dtc -O dtb -o bcm2835-rpi-b.dtb -p 128 ~/Projects/linux-lp0/arch/arm/boot/dts/bcm2835-rpi-b.dts fdtput -t x bcm2835-rpi-b.dtb /memory reg 0 0e000000 fdtput bcm2835-rpi-b.dtb / system-rev 2 fdtput -t x bcm2835-rpi-b.dtb / system-serial 0 12345678 fdtput -t hhx bcm2835-rpi-b.dtb / mac-address 11 22 33 44 55 66 fdtput bcm2835-rpi-b.dtb /display width 656 fdtput bcm2835-rpi-b.dtb /display height 416 fdtput bcm2835-rpi-b.dtb /display depth 16 fdtput -t x bcm2835-rpi-b.dtb /axi/dma channels 3c fdtput -t s bcm2835-rpi-b.dtb /chosen bootargs "console=ttyAMA0,115200 debug earlyprintk root=/dev/mmcblk0p2 rootwait"
This works, including the bootargs bit at the bottom, because of the added 128 bytes of padding when I called dtc
.
from linux.
It works ok for me with the padding:
$ fdtput -t s arch/arm/boot/bcm2835-rpi-b.dtb /chosen bootargs "test"
Here's a sample .dtb with 4KB of padding: http://s85.org/EkRirRIb:raw
from linux.
Okay, I'll look more closely at how fdtput does it.
from linux.
The memory value should be changed to reserve the GPU's memory area instead of pretending it doesn't exist:
On 01/06/12 02:47, Stephen Warren wrote:
On 05/30/2012 07:25 PM, Stephen Warren wrote:
On 05/30/2012 05:12 AM, Simon Arlott wrote:
On Wed, May 30, 2012 04:45, Stephen Warren wrote:
...
These are not required. If not using the future bootloader, ftdput can be
used to set up those values. Memory is not fixed (256MB below is invalid as
the GPU requires some memory).One thing I forgot to mention on the memory front. It's typical for the
memory property to represent the entire physical RAM on the board, even
if something else is using parts of it, so Linux can't touch it. You can
prevent Linux from using parts of the memory with the /memreserve/
syntax in the .dts file, which the bootloader should be able to add or
adjust as appropriate based on system configuration.
from linux.
libfdt has functions to delete and add reserved memory but fdtput has no functionality to use them.
128MB:
(echo -ne "\x00\x00\x00\x00\x08\x00\x00\x00"; echo -e "\x00\x00\x00\x00\x08\x00\x00\x00") | \ dd conv=notrunc bs=8 count=2 seek=5 of=arch/arm/boot/bcm2835-rpi-b.dtb
192MB:
(echo -ne "\x00\x00\x00\x00\x0c\x00\x00\x00"; echo -e "\x00\x00\x00\x00\x04\x00\x00\x00") | \ dd conv=notrunc bs=8 count=2 seek=5 of=arch/arm/boot/bcm2835-rpi-b.dtb
224MB:
(echo -ne "\x00\x00\x00\x00\x0e\x00\x00\x00"; echo -e "\x00\x00\x00\x00\x02\x00\x00\x00") | \ dd conv=notrunc bs=8 count=2 seek=5 of=arch/arm/boot/bcm2835-rpi-b.dtb
from linux.
Could you explain the purpose of the the DMA channels mask?
Channels 11 and 12 generate unexpected interrupts constantly.
Channels 13 and 14 haven't got interrupts.
Channel 15 never generates any interrupts (and it has an AXI ID of 0).
If I try to use channels 0-10 then 0-1 and 6 don't generate any interrupts but 2-5 and 7-10 work.
If I try to use channels 2-5 and 7-10 then only 2-5 work and 7-10 don't generate any interrupts.
from linux.
I've updated the location and name of the /system attributes, and the name of the /display and /axi/dma attributes to include "broadcom," prefixes.
from linux.
Channel 11 generates interrupts as normal
Channels 12-14 all generate interrupts on the IRQ for channels 11 and 12
Channel 15 isn't enabled and can't be enabled
Unless I try to use channel 6 (which never works), channels 7-10 don't work... channels 2-5 and 11-14 always work.
from linux.
Some info first. DMA is shared with GPU. This is typical usage:
DMA1: PWM audio
DMA2: ARM SDCARD
DMA6: GPU SDCARD
DMA15: GPU dma_memcpy
Once the ARM boots, DMA6 won't be used again by GPU (although I haven't tested what happens if interrupts go off - possibly something bad).
The DMA mask is the channels the GPU guarantees not to use. So 0x3c means GPU won't use 2,3,4,5.
So 2,3,4,5 should definitely work. Anything is not designed to be used by ARM, and possibly the GPU will also respond to interrupts, making behaviour undefined.
However as the GPU is never going to use more than a few DMA channels, it might be worth increasing the DMA mask to allow the ARM to make use of the channels, and see if the extra channels start working.
As background he's some info I discovered for teh-orph about burst sizes and lockups:
"If you do a big read burst then the DMA will ask for the required no
of beats but only consume 2 128 bit word. The DMA will then stall its
read bus, write out the data and then consume some more.
This runs the risk of a system wide lockup where the stalled read is
preventing the DMA write from completing due to some circular
dependency somewhere in the AXI system.
To make this safe, DMA0 and the VPU DMA (DMA15) have an 8 deep FIFO fitted to
the read data path. This adsorbs the extra read words and the read
bus then completes and becomes ready. The DMA then sucks the data out
of the fifo as it needs it.
You should be able to do read bursts of 9 with DMA0. 8 beats in the
fifo and 1 gets eaten by the DMA. 10 might also make it if the data
is aligned, else it gets stuck in the DMA arbiter which may stall all
the other channels until it clears.
However if he is managing 5 on a dma with no fifo then I assume that 2
in the DMA , and 1 in the DMA arbiter, and then 1 in the system
arbiter, 1 in the L2 or sdram arbiter and then you have a possible
system lock up so 6 would make sense."
from linux.
Could the GPU use one of the Lite channels for audio? Presumably this is related to audio/video playback by the GPU as the audio driver could do DMA itself.
It appears that the GPU is doing something odd with DMA6 causing DMA7-10 to stop working.
from linux.
Added /axi/sdhci/clock-frequency
from linux.
Added /axi/uart0/clock-frequency
The kernel has a subsystem to manage clock frequencies and enable/disable clocks so an interface to do that would be better than having to pass it through device tree.
from linux.
Can you check: raspberrypi/firmware#47
from linux.
It needs to work with "-p 4096" given to dtc (this is in my branch), instead of a command line with lots of spaces.
from linux.
I'll see what I can do.
from linux.
It's also not clear if the reserved memory/dma channels/sdhci clock frequency has been added or not (I haven't tried using the latest firmware yet).
from linux.
These appear to be currently supported:
"/memory/reg";
"/chosen/bootargs";
"/system-rev";
"/system-serial-low";
"/axi/usb/hub/ethernet/mac-address";
"/axi/dma/channels";
"/display/width";
"/display/height";
"/display/depth";
The clocks are available through the mailbox interface, but I can trivially add them here too if useful.
from linux.
/system-rev should now be /system/linux,revision
/system-serial-low should now be /system/linux,serial (u32 high followed by u32 low)
/axi/dma/channels should be /axi/dma/broadcom,channels
/display/width should be /display/broadcom,width
/display/height should be /display/broadcom,height
/display/depth should be /display/broadcom,depth
It would be useful if the sdhci and uart0 clocks were in device tree too - I still need to write the linux implementation for the mailbox clock interface
from linux.
I've updated to these field names:
"/memory/reg";
"/chosen/bootargs";
"/system/linux,revision";
"/system/linux,serial";
"/axi/usb/hub/ethernet/mac-address";
"/axi/dma/broadcom,channels";
"/display/broadcom,width";
"/display/broadcom,height";
"/display/broadcom,depth";
"/axi/sdhci/clock-frequency";
"/axi/uart0/clock-frequency";
https://dl.dropbox.com/u/3669512/temp/start_devtree.elf
Does the example dtb have the updated field names?
from linux.
Sample dtb: http://s85.org/45uN9REW:raw
Modified dtb: http://s85.org/o1e1rXmO:raw
It's not booting beyond uncompressing the kernel
from linux.
It boots once I add an appropriate cmdline.txt, but it's missing the dma channels mask:
[ 12.506201] calling bcm2708_dma_driver_init+0x0/0xc @ 1
[ 12.511623] bus: 'platform': add driver bcm2708_dma
[ 12.516999] bus: 'platform': driver_probe_device: matched device 20007000.dma with driver bcm2708_dma
[ 12.526360] bus: 'platform': really_probe: probing driver bcm2708_dma with device 20007000.dma
[ 12.537637] bcm2708_dma 20007000.dma: no usable channels
[ 12.544248] bcm2708_dma: probe of 20007000.dma rejects match -6
[ 12.554396] initcall bcm2708_dma_driver_init+0x0/0xc returned 0 after 41747 usecs
from linux.
I can't see what's wrong with dma channels. If I run with your "modified dtb", and dump the dt after modifiying it, I get:
MESS: 00:00:00.808067:0: dma {
MESS: 00:00:00.808696:0: compatible = [62 72 6f 61 64 63 6f 6d 2c 62 63 6d 32 38 33 35 2d 64 6d 61 00 62 72 6f 61 64 63 6f 6d 2c 62 63 6d 32 37 30 38 2d 64 6d 61 00];
MESS: 00:00:00.808779:0: reg = <0x00007000 0x00001000 0x00e05000 0x00001000>;
MESS: 00:00:00.809730:0: interrupts = <0x00000001 0x00000010 0x00000001 0x00000011 0x00000001 0x00000012 0x00000001 0x00000013 0x00000001 0x00000014 0x00000001 0x00000015 0x00000001 0x00000016 0x00000001 0x00000017 0x00000001 0x00000018 0x00000001 0x00000019 0x00000001 0x0000001a 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001b 0x00000001 0x0000001f>;
MESS: 00:00:00.809779:0: broadcom,channels = <0x0000003c>;
MESS: 00:00:00.809794:0: };
from linux.
Could you run "sample dtb" through your bootloader and send me the resulting dtb file?
I'm not sure I really ran it with your start.elf as that doesn't boot when I try it again.
from linux.
Forcing the kernel command line shows that you're removing the timer somehow:
Uncompressing Linux... done, booting the kernel.
[ 0.000000] On node 0 totalpages: 49152
[ 0.000000] free_area_init_node: node 0, pgdat c104e40c, node_mem_map c158f000
[ 0.000000] Normal zone: 384 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 48768 pages, LIFO batch:15
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 48768
[ 0.000000] Kernel command line: console=ttyAMA0,115200 debug earlyprintk initcall_debug=1 sysrq_always_enabled dmatest.test_buf_size=131072 dmatest.threads_per_chan=1 dmatest.timeout=30000
[ 0.000000] sysrq: sysrq always enabled.
[ 0.000000] PID hash table entries: 1024 (order: 0, 4096 bytes)
[ 0.000000] Dentry cache hash table entries: 32768 (order: 5, 131072 bytes)
[ 0.000000] Inode-cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Memory: 192MB = 192MB total
[ 0.000000] Memory: 156328k/156328k available, 40280k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xcc800000 - 0xff000000 ( 808 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xcc000000 ( 192 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0310660 (3106 kB)
[ 0.000000] .init : 0xc0311000 - 0xc102e000 (13428 kB)
[ 0.000000] .data : 0xc102e000 - 0xc104f060 ( 133 kB)
[ 0.000000] .bss : 0xc104f084 - 0xc158ed38 (5376 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] Kernel panic - not syncing: can't find system timer
[ 0.000000]
[ 0.000000] [<c000deec>] (unwind_backtrace+0x0/0xe0) from [<c026b334>] (panic+0x80/0x1d0)
[ 0.000000] [<c026b334>] (panic+0x80/0x1d0) from [<c03169cc>] (bcm2708_time_init+0x210/0x26c)
[ 0.000000] [<c03169cc>] (bcm2708_time_init+0x210/0x26c) from [<c031650c>] (bcm2708_timer_init+0xb0/0xc4)
[ 0.000000] [<c031650c>] (bcm2708_timer_init+0xb0/0xc4) from [<c03141c4>] (time_init+0x20/0x30)
[ 0.000000] [<c03141c4>] (time_init+0x20/0x30) from [<c0311634>] (start_kernel+0x1a8/0x2f0)
[ 0.000000] [<c0311634>] (start_kernel+0x1a8/0x2f0) from [<00008040>] (0x8040)
[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: at kernel/lockdep.c:2585 panic+0x158/0x1d0()
[ 0.000000] [<c000deec>] (unwind_backtrace+0x0/0xe0) from [<c0014a00>] (warn_slowpath_common+0x48/0x60)
[ 0.000000] [<c0014a00>] (warn_slowpath_common+0x48/0x60) from [<c0014ad0>] (warn_slowpath_null+0x18/0x1c)
[ 0.000000] [<c0014ad0>] (warn_slowpath_null+0x18/0x1c) from [<c026b40c>] (panic+0x158/0x1d0)
[ 0.000000] [<c026b40c>] (panic+0x158/0x1d0) from [<c03169cc>] (bcm2708_time_init+0x210/0x26c)
[ 0.000000] [<c03169cc>] (bcm2708_time_init+0x210/0x26c) from [<c031650c>] (bcm2708_timer_init+0xb0/0xc4)
[ 0.000000] [<c031650c>] (bcm2708_timer_init+0xb0/0xc4) from [<c03141c4>] (time_init+0x20/0x30)
[ 0.000000] [<c03141c4>] (time_init+0x20/0x30) from [<c0311634>] (start_kernel+0x1a8/0x2f0)
[ 0.000000] [<c0311634>] (start_kernel+0x1a8/0x2f0) from [<00008040>] (0x8040)
[ 0.000000] ---[ end trace 1b75b31a2719ed1c ]---
The memory should always be 256MB with memreserve configured to cover the memory used by the VideoCore.
from linux.
This is my modded form of your sample dtb
https://dl.dropbox.com/u/3669512/temp/devtree.dat
The latest official firmware has the recent devtree mods in, so you could try this start.elf:
https://github.com/raspberrypi/firmware/blob/master/boot/start.elf
from linux.
The revision has the wrong endianness:
system {
- linux,revision = <0x0>;
- linux,serial = <0x0 0x0>;
+ linux,revision = <0x1000000>;
+ linux,serial = <0x0 0xe>;
};
Both clock-frequency values are being set to 0.
Is your serial definitely 14?
- mac-address = [00 00 00 00 00 00];
+ mac-address = [b8 27 eb 00 00 0e];
I don't know why the kernel isn't finding the timer device. It works ok when the unmodified .dtb is put in place by the bootloader.
from linux.
I think this may be the problem:
- bootargs = [00];
+ bootargs = [64];
The only change here is 0x00 to 0x64 and there's no command line string in the .dtb:
@@ -16 +16 @@
-0000240 00 00 00 01 00 00 00 2c 00 00 00 00 00 00 00 02
+0000240 00 00 00 01 00 00 00 2c 64 00 00 00 00 00 00 02
If I change that back to 00 it then boots a bit further, but fails because of:
[ 0.000000] Memory: 384MB = 384MB total
[ 0.000000] Memory: 220092k/220092k available, 173124k reserved, 0K highmem
You're specifying 384MB of RAM instead of 256MB:
memory {
device_type = "memory";
- reg = <0x0 0x10000000>;
+ reg = <0x0 0x18000000>;
};
from linux.
Yes my serial is 14.
The revision is correct. My board's not been through factory programming so doesn't have a board rev. It does have the overclock/overvolt bit set (bit 24)
The clocks are my fault. It will report them if they are specified in config.txt, but I forgot to report the default. Fixed in my source tree.
(start.elf dropbox link is updated, if you are able to boot).
from linux.
I'm not putting the command line in as it won't fit, and I haven't implemented the devtree decompile/compile.
I think if you pad your "/chosen/bootargs" to, say 256 spaces, you will get a command line filled in.
The start.elf on github/dropbox will fill in the correct memory size.
from linux.
Okay, I've switched to using libfdt.
I was under the impression I needed dtc, which was under GPL, and so not suitable for linking with GPU code.
But I only actually needed libfdt, which seems usable with the BSD licence.
It seems to be working, and your command line text is filled in now.
I've moved back to a 128M memory split. The last one on dropbox was 192M,
These are updated:
https://dl.dropbox.com/u/3669512/temp/start_devtree.elf
https://dl.dropbox.com/u/3669512/temp/devtree.dat
from linux.
The memory size is still wrong, it should always be 256MB:
[ 0.000000] Memory: 128MB = 128MB total
I don't see why but it's still losing the system timer for me:
[ 0.000000] Kernel panic - not syncing: can't find system timer
Perhaps the boot args need to be null terminated?
from linux.
If I always report 256M, how do you determine if the arm has 128M/192M/224M/240M?
from linux.
Because the memreserve value will reserve the range used by the VideoCore
from linux.
Okay, updated:
https://dl.dropbox.com/u/3669512/temp/start_devtree.elf
https://dl.dropbox.com/u/3669512/temp/devtree.dat
should have /memory/reg and /memreserve filled in as descibed, plus null on end of boot args.
from linux.
That sample device tree doesn't appear to be modified at all, but the start.elf is still giving me the same 128MB memory and kernel error.
from linux.
My mistake. The files are updated again.
from linux.
They're still the same:
--2012-09-13 23:19:35-- http://dl.dropbox.com/u/3669512/temp/start_devtree.elf
Resolving dl.dropbox.com... 174.129.218.194, 107.20.142.191, 174.129.199.91, ...
Connecting to dl.dropbox.com|174.129.218.194|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2466672 (2.4M) [application/octet-stream]
Saving to: `start_devtree.elf'
0K ........ ........ ........ ........ ..... 100% 1.06M=2.2s
2012-09-13 23:19:38 (1.06 MB/s) - `start_devtree.elf' saved [2466672/2466672]
--2012-09-14 07:36:40-- http://dl.dropbox.com/u/3669512/temp/start_devtree.elf
Resolving dl.dropbox.com... 107.20.235.144, 23.23.134.47, 50.19.106.181, ...
Connecting to dl.dropbox.com|107.20.235.144|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2466672 (2.4M) [application/octet-stream]
Saving to: `start_devtree.elf'
0K ........ ........ ........ ........ ..... 100% 1.02M=2.3s
2012-09-14 07:36:44 (1.02 MB/s) - `start_devtree.elf' saved [2466672/2466672]
from linux.
wget http://dl.dropbox.com/u/3669512/temp/devtree.dat
--2012-09-14 10:54:09-- http://dl.dropbox.com/u/3669512/temp/devtree.dat
Resolving dl.dropbox.com (dl.dropbox.com)... 107.20.138.135, 107.20.207.68, 107.20.235.144, ...
Connecting to dl.dropbox.com (dl.dropbox.com)|107.20.138.135|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 12279 (12K) [application/x-ns-proxy-autoconfig]
Saving to: `devtree.dat'
100%[==============================================================================================>] 12,279 65.8K/s in 0.2s
2012-09-14 10:54:09 (65.8 KB/s) - `devtree.dat' saved [12279/12279]
fdtdump.exe devtree.dat > /cygdrive/c/Users/dc4/Dropbox/Public/temp/devtree.txt
And this file:
https://dl.dropbox.com/u/3669512/temp/devtree.txt
contains:
memreserve = <0x08000000 0x08000000>;
chosen {
bootargs = "dwc_otg.lpm_enable=0 dwc_otg.nak_holdoff_enable=1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 nfsroot=10.177.65.90:/home/dc4/rootfs ip=dhcp rootwait";
};
memory {
device_type = "memory";
reg = <0x00000000 0x10000000>;
};
from linux.
Ok, but the start.elf appears to be the same as it still reports the memory as 128MB.
$ sha1sum start_devtree.elf
3f505c4a0d4cab79cfdfc48fdb0224bf5ea817fe start_devtree.elf
from linux.
Your sha1sum is correct. However I has just downloaded that dropbox elf file. Run it on my system. Extracted the modified devtree file, and it is binary identical with the modified devtree file I posted (with 128M of memory).
Sure you have renamed start_devtree.elf to start.elf?
from linux.
That dtb is now correct:
@@ -4,0 +5 @@
+ memreserve = <0x8000000 0x8000000>;
@@ -11 +12 @@
- bootargs = [64 77 63 5f 6f 74 67 2e 6c 70 6d 5f 65 6e 61 62 6c 65 3d 30 20 64 77 63 5f 6f 74 67 2e 66 69 71 5f 66 69 78 5f 65 6e 61 62 6c 65 3d 31 20 63 6f 6e 73 6f 6c 65 3d 74 74 79 41 4d 41 30 2c 31 31 35 32 30 30 20 6b 67 64 62 6f 63 3d 74 74 79 41 4d 41 30 2c 31 31 35 32 30 30 20 63 6f 6e 73 6f 6c 65 3d 74 74 79 31 20 6e 66 73 72 6f 6f 74 3d 31 30 2e 31 37 37 2e 36 35 2e 39 30 3a 2f 68 6f 6d 65 2f 64 63 34 2f 72 6f 6f 74 66 73 20 69 70 3d 64 68 63 70 20 72 6f 6f 74 77 61 69 74];
+ bootargs = "dwc_otg.lpm_enable=0 dwc_otg.nak_holdoff_enable=1 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 nfsroot=10.177.65.90:/home/dc4/rootfs ip=dhcp rootwait";
@@ -19 +20 @@
- reg = <0x0 0x8000000>;
+ reg = <0x0 0x10000000>;
I have your latest start.elf:
simon@redrum /media/disk $ ls -l
total 18076
-rw-r--r-- 1 simon root 12279 Sep 13 22:37 bcm2835.dtb
-rw-r--r-- 1 simon root 16528 Jun 15 21:15 bootcode.bin
-rw-r--r-- 1 simon root 165 Sep 13 22:36 cmdline.txt
-rw-r--r-- 1 simon root 171 Jun 15 21:18 config.txt
-rw-r--r-- 1 simon root 11181344 Sep 13 22:38 kernel.img
-rw-r--r-- 1 simon root 314691 Jun 15 21:15 loader.bin
-rw-r--r-- 1 simon root 2466672 Sep 14 17:26 start_devtree.elf
-rw-r--r-- 1 simon root 2466672 Sep 14 07:35 start.elf
-rw-r--r-- 1 simon root 2040328 Jun 15 21:15 start_normal.elf
simon@redrum /media/disk $ sha1sum start.elf
3f505c4a0d4cab79cfdfc48fdb0224bf5ea817fe start.elf
However, I'm still getting the old behaviour:
Uncompressing Linux... done, booting the kernel.
[ 0.000000] On node 0 totalpages: 32768
[ 0.000000] free_area_init_node: node 0, pgdat c104e40c, node_mem_map c158f000
[ 0.000000] Normal zone: 256 pages used for memmap
[ 0.000000] Normal zone: 0 pages reserved
[ 0.000000] Normal zone: 32512 pages, LIFO batch:7
[ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768
[ 0.000000] pcpu-alloc: [0] 0
[ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 32512
[ 0.000000] Kernel command line: console=ttyAMA0,115200 debug earlyprintk initcall_debug=1 sysrq_always_enabled dmatest.test_buf_size=131072 dmatest.threads_per_chan=1 dmatest.timeout=30000
[ 0.000000] sysrq: sysrq always enabled.
[ 0.000000] PID hash table entries: 512 (order: -1, 2048 bytes)
[ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes)
[ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes)
[ 0.000000] Memory: 128MB = 128MB total
[ 0.000000] Memory: 91408k/91408k available, 39664k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xc8800000 - 0xff000000 ( 872 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xc8000000 ( 128 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0310660 (3106 kB)
[ 0.000000] .init : 0xc0311000 - 0xc102e000 (13428 kB)
[ 0.000000] .data : 0xc102e000 - 0xc104f060 ( 133 kB)
[ 0.000000] .bss : 0xc104f084 - 0xc158ed38 (5376 kB)
[ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[ 0.000000] NR_IRQS:16 nr_irqs:16 16
[ 0.000000] Kernel panic - not syncing: can't find system timer
[ 0.000000]
[ 0.000000] [<c000deec>] (unwind_backtrace+0x0/0xe0) from [<c026b334>] (panic+0x80/0x1d0)
[ 0.000000] [<c026b334>] (panic+0x80/0x1d0) from [<c03169cc>] (bcm2708_time_init+0x210/0x26c)
[ 0.000000] [<c03169cc>] (bcm2708_time_init+0x210/0x26c) from [<c031650c>] (bcm2708_timer_init+0xb0/0xc4)
[ 0.000000] [<c031650c>] (bcm2708_timer_init+0xb0/0xc4) from [<c03141c4>] (time_init+0x20/0x30)
[ 0.000000] [<c03141c4>] (time_init+0x20/0x30) from [<c0311634>] (start_kernel+0x1a8/0x2f0)
[ 0.000000] [<c0311634>] (start_kernel+0x1a8/0x2f0) from [<00008040>] (0x8040)
[ 0.000000] ------------[ cut here ]------------
[ 0.000000] WARNING: at kernel/lockdep.c:2585 panic+0x158/0x1d0()
[ 0.000000] [<c000deec>] (unwind_backtrace+0x0/0xe0) from [<c0014a00>] (warn_slowpath_common+0x48/0x60)
[ 0.000000] [<c0014a00>] (warn_slowpath_common+0x48/0x60) from [<c0014ad0>] (warn_slowpath_null+0x18/0x1c)
[ 0.000000] [<c0014ad0>] (warn_slowpath_null+0x18/0x1c) from [<c026b40c>] (panic+0x158/0x1d0)
[ 0.000000] [<c026b40c>] (panic+0x158/0x1d0) from [<c03169cc>] (bcm2708_time_init+0x210/0x26c)
[ 0.000000] [<c03169cc>] (bcm2708_time_init+0x210/0x26c) from [<c031650c>] (bcm2708_timer_init+0xb0/0xc4)
[ 0.000000] [<c031650c>] (bcm2708_timer_init+0xb0/0xc4) from [<c03141c4>] (time_init+0x20/0x30)
[ 0.000000] [<c03141c4>] (time_init+0x20/0x30) from [<c0311634>] (start_kernel+0x1a8/0x2f0)
[ 0.000000] [<c0311634>] (start_kernel+0x1a8/0x2f0) from [<00008040>] (0x8040)
[ 0.000000] ---[ end trace 1b75b31a2719ed1c ]---
from linux.
Can you send me a kernel that has the problem?
from linux.
http://redrum.lp0.eu/rpi-zImage
This currently has the following forced command line: "console=ttyAMA0,115200 debug earlyprintk initcall_debug=1 sysrq_always_enabled dmatest.test_buf_size=131072 dmatest.threads_per_chan=1 dmatest.timeout=30000"
from linux.
And can you confirm what you want displayed here:
[ 0.000000] Memory: 128MB = 128MB total
if there is a 192M split for ARM (64M for GPU) and a total of 256M?
from linux.
It should look like this:
[ 0.000000] Memory: 256MB = 256MB total
[ 0.000000] Memory: 155784k/155784k available, 106360k reserved, 0K highmem
[ 0.000000] Virtual kernel memory layout:
[ 0.000000] vector : 0xffff0000 - 0xffff1000 ( 4 kB)
[ 0.000000] fixmap : 0xfff00000 - 0xfffe0000 ( 896 kB)
[ 0.000000] vmalloc : 0xd0800000 - 0xff000000 ( 744 MB)
[ 0.000000] lowmem : 0xc0000000 - 0xd0000000 ( 256 MB)
[ 0.000000] .text : 0xc0008000 - 0xc0310660 (3106 kB)
[ 0.000000] .init : 0xc0311000 - 0xc102e000 (13428 kB)
[ 0.000000] .data : 0xc102e000 - 0xc104f060 ( 133 kB)
[ 0.000000] .bss : 0xc104f084 - 0xc158ed38 (5376 kB)
# head /sys/kernel/debug/memblock/*
==> /sys/kernel/debug/memblock/memory <==
0: 0x00000000..0x0fffffff
==> /sys/kernel/debug/memblock/reserved <==
0: 0x00000100..0x000030f6
1: 0x00004000..0x00007fff
2: 0x00008200..0x0158ed37
3: 0x0aff1000..0x0affefff
4: 0x0affffc0..0x0fffffff
from linux.
I'm a bit confused. Your kernel doesn't seem to use the device tree for this:
[ 0.000000] Memory: 128MB = 128MB total
That value comes from the ATAGS. Was that intended?
Con you confirm if you are running with:
disable_cmdline_tags=1
from linux.
I have "disable_commandline_tags=1" but it still says 128MB even after changing that to "disable_cmdline_tags=1".
from linux.
This looks a bit off topic and old now!
from linux.
Related Issues (20)
- Kernel 6.6.16 freeze with rpi2 rev B when using usb device HOT 3
- Kernel 6.6 have memory leak on nfs HOT 7
- [feat req] build igb, igc, ixgbe, i40e HOT 4
- Regression with Hifiberry DAC+ Pro since switch to params_width HOT 4
- high cpu with 2-CH RS485 HAT Interface-Card and pi5 HOT 9
- Flickering in hyperpixel display HOT 5
- dts: missing SPDX-License-Identifier in rp1.dtsi HOT 2
- RP1 (Pi 5) DSI issue with 4 lanes HOT 2
- Compile the kernel with CONFIG_IP_NF_TARGET_SYNPROXY=m HOT 1
- Compilation errors ("Warning (interrupt_provider)") HOT 6
- WPA3 broken on Pi 3 with 6.6 (and works with 6.1) HOT 8
- igc driver not working on Pi5 HOT 8
- Kernel 6.8 and 6.9 builds do not contain bcachefs filesystem support - please activate CONFIG_BCACHEFS_FS=m
- Java Swing UI blurry or broken HOT 1
- rtl8761_bu usb bluetooth download fw command failed HOT 2
- Best resolution for monitor is not respected at boot (native is 1366x768, effective is 1920x1080) HOT 7
- Arducam Pivariety modprobe is in uninterruptable state HOT 1
- Possible NULL pointer dereference in VC4 driver HOT 3
- GPIO4 unstable switching because of 1-Wire protocol enabled HOT 2
- Get sensor link rate through video multiplexer HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from linux.