SV: Serial port of dw-abp-uart missing due to serial dev bus activation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I think that this could explain your problem: https://marc.info/?l=linux-acpi&m=152464754828003&w=2

"In short, when we added ACPI support to serdev, serdev started claiming
all slave devices to UARTs that happen to described by ACPI. Regardless
of whether there's a kernel driver for them or not."

But I don't know if it is fixed.

Best regards,
Einar
________________________________________
Från: linux-serial-owner@xxxxxxxxxxxxxxx <linux-serial-owner@xxxxxxxxxxxxxxx> för Paul van Tilburg <paulvt@xxxxxxxxxx>
Skickat: den 25 oktober 2018 11:41
Till: linux-serial@xxxxxxxxxxxxxxx
Ämne: Serial port of dw-abp-uart missing due to serial dev bus activation

Dear all,

This is a forward of a Debian bug report at the request of the Debian
kernel maintainers.  The original bug report is located here:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=911831

Since the upgrade of our system from Debian 9 (Stretch) to 10 (Buster),
but also from Ubuntu 16.04 LTS (Xenial) to 18.04 LTS (Bionic), the
serial port of our Atom E3950-based board can no longer be used.

I have traced the cause to the enabling of CONFIG_SERIAL_DEV_BUS=y and
CONFIG_SERIAL_DEV_CTRL_TTYPORT=y in the kernel config of versions
4.17.0-3 (Debian) and 4.15.0.36.38 (Ubuntu).

In a working system the dw-abp-uart driver exposes two tty devices:

  # dmesg | grep tty
  [    2.437836] dw-apb-uart.2: ttyS0 at MMIO 0x8121c000 (irq = 4, base_baud = 115200) is a 16550A
  [    2.439193] dw-apb-uart.3: ttyS1 at MMIO 0x8121a000 (irq = 6, base_baud = 115200) is a 16550A

of which we always use ttyS1.  (I do not know why ttyS0 does nothing,
supposedly this system has only one UART?) The corresponding udev info
is:

  looking at device '/devices/pci0000:00/0000:00:18.0/dw-apb-uart.2/tty/ttyS0':
    KERNEL=="ttyS0"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:18.0/dw-apb-uart.2':
    KERNELS=="dw-apb-uart.2"
    SUBSYSTEMS=="platform"
    DRIVERS=="dw-apb-uart"
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/pci0000:00/0000:00:18.0':
    KERNELS=="0000:00:18.0"
    SUBSYSTEMS=="pci"
    DRIVERS=="intel-lpss"
    ATTRS{ari_enabled}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x118000"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{device}=="0x5abc"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{index}=="9"
    ATTRS{irq}=="4"
    ATTRS{label}=="Onboard - Other"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{local_cpus}=="f"
    ATTRS{msi_bus}=="1"
    ATTRS{numa_node}=="-1"
    ATTRS{revision}=="0x0b"
    ATTRS{subsystem_device}=="0x7270"
    ATTRS{subsystem_vendor}=="0x8086"
    ATTRS{vendor}=="0x8086"

  looking at device '/devices/pci0000:00/0000:00:18.2/dw-apb-uart.3/tty/ttyS1':
    KERNEL=="ttyS1"
    SUBSYSTEM=="tty"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:18.2/dw-apb-uart.3':
    KERNELS=="dw-apb-uart.3"
    SUBSYSTEMS=="platform"
    DRIVERS=="dw-apb-uart"
    ATTRS{driver_override}=="(null)"

  looking at parent device '/devices/pci0000:00/0000:00:18.2':
    KERNELS=="0000:00:18.2"
    SUBSYSTEMS=="pci"
    DRIVERS=="intel-lpss"
    ATTRS{ari_enabled}=="0"
    ATTRS{broken_parity_status}=="0"
    ATTRS{class}=="0x118000"
    ATTRS{consistent_dma_mask_bits}=="32"
    ATTRS{d3cold_allowed}=="1"
    ATTRS{device}=="0x5ac0"
    ATTRS{dma_mask_bits}=="32"
    ATTRS{driver_override}=="(null)"
    ATTRS{enable}=="1"
    ATTRS{index}=="10"
    ATTRS{irq}=="6"
    ATTRS{label}=="Onboard - Other"
    ATTRS{local_cpulist}=="0-3"
    ATTRS{local_cpus}=="f"
    ATTRS{msi_bus}=="1"
    ATTRS{numa_node}=="-1"
    ATTRS{revision}=="0x0b"
    ATTRS{subsystem_device}=="0x7270"
    ATTRS{subsystem_vendor}=="0x8086"
    ATTRS{vendor}=="0x8086"


  looking at parent device '/devices/pci0000:00':
    KERNELS=="pci0000:00"
    SUBSYSTEMS==""
    DRIVERS==""

However, when the serial device bus with the serial TTY control port is
enabled, ttyS1 disappears:

  # dmesg | grep tty
  [    2.499748] dw-apb-uart.2: ttyS0 at MMIO 0x8121c000 (irq = 4, base_baud = 115200) is a 16550A
  [    2.500852] dw-apb-uart.3: ttyS1 at MMIO 0x8121a000 (irq = 6, base_baud = 115200) is a 16550A
  [    2.500996] serial serial0: tty port ttyS1 registered

The difference in the udev info is:

  looking at device '/devices/pci0000:00/0000:00:18.2/dw-apb-uart.3/serial0/serial0-0':
    KERNEL=="serial0-0"
    SUBSYSTEM=="serial"
    DRIVER==""

  looking at parent device '/devices/pci0000:00/0000:00:18.2/dw-apb-uart.3/serial0':
    KERNELS=="serial0"
    SUBSYSTEMS=="serial"
    DRIVERS==""

and there is no longer tty under /sys/devices/pci0000:00/0000:00:18.2/dw-apb-uart.3.

Attached is the full dmesg output for the broken tty port instance.  Let
me know if more information is required.

I must also note that I am currently not a list member and am not very
knowledgeable about the serial interface internals, so feel free to
point me to any further reading to understand what is going on under the
hood.

Kind regards,
Paul van Tilburg

--
Debian developer                        | E-mail: paulvt@xxxxxxxxxx
https://www.debian.org                  | GnuPG:  0xC6DE073EDA9EEC4D
>>> Using the Power of Debian GNU/Linux | XMPP:   paul@xxxxxxxx



[Index of Archives]     [Kernel Newbies]     [Security]     [Netfilter]     [Bugtraq]     [Linux PPP]     [Linux FS]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Linmodem]     [Device Mapper]     [Linux Kernel for ARM]

  Powered by Linux