lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <1393022777-5959-1-git-send-email-iws@ovro.caltech.edu>
Date:	Fri, 21 Feb 2014 14:46:17 -0800
From:	"Ira W. Snyder" <iws@...o.caltech.edu>
To:	linux-kernel@...r.kernel.org
Cc:	gregkh@...e.de, gtdev@...arhead.de,
	"Ira W. Snyder" <iws@...o.caltech.edu>
Subject: [PATCH 1/1] serial: 8250_pci: fix support for MosChip 98xx boards

From: "Ira W. Snyder" <iws@...o.caltech.edu>

Commit 7808edcd306f22aeb23775d34e70b7fa2f58b852 "Basic support for
Moschip 9900 family I/O chips" broke support for the 98xx boards. This
is due to a missing check for the 99xx family inside the newly added
pci_netmos_9900_setup() function, which is now used for all boards in
the Moschip family.

The code for skipping BARs is incorrect for the 98xx boards. Using it
causes two serial ports to be left undetected on my 9865 board.

By checking for the 99xx boards and using the new code exclusively for
them, all of my serial ports are now detected.

Signed-off-by: Ira W. Snyder <iws@...o.caltech.edu>
---

Here is the lspci output for my 9865 board. On the 05:00.2 device, the
middle two serial ports (I/O ports 0x1010 and 0x1008) are left unused
and undetected without this patch.

After the patch, they work perfectly.

05:00.0 Serial controller: MosChip Semiconductor Technology Ltd. PCI 9865 Multi-I/O Controller (prog-if 02 [16550])
	Subsystem: Device a000:1000
	Flags: bus master, fast Back2Back, medium devsel, latency 32, IRQ 21
	I/O ports at 1028 [size=8]
	Memory at e0104000 (32-bit, non-prefetchable) [size=4K]
	Memory at e0103000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: <access denied>
	Kernel driver in use: serial
	Kernel modules: parport_pc

05:00.1 Serial controller: MosChip Semiconductor Technology Ltd. PCI 9865 Multi-I/O Controller (prog-if 02 [16550])
	Subsystem: Device a000:1000
	Flags: bus master, fast Back2Back, medium devsel, latency 32, IRQ 22
	I/O ports at 1020 [size=8]
	Memory at e0102000 (32-bit, non-prefetchable) [size=4K]
	Memory at e0101000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: <access denied>
	Kernel driver in use: serial
	Kernel modules: parport_pc

05:00.2 Communication controller: MosChip Semiconductor Technology Ltd. PCI 9865 Multi-I/O Controller
	Subsystem: Device a000:3004
	Flags: bus master, fast Back2Back, medium devsel, latency 32, IRQ 23
	I/O ports at 1018 [size=8]
	I/O ports at 1010 [size=8]
	I/O ports at 1008 [size=8]
	I/O ports at 1000 [size=8]
	Memory at e0100000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: <access denied>
	Kernel driver in use: serial

 drivers/tty/serial/8250/8250_pci.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index 50228eed3b6f..374551f196c5 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -783,7 +783,8 @@ static int pci_netmos_9900_setup(struct serial_private *priv,
 {
 	unsigned int bar;
 
-	if ((priv->dev->subsystem_device & 0xff00) == 0x3000) {
+	if ((priv->dev->subsystem_device & 0xff00) == 0x3000 &&
+		(priv->dev->device & 0xff00) == 0x9900) {
 		/* netmos apparently orders BARs by datasheet layout, so serial
 		 * ports get BARs 0 and 3 (or 1 and 4 for memmapped)
 		 */
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ