Railgate is disabled when using L4T rootfs

When I boot Tegra x2 with L4T rootfs , I see messages saying some railgate is disabled and I get freq related messages. But if I use default rootfs that comes with the board, there is no such messsage. I assume that some initialization script is disabling it by echoing some value into sysfs during init stage. Could you tell me which init script is used in L4T rootfs or how the init stage is executed in tegra x2. I want to know the systemd script which does this.

And one more thing, how can I clone default mmc rootfs of tegra x2 without using dd command. Is there any way to use default rootfs which comes with board so that I can use it for nfs boot?

Thanks.

I don’t think u-boot supports NFS boot, so I don’t think you can get there. If I’m wrong, that’d be great; please let us know what you find out!

If you want to clone a partition, you can read the block device; the root file system is called /dev/mmcblk0p1
If you have mounted a NFS file system on /auto/myhost, then you can clone the current root image (note: Currently mounted, so “dirty”) using:

dd if=/dev/mmcblk0p1 of=/auto/myhost/my-root-image.img bs=1024k

You could also mount a large SD card and clone the image to that.

By the way, there are 17 (!) partitions on the internal embedded flash. I wonder what they’re all used for?

Disk /dev/mmcblk0: 29.1 GiB, 31268536320 bytes, 61071360 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 00000000-0000-0000-0000-000000000000

Device             Start      End  Sectors   Size Type
/dev/mmcblk0p1      4097 58724352 58720256    28G Microsoft basic data
/dev/mmcblk0p2  58724353 58732544     8192     4M Microsoft basic data
/dev/mmcblk0p3  58732545 58733056      512   256K Microsoft basic data
/dev/mmcblk0p4  58733057 58733568      512   256K Microsoft basic data
/dev/mmcblk0p5  58733569 58739712     6144     3M Microsoft basic data
/dev/mmcblk0p6  58739713 58739716        4     2K Microsoft basic data
/dev/mmcblk0p7  58739717 58740924     1208   604K Microsoft basic data
/dev/mmcblk0p8  58740925 58741924     1000   500K Microsoft basic data
/dev/mmcblk0p9  58741925 58746020     4096     2M Microsoft basic data
/dev/mmcblk0p10 58746021 58758308    12288     6M Microsoft basic data
/dev/mmcblk0p11 58758309 58762404     4096     2M Microsoft basic data
/dev/mmcblk0p12 58762405 59024548   262144   128M Microsoft basic data
/dev/mmcblk0p13 59024549 59090084    65536    32M Microsoft basic data
/dev/mmcblk0p14 59090085 59221156   131072    64M Microsoft basic data
/dev/mmcblk0p15 59221157 59221668      512   256K Microsoft basic data
/dev/mmcblk0p16 59221669 59745956   524288   256M Microsoft basic data
/dev/mmcblk0p17 59745957 61071326  1325370 647.2M Microsoft basic data

(Output printed by fdisk /dev/mmcblk0)

I see some railgate files in “/sys”, but nothing in the systemd init files. Perhaps the enable/disable is part of the drivers.

Clone depends on which version of the driver package you use. The wrong clone command from R27.1 will instead flash if using the R28.1 driver, and the R27.1 driver needs a patch. Which version of driver package are you using to clone from?

I was wrong – u-boot can pass NFS boot parameters to the kernel, and the kernel can boot from NFS.
Why do you not want to use “dd” to clone the root file system, btw?

Finally, instead of something disabling railgate, perhaps the problem is that the custom build/kernel/dts doesn’t enable it?

Yes I can do nfs boot with my Image. I could not use dd command because there was an error saying something like file too large even though I had enough space in my nfs host. So i thought we may get the default rootfs somehow differently. Is it available for download or anything?

I am using R27.1. I also see the clock frequency set to 12 MHz messages in dmesg.

And below is the message about railgate I am seeing. I grepped the entire rootfs but could not find where it was being generated from. If anyone has any pointer, it would be good.

gk20a 17000000.gp10b: railgate is disabled.

Thanks.

The default rootfs is part of the kernel sources or jetpack download.
Note: This is a file-level archive, not an image-level archive.
On my system, it ends up at the following location:
/usr/local/jetson/jetpack/jetpack_download/Tegra_Linux_Sample-Root-Filesystem_R27.1.0_aarch64.tbz2

If you want to create a file-level archive of the rootfs, you can use tools like cpio or tar.

My understanding is that the railgates are kernel-level power management functions, and thus they are likely more affected by your device tree and set of kernel modules, than by the user-space tools that live in rootfs. However, I can’t find any documentation on those features at all, so I could be wrong, and I’d love to learn more if someone knows for sure.

I happened across this thread. Railgate is disabled message is from nvgpu/drivers/gpu/nvgpu/gk20a/gk20a_sysfs.c:railgate_enable_store(). Also curious about why this message is seen at seemingly random intervals.

Which release are you using? You might find this of interest, though they are somewhat old:
https://devtalk.nvidia.com/default/topic/1032602/jetson-tx2/constant-load-average-1-0-caused-by-nvgpu_channel_p-/post/5254472/#5254472

The gist of that older post is (and this may not apply to you):
To stop infinite D-state showing as load average edit /etc/systemd/nv.sh to remove:

echo 0 > /sys/devices/17000000.gp10b/railgate_enable

Thanks linuxdev. Yes I’m also seeing this in R28.2.x.