Thank you very much.  ' udevadm info -a /dev/ttyPS0' output:

bash-4.4# udevadm info -a /dev/ttyPS0

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.

  looking at device '/devices/platform/soc/e0000000.serial/tty/ttyPS0':
    KERNEL=="ttyPS0"
    SUBSYSTEM=="tty"
    DRIVER==""
    ATTR{close_delay}=="50"
    ATTR{closing_wait}=="3000"
    ATTR{custom_divisor}=="0"
    ATTR{flags}=="0x10000000"
    ATTR{io_type}=="3"
    ATTR{iomem_base}=="0xE0000000"
    ATTR{iomem_reg_shift}=="0"
    ATTR{irq}=="2"
    ATTR{line}=="0"
    ATTR{port}=="0x0"
    ATTR{type}=="98"
    ATTR{uartclk}=="100000000"
    ATTR{xmit_fifo_size}=="64"

  looking at parent device '/devices/platform/soc/e0000000.serial':
    KERNELS=="e0000000.serial"
    SUBSYSTEMS=="platform"
    DRIVERS=="xuartps"
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/platform/soc':
    KERNELS=="soc"
    SUBSYSTEMS=="platform"
    DRIVERS==""
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/platform':
    KERNELS=="platform"
    SUBSYSTEMS==""
    DRIVERS==""
bash-4.4# ls /dev/ttyPS0 -lh
crw-rw---- 1 root dialout 254, 0 Jan 28 16:05 /dev/ttyPS0


Thanks,

On Wed, Sep 23, 2020, 15:34,"Mantas Mikulėnas" <graw...@gmail.com> wrote:


On Wed, Sep 23, 2020, 09:21 ZhouPeng <zhoupengwor...@163.com> wrote:



Thank you  very much for you great suggestions.



I chroot the rootfs and tried to the 3 methods in '/usr/lib/udev/rules.d'  
respectively:



try 1) add  a line of  ACTION!="remove", KERNEL=="ttyPS0", TAG+="systemd" below 
the line of  "ACTION=="remove", GOTO="systemd_end"" in file 99-systemd.rules

try 2) add  a line of  ACTION!="remove", KERNEL=="ttyPS0",  NAME="ttyPS0", 
TAG+="systemd"  below the line of  "ACTION=="remove", GOTO="systemd_end"" in 
file 99-systemd.rules

try 3) replace the line  "SUBSYSTEM=="tty", 
KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", 
TAG+="systemd" with "SUBSYSTEM=="tty", 
KERNEL=="ttyPS[0-9]|tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*",
 TAG+="systemd"",  in file 99-systemd.rules.



At least the 1st one *should* have worked, though NAME= seems wrong in the 2nd 
one...







At the same time, I replace the line of 
"KERNEL=="tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*",
 GROUP="dialout"" with 
"KERNEL=="ttyPS[0-9]|tty[A-Z]*[0-9]|ttymxc[0-9]*|pppox[0-9]*|ircomm[0-9]*|noz[0-9]*|rfcomm[0-9]*",
 GROUP="dialout"".



This line is irrelevant, since TAG+="systemd" is the important part – groups 
and modes shouldn't be the problem.









But they didn't take any effect.



Then at the same time, I do

cp /usr/lib/systemd/system/serial-getty@.service 
/etc/systemd/system/serial-getty@ttyPS0.service

Edit /etc/systemd/system/serial-getty\@ttyPS0.service:  replace  
"ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM" with 
"ExecStart=-/sbin/agetty --keep-baud 115200 %I $TERM"

ln -s /etc/systemd/system/serial-getty@ttyPS0.service 
/etc/systemd/system/getty.target.wants/



But there was still no effect. There is still boot failure logs like:

[ *] (3 of 3) a start job is running for dev-ttyPS0.device (41s / 1min 30s)// 
**here**

...

 [ TIME ] Timed out waiting for device dev-ttyPS0.device. // **here**

...



Yeah, the baudrate won't change anything if systemd doesn't even see the device 
in the first place. It doesn't even get to the point of launching agetty.







By the way, Do I need to add some configuration to tiger executing something 
like 'mknod /dev/ttyPS0 c 248 0'  for systemd or udev pls? If needed, where is 
the proper place to add this action pls?



No. The kernel automatically creates device nodes (as long as /dev has a 
"devtmpfs" mounted); udev only applies modes/symlinks. The problem here is that 
udev doesn't properly inform systemd about the new device.







>What does "udevadm info -a /dev/ttyPS0" output?

I can not get a console from ttyPS0, so I can not run  "udevadm info -a 
/dev/ttyPS0" in the target(xilinx pynq) board.



Try booting with the 'rescue' option, this should directly create a root login 
prompt on the kernel console.





Alternatively, try creating a simple .service that runs this command, then 
you'll find its output in the journal or in the boot console (depending on what 
StandardOutput= you set).









Thanks all,

At 2020-09-22 20:34:15, "Andrei Borzenkov" <arvidj...@gmail.com> wrote:

>On Tue, Sep 22, 2020 at 2:53 PM Mantas Mikulėnas <graw...@gmail.com> wrote:

>>

>> On Tue, Sep 22, 2020 at 1:46 PM Andrei Borzenkov <arvidj...@gmail.com> wrote:

>>>

>>> On Tue, Sep 22, 2020 at 1:35 PM ZhouPeng <zhoupengwor...@163.com> wrote:

>>> >

>>> > Hi all,

>>> >

>>> > When I use Fedora image as rootfs on Xilinx PYNQ-Z2, I encountered the 
>>> > issue  when use the /dev/ttyPS0.

>>> > I think the issue is because systemd and udev on fedora can didn't detect 
>>> > ttyPS0 properly. Do I need to install any other package or do some 
>>> > special configuration?

>>> >

>>> > **systemd version the issue has been seen with**

>>> > udevadm --version

>>> > 237

>>> > systemd-udev.riscv64                     237-1.0.riscv64.fc28

>>> >

>>> >

>>> > **Unexpected behaviour you saw**

>>> > We can see ttyPS0 boots ok in the kernel boot period:

>>> > [    0.180000] console [ttyPS0] enabledat MMIO 0xe0000000 (irq = 2, 
>>> > base_baud = 6250000) is a xuartps

>>> > [    0.180000] console [ttyPS0] enabled

>>> >

>>> > But, when boot into systemd, it failed on dev ttyPS0:

>>> > [ TIME ] Timed out waiting for device dev-ttyPS0.device. // **here**

>>>

>>> systemd only monitors for devices with "sysemd" tag. Tags are assigned

>>> by udev rules. You should add rule to assign tag to ttyPS0. I have no

>>> idea what it is, but something like

>>>

>>> ACTION!="remove", KERNEL=="ttyPS0", TAG+="systemd"Mantas

>>>

>>> should do it. Whether this should go upstream depends on how common

>>> this device is.

>>

>>

>> Well yes, but that should have been already covered by the existing upstream 
>> rules:

>>

>> 99-systemd.rules:12:SUBSYSTEM=="tty", 
>> KERNEL=="tty[a-zA-Z]*|hvc*|xvc*|hvsi*|ttysclp*|sclp_line*|3270/tty[0-9]*", 
>> TAG+="systemd"

>>

>

>Are you sure ttyPS0 has the "tty" subsystem?


_______________________________________________
systemd-devel mailing list
systemd-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/systemd-devel

Reply via email to