Note: This bug is displayed in read-only format because the product is no longer active in Red Hat Bugzilla.
For bugs related to Red Hat Enterprise Linux 4 product line. The current stable release is 4.9. For Red Hat Enterprise Linux 6 and above, please visit Red Hat JIRA https://issues.redhat.com/secure/CreateIssue!default.jspa?pid=12332745 to report new issues.

Bug 498626

Summary: ITE it887x chipset serial ports don't work
Product: Red Hat Enterprise Linux 4 Reporter: Bryn M. Reeves <bmr>
Component: kernelAssignee: Red Hat Kernel Manager <kernel-mgr>
Status: CLOSED WONTFIX QA Contact: Red Hat Kernel QE team <kernel-qe>
Severity: medium Docs Contact:
Priority: low    
Version: 4.7CC: javiroman, jcastillo, jwest, krahn, ndevos, tao
Target Milestone: rc   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 563271 (view as bug list) Environment:
Last Closed: 2012-06-14 20:10:23 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
backport ite887x fixes to RHEL4 none

Description Bryn M. Reeves 2009-05-01 15:04:05 UTC
Description of problem:
The ITE it887x are a range of PCI devices providing serial and parallel port functions. These devices have some hardware quirks (e.g. LSR bugs that trigger the "LSR safety check engaged!" warning in serial8250_startup() resulting in ENODEV for the affected ports).

These devices look like:

# lspci -vvv
06:07.0 Serial controller: Integrated Technology Express, Inc. IT8874F PCI Dual Serial Port Controller (rev 01) (prog-if 02 [16550])

# cat /proc/tty/driver/serial
serinfo:1.0 driver revision:                 
0: uart:16550A port:000003F8 irq:4 tx:12 rx:0
1: uart:16550A port:000002F8 irq:3 tx:0 rx:0  
2: uart:16550A port:000003E8 irq:10 tx:0 rx:0 CTS|DSR|CD|RI
3: uart:16550A port:00000270 irq:10 tx:0 rx:0 CTS|DSR|CD|RI 

Note that all 887x devices report the same vendor/product IDs although they come with different combinations of functions. The patches listed below have code to cope with this.

These problems were fixed up for these chipsets upstream a couple of years ago:

commit 84f8c6fc0e3b6e48fd22c28fc3bb666a130b3994
Author: Niels de Vos <niels.devos>
Date:   Wed Aug 22 14:01:14 2007 -0700

    serial: add support for ITE 887x chips
    
    Add support for the it887x-chips (PCI) manufactured by ITE.
    
    Signed-off-by: Niels de Vos <niels.devos>
    Cc: Russell King <rmk.org.uk>
    Acked-by: Alan Cox <alan.org.uk>
    Signed-off-by: Andrew Morton <akpm>
    Signed-off-by: Linus Torvalds <torvalds>

commit e7c310c36e5fdf1b83a459e5db167bfbd86137db
Author: Niels de Vos <niels.devos>
Date:   Sun Jul 15 23:41:35 2007 -0700

    parport_pc: it887x fix
    
    The IO port range requested by parport_pc.c:sio_ite_8872_probe is too small.
    The IO-ports of ttyS1 (0x2f8) will be missconfigured by the ITE-chip.  The I
    starts looking for the chip a 0x2a0.  An IO-portrange of 32 will not overwri
    the ports of ttyS1.  Therefore register 0x60 should be written with
    0xe5000000, enabling the ITE and setting IO-portsize to 32 bytes.
    
    Signed-off-by: Andrew Morton <akpm>
    Signed-off-by: Linus Torvalds <torvalds>



Version-Release number of selected component (if applicable):
2.6.9-*.EL

How reproducible:
100%

Steps to Reproduce:
1. echo "hello2" > /dev/ttyS2
2. echo "hello3" > /dev/ttyS3
3. dmesg | tail
  
Actual results:
ttyS2: LSR safety check engaged!
ttyS3: LSR safety check engaged!

strace of /bin/echo shows ENODEV being returned.

Expected results:
No ENODEV or LSR warning. Data output on serial line.

Additional info:

Comment 2 Bryn M. Reeves 2009-05-05 17:51:48 UTC
Created attachment 342510 [details]
backport ite887x fixes to RHEL4

backport of:

84f8c6fc0e3b6e48fd22c28fc3bb666a130b3994
e7c310c36e5fdf1b83a459e5db167bfbd86137db

From linux-2.6.

I don't have hardware to give this any meaningful testing so have just reviewed the combined patch (looks sane :).

Jose, if I do a build with this change will you be able to get testing feedback?

Comment 8 Joe Krahn 2010-04-02 16:15:37 UTC
The updated kernel code does not work for all ITE cards. My card is a 2-serial, no-parallel version. It fails with the LSR warning and missed IRQ kernel errors. I registered a bug report (#578616) under Fedora 12, where the kernel already has the code from this patch.

The problem is that the updated serial/8250_pci.c and the existing parport/parport_pc.c code do not work together, because they each program the ioport separately. The current parport_pc.c code ignores serial-only cards, but redefines the ioports and does not release them. If I blacklist parport_pc to avoid this, there is no LSR warning, but the missed IRQ error remains. So, the serial driver is somehow not correctly configured to handle the IRQ.

My card is external, but there are some of these built into the motherboard. If so, maybe the BIOS allows the serial PNP to work, whereas something is missing for external cards.

Note: The author of the 8250_pci.c code, Niels de Vos, has a datasheet, but the email address from the the driver code comment bounced.

Comment 9 Niels de Vos 2010-04-15 12:05:32 UTC
Hi Joe,

there has been no RHEL-4 (or RHEL-5) kernel released that includes the required patched. This bug was opened to have the patches added to the RHEL kernel(s).

We can work on the Fedora part in bug 578616 if you like.

If you have valid Red Hat Enterprise Linux subscriptions, you can open a
service request on http://support.redhat.com and reference this bug. We should
be able to provide you with a test-kernel and see if your hardware works as
expected.

Cheers,
Niels