Memory controller of TX1 fixed at 800 MHz in R28.1 ?

The TX1 with R28.1 does not allow changing the EMC clock.

After boot:

<b>$ sudo ./jetson_clocks.sh --show</b>
SOC family:tegra210  Machine:jetson_tx1
Online CPUs: 0-3
CPU Cluster Switching: Disabled
cpu0: Gonvernor=interactive MinFreq=102000 MaxFreq=1734000 CurrentFreq=918000
cpu1: Gonvernor=interactive MinFreq=102000 MaxFreq=1734000 CurrentFreq=918000
cpu2: Gonvernor=interactive MinFreq=102000 MaxFreq=1734000 CurrentFreq=918000
cpu3: Gonvernor=interactive MinFreq=102000 MaxFreq=1734000 CurrentFreq=918000
GPU MinFreq=76800000 MaxFreq=921600000 CurrentFreq=76800000
EMC MinFreq=12750000 MaxFreq=1600000000 CurrentFreq=800000000 FreqOverride=0
Can't access Fan!

With clock set:

<b>$ sudo ./jetson_clocks.sh</b>
Can't access Fan!
<b>$ sudo ./jetson_clocks.sh --show</b>
SOC family:tegra210  Machine:jetson_tx1
Online CPUs: 0-3
CPU Cluster Switching: Disabled
cpu0: Gonvernor=interactive MinFreq=1734000 MaxFreq=1734000 CurrentFreq=1734000
cpu1: Gonvernor=interactive MinFreq=1734000 MaxFreq=1734000 CurrentFreq=1734000
cpu2: Gonvernor=interactive MinFreq=1734000 MaxFreq=1734000 CurrentFreq=1734000
cpu3: Gonvernor=interactive MinFreq=1734000 MaxFreq=1734000 CurrentFreq=1734000
GPU MinFreq=921600000 MaxFreq=921600000 CurrentFreq=921600000
EMC MinFreq=12750000 MaxFreq=1600000000 CurrentFreq=800000000 FreqOverride=1
Can't access Fan!

There is only one line printed in kernel log

[  133.405045] gk20a 57000000.gpu: railgate is disabled.

In R23-R24 with 3.10 kernel we were able to set 1600 MHz and our application ran smooth. With R28 and 4.4 kernel, the application drops frames.

The clock is always 800 MHz and does not change with load.

Any idea?

hello danieel,

jetson_clock.sh script should pull-up the emc rate.
could you please try increase the emc rate following below steps. and share your result to us.
thanks

root@tegra-ubuntu:/home/ubuntu# cat /sys/kernel/debug/tegra_bwmgr/emc_rate
root@tegra-ubuntu:/home/ubuntu# echo 1600000000 > /sys/kernel/debug/clk/override.emc/clk_update_rate
root@tegra-ubuntu:/home/ubuntu# echo 1 > /sys/kernel/debug/clk/override.emc/clk_state
root@tegra-ubuntu:/home/ubuntu# cat /sys/kernel/debug/tegra_bwmgr/emc_rate

Yes, those commands are used in the jetson_clocks.sh script and they do not work here:

# cat /sys/kernel/debug/tegra_bwmgr/emc_rate
800000000 
# echo 1600000000 > /sys/kernel/debug/clk/override.emc/clk_update_rate
# echo 1 > /sys/kernel/debug/clk/override.emc/clk_state
# cat /sys/kernel/debug/tegra_bwmgr/emc_rate
800000000

The same happens with nvidia TX1 R28.1 factory image kernel (4.4.38-tegra) and the DTBs found either in /boot/dtb or /boot directory of the image, both being named tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb, but having sizes of 441816 vs 442001 bytes (dated Jul 28).

Kernel options are:

root=/dev/mmcblk1p2
rw
rootwait
rootfstype=ext4
memtype=0
video=tegrafb
no_console_suspend=1
gpt
tegraid=21.1.2.0.0
tegra_keep_boot_clocks
maxcpus=6
log_buf_len=16M
net.ifnames=0

hello danieel,

may i know what’s the modification you had done?
we had verified that emc clock is adjustable with JetPack-3.1 on TX1.

i would suggest you download another fresh JetPack release and flash the device again for a try,
thanks

I have no idea what modifications we did last year. But the four TX1 from that time which do boot the newly created R28.1 kernel/userspace has this in the pre-boot log:

[0000.861] Starting CPU & Halting co-processor

64b[0000.968] RamCode = 0
[0000.983] LPDDR4 Training: Read DT: Number of tables = 10
[0000.988] EMC Training (SRC-freq: 204000; DST-freq: 40800)
[0000.993] EMC Training Skipped
[0000.996] EMC Training (SRC-freq: 204000; DST-freq: 68000)
[0001.001] EMC Training Skipped
[0001.004] EMC Training (SRC-freq: 204000; DST-freq: 102000)
[0001.009] EMC Training Skipped
[0001.012] EMC Training (SRC-freq: 204000; DST-freq: 204000)
[0001.018] EMC Training Skipped
[0001.020] EMC Training (SRC-freq: 204000; DST-freq: 408000)
[0001.026] EMC Training Successful
[0001.030] EMC Training (SRC-freq: 204000; DST-freq: 665600)
[0001.035] EMC Training Successful
[0001.038] EMC Training (SRC-freq: 204000; DST-freq: 800000)
[0001.050] EMC Training Successful
[0001.053] EMC Training (SRC-freq: 204000; DST-freq: 1065600)
[0001.075] EMC Training Successful
[0001.079] EMC Training (SRC-freq: 204000; DST-freq: 1331200)
[0001.100] EMC Training Successful
[0001.103] EMC Training (SRC-freq: 204000; DST-freq: 1600000)
[0001.123] EMC Training Successful
[0001.126] Switching to 800000 KHz Success
[0001.132] DT Write: emc-table@40800 succeeded
[0001.138] DT Write: emc-table@68000 succeeded
[0001.145] DT Write: emc-table@102000 succeeded
[0001.151] DT Write: emc-table@204000 succeeded
[0001.158] DT Write: emc-table@408000 succeeded
[0001.164] DT Write: emc-table@665600 succeeded
[0001.170] DT Write: emc-table@800000 succeeded
[0001.177] DT Write: emc-table@1065600 succeeded
[0001.183] DT Write: emc-table@1331200 succeeded
[0001.189] DT Write: emc-table@1600000 succeeded
[0001.194] LPDDR4 Training: Write DT: Number of tables = 10

Whereas a newly purchased TX1 SE (has 3.10 factory image) will not boot the exactly same SD card with the R28.1 installation:

[0000.849] Starting CPU & Halting co-processor

64b[0000.987] LPDDR4 Training: Number of tables = 10
[0000.991] EMC Training (SRC-freq: 204000; DST-freq: 408000)
[0000.997] EMC Training Successful
[0001.000] EMC Training (SRC-freq: 204000; DST-freq: 665600)
[0001.006] EMC Training Successful
[0001.009] EMC Training (SRC-freq: 204000; DST-freq: 800000)
[0001.021] EMC Training Successful
[0001.024] EMC Training (SRC-freq: 204000; DST-freq: 1065600)
[0001.046] EMC Training Successful
[0001.050] EMC Training (SRC-freq: 204000; DST-freq: 1331200)
[0001.071] EMC Training Successful
[0001.074] EMC Training (SRC-freq: 204000; DST-freq: 1600000)
[0001.094] EMC Training Successful
[0001.097] Switching to 800000 KHz Success
[0001.137] LPDDR4 Training: Number of tables = 10

Reason of not-booting:

Can't create DT prop nvidia,current_dram_clktree_c0d1u0 to copy
Can't create DT node emc-table@204000 to copy
ERROR: board-specific fdt fixup failed: FDT_ERR_NOTFOUND
 - must RESET the board to recover.

FDT creation failed! hanging...### ERROR ### Please RESET the board ###

hello danieel,

since we had verified that emc clock is adjustable with JetPack-3.1 on TX1.
please review your kernel modification and check whether there’s mistake.
thanks

I can confirm that the R28.1 installed through JetPack-3.1 can reach the highest EMC clock rates.

Now there is another bug/feature which was not there before. Our extlinux.conf specifies the KERNEL and FDT to pull our device tree from the SD card. When there is no FDT specified, the system boots up. When there is FDT specified, the system hangs in 2 to 4 seconds during the boot, with no apparent reason in the messages. The R28.1 Ubuntu has no FDT specified in its extlinux.conf.

What was changed and why it is no longer possible to use our own device tree? This makes the unit useless if we are forced to use only the hardcoded device tree. Please explain or forward me to the documentation.

Also what I miss, is the exact kernel config to build the factory kernel image. Pulling one from a running system seems to have various options enabled, but not the ones we would also like. And doing defconfig is not making it anything close to the factory configuration.