You are correct that enumeration should show the PCIe devices even if there is no driver for what is contained on the PCIe card.
Under udev any file in “/dev” would be generated by a kernel feature. Manually creating such a file with no kernel feature will not be any more successful than no file at all…communications to and from a “/dev” file is really communications with that kernel feature.
So far as PCIe errors go, some cards have more or less in the way of advanced error reporting and correction…advanced error reporting and correction is not mandatory, and could be eliminated in order to make the card less expensive (in which case some errors won’t be shown in lspci). Mostly when thinking about errors on PCIe it is the data which runs at fairly fast speeds which is thought of as being sensitive to errors…a PCIe v3 device might throttle back the data to v2 or v1 speeds. The control channel is designed to be slower and very unlikely to fail even when data lanes have gone missing; however, if it is a control channel which has failed, lspci won’t know there is a card there…it isn’t the physical use of the PCIe slot which lspci reports, it is information from non-data-lane query which serves this function.
I do not know if the TX1 will try to boot SD card first, but extlinux.conf can be used to point at any device you want for rootfs even though configuration is on eMMC…it’s easiest to just try and find out. Just make sure you have the “/boot” content on both SD card and eMMC, and that the content is identical, using “root=/dev/mmcblk0p1” on both for eMMC, or “/dev/mmcblk1p1” on both for SD (in which case SD needs a full rootfs and not just “/boot”).
FYI, I wouldn’t bother with an entire SD card install for testing if all you are changing is the kernel…just use a serial console for which config to use at boot time and add different configs in extlinux.conf for any kernel or firmware changes. Here’s a sample extlinux.conf with some selectable entries via serial console:
TIMEOUT 30
DEFAULT primary
MENU TITLE p2371-2180 eMMC boot options
LABEL primary
MENU LABEL primary kernel
LINUX /boot/Image
FDT /boot/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk0p1 rw rootwait
LABEL testing1
MENU LABEL testing on eMMC
LINUX /boot/Image_test_kernel
FDT /boot/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk0p1 rw rootwait
LABEL testing2
MENU LABEL testing on SD
LINUX /boot/Image_test_kernel
FDT /boot/dtb/tegra210-jetson-tx1-p2597-2180-a01-devkit.dtb
APPEND fbcon=map:0 console=tty0 console=ttyS0,115200n8 androidboot.modem=none androidboot.serialno=P2180A00P00940c003fd androidboot.security=non-secure tegraid=21.1.2.0.0 ddr_die=2048M@2048M ddr_die=2048M@4096M section=256M memtype=0 vpr_resize usb_port_owner_info=0 lane_owner_info=0 emc_max_dvfs=0 touch_id=0@63 video=tegrafb no_console_suspend=1 debug_uartport=lsport,0 earlyprintk=uart8250-32bit,0x70006000 maxcpus=4 usbcore.old_scheme_first=1 lp0_vec=${lp0_vec} nvdumper_reserved=${nvdumper_reserved} core_edp_mv=1125 core_edp_ma=4000 gpt android.kerneltype=normal androidboot.touch_vendor_id=0 androidboot.touch_panel_id=63 androidboot.touch_feature=0 androidboot.bootreason=pmc:software_reset,pmic:0x0 root=/dev/mmcblk1p1 rw rootwait
One thing which could help is if you can run sudo lspci -vvv for your PCIe card on another Linux machine where you know it works. See what the card should be when it is detected and whether any data lane speeds had to be throttled back.