linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
@ 2021-11-17 14:57 Andy Shevchenko
  2021-11-17 14:57 ` [PATCH v1 1/2] serial: 8250_pci: Split out " Andy Shevchenko
                   ` (2 more replies)
  0 siblings, 3 replies; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-17 14:57 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Jay Dolan, linux-kernel,
	linux-serial
  Cc: Jiri Slaby

Split Pericom driver to a separate module.
While at it, re-enable high baud rates.

Jay, can you, please, test this on as many hardware as you have?

The series depends on the fix-series: https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u

Andy Shevchenko (1):
  serial: 8250_pci: Split out Pericom driver

Jay Dolan (1):
  serial: 8250_pericom: Re-enable higher baud rates

 drivers/tty/serial/8250/8250_pci.c     | 405 +------------------------
 drivers/tty/serial/8250/8250_pericom.c | 217 +++++++++++++
 drivers/tty/serial/8250/Kconfig        |   8 +
 drivers/tty/serial/8250/Makefile       |   1 +
 4 files changed, 231 insertions(+), 400 deletions(-)
 create mode 100644 drivers/tty/serial/8250/8250_pericom.c

-- 
2.33.0


^ permalink raw reply	[flat|nested] 19+ messages in thread

* [PATCH v1 1/2] serial: 8250_pci: Split out Pericom driver
  2021-11-17 14:57 [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Andy Shevchenko
@ 2021-11-17 14:57 ` Andy Shevchenko
  2021-11-18  1:12   ` Jay Dolan
  2021-11-17 14:57 ` [PATCH v1 2/2] serial: 8250_pericom: Re-enable higher baud rates Andy Shevchenko
  2021-11-19  6:32 ` [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Jay Dolan
  2 siblings, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-17 14:57 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Jay Dolan, linux-kernel,
	linux-serial
  Cc: Jiri Slaby

Pericom along with Acces I/O support consumes a lot of LOCs in 8250_pci.c.
For the sake of easier maintenance, split it to a separate driver.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/tty/serial/8250/8250_pci.c     | 405 +------------------------
 drivers/tty/serial/8250/8250_pericom.c | 217 +++++++++++++
 drivers/tty/serial/8250/Kconfig        |   8 +
 drivers/tty/serial/8250/Makefile       |   1 +
 4 files changed, 231 insertions(+), 400 deletions(-)
 create mode 100644 drivers/tty/serial/8250/8250_pericom.c

diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
index 8b29a9381c74..f8d68db73db8 100644
--- a/drivers/tty/serial/8250/8250_pci.c
+++ b/drivers/tty/serial/8250/8250_pci.c
@@ -1318,89 +1318,6 @@ static int pci_default_setup(struct serial_private *priv,
 
 	return setup_port(priv, port, bar, offset, board->reg_shift);
 }
-static void
-pericom_do_set_divisor(struct uart_port *port, unsigned int baud,
-			       unsigned int quot, unsigned int quot_frac)
-{
-	int scr;
-	int lcr;
-
-	for (scr = 16; scr > 4; scr--) {
-		unsigned int maxrate = port->uartclk / scr;
-		unsigned int divisor = maxrate / baud;
-		int delta = maxrate / divisor - baud;
-
-		if (baud > maxrate + baud / 50)
-			continue;
-
-		if (divisor == 0 || delta > baud / 50)
-			divisor++;
-
-		if (divisor > 0xffff)
-			continue;
-
-		/* Update delta due to possible divisor change */
-		delta = maxrate / divisor - baud;
-		if (abs(delta) < baud / 50) {
-			lcr = serial_port_in(port, UART_LCR);
-			serial_port_out(port, UART_LCR, lcr | 0x80);
-			serial_port_out(port, UART_DLL, divisor & 0xff);
-			serial_port_out(port, UART_DLM, divisor >> 8 & 0xff);
-			serial_port_out(port, 2, 16 - scr);
-			serial_port_out(port, UART_LCR, lcr);
-			return;
-		}
-	}
-}
-static int pci_pericom_setup(struct serial_private *priv,
-		  const struct pciserial_board *board,
-		  struct uart_8250_port *port, int idx)
-{
-	unsigned int bar, offset = board->first_offset, maxnr;
-
-	bar = FL_GET_BASE(board->flags);
-	if (board->flags & FL_BASE_BARS)
-		bar += idx;
-	else
-		offset += idx * board->uart_offset;
-
-
-	maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >>
-		(board->reg_shift + 3);
-
-	if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)
-		return 1;
-
-	port->port.set_divisor = pericom_do_set_divisor;
-
-	return setup_port(priv, port, bar, offset, board->reg_shift);
-}
-
-static int pci_pericom_setup_four_at_eight(struct serial_private *priv,
-		  const struct pciserial_board *board,
-		  struct uart_8250_port *port, int idx)
-{
-	unsigned int bar, offset = board->first_offset, maxnr;
-
-	bar = FL_GET_BASE(board->flags);
-	if (board->flags & FL_BASE_BARS)
-		bar += idx;
-	else
-		offset += idx * board->uart_offset;
-
-	if (idx==3)
-		offset = 0x38;
-
-	maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >>
-		(board->reg_shift + 3);
-
-	if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)
-		return 1;
-
-	port->port.set_divisor = pericom_do_set_divisor;
-
-	return setup_port(priv, port, bar, offset, board->reg_shift);
-}
 
 static int
 ce4100_serial_setup(struct serial_private *priv,
@@ -1886,42 +1803,6 @@ pci_moxa_setup(struct serial_private *priv,
 #define PCIE_DEVICE_ID_WCH_CH384_8S	0x3853
 #define PCIE_DEVICE_ID_WCH_CH382_2S	0x3253
 
-#define PCI_VENDOR_ID_ACCESIO			0x494f
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SDB	0x1051
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2S	0x1053
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB	0x105C
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S	0x105E
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_2DB	0x1091
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_2	0x1093
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB	0x1099
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4	0x109B
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SMDB	0x10D1
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2SM	0x10D3
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB	0x10DA
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM	0x10DC
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_1	0x1108
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_2	0x1110
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_2	0x1111
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4	0x1118
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4	0x1119
-#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2S	0x1152
-#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S	0x115A
-#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_2	0x1190
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_2	0x1191
-#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4	0x1198
-#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4	0x1199
-#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2SM	0x11D0
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4	0x105A
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4	0x105B
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM422_8	0x106A
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM485_8	0x106B
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4	0x1098
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_8	0x10A9
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM	0x10D9
-#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM	0x10E9
-#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM	0x11D8
-
-
 #define	PCI_DEVICE_ID_MOXA_CP102E	0x1024
 #define	PCI_DEVICE_ID_MOXA_CP102EL	0x1025
 #define	PCI_DEVICE_ID_MOXA_CP104EL_A	0x1045
@@ -2198,16 +2079,6 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
 		.setup		= pci_default_setup,
 		.exit		= pci_plx9050_exit,
 	},
-	/*
-	 * Pericom (Only 7954 - It have a offset jump for port 4)
-	 */
-	{
-		.vendor		= PCI_VENDOR_ID_PERICOM,
-		.device		= PCI_DEVICE_ID_PERICOM_PI7C9X7954,
-		.subvendor	= PCI_ANY_ID,
-		.subdevice	= PCI_ANY_ID,
-		.setup		= pci_pericom_setup_four_at_eight,
-	},
 	/*
 	 * PLX
 	 */
@@ -2238,125 +2109,7 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
 		.setup		= pci_default_setup,
 		.exit		= pci_plx9050_exit,
 	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup_four_at_eight,
-	},
-	{
-		.vendor     = PCI_VENDOR_ID_ACCESIO,
-		.device     = PCI_ANY_ID,
-		.subvendor  = PCI_ANY_ID,
-		.subdevice  = PCI_ANY_ID,
-		.setup      = pci_pericom_setup,
-	},	/*
+	/*
 	 * SBS Technologies, Inc., PMC-OCTALPRO 232
 	 */
 	{
@@ -2948,10 +2701,6 @@ enum pci_board_num_t {
 	pbn_wch382_2,
 	pbn_wch384_4,
 	pbn_wch384_8,
-	pbn_pericom_PI7C9X7951,
-	pbn_pericom_PI7C9X7952,
-	pbn_pericom_PI7C9X7954,
-	pbn_pericom_PI7C9X7958,
 	pbn_sunix_pci_1s,
 	pbn_sunix_pci_2s,
 	pbn_sunix_pci_4s,
@@ -3696,33 +3445,6 @@ static struct pciserial_board pci_boards[] = {
 		.uart_offset    = 8,
 		.first_offset   = 0x00,
 	},
-	/*
-	 * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
-	 */
-	[pbn_pericom_PI7C9X7951] = {
-		.flags          = FL_BASE0,
-		.num_ports      = 1,
-		.base_baud      = 921600,
-		.uart_offset	= 0x8,
-	},
-	[pbn_pericom_PI7C9X7952] = {
-		.flags          = FL_BASE0,
-		.num_ports      = 2,
-		.base_baud      = 921600,
-		.uart_offset	= 0x8,
-	},
-	[pbn_pericom_PI7C9X7954] = {
-		.flags          = FL_BASE0,
-		.num_ports      = 4,
-		.base_baud      = 921600,
-		.uart_offset	= 0x8,
-	},
-	[pbn_pericom_PI7C9X7958] = {
-		.flags          = FL_BASE0,
-		.num_ports      = 8,
-		.base_baud      = 921600,
-		.uart_offset	= 0x8,
-	},
 	[pbn_sunix_pci_1s] = {
 		.num_ports	= 1,
 		.base_baud      = 921600,
@@ -3834,6 +3556,10 @@ static const struct pci_device_id blacklist[] = {
 	{ PCI_VDEVICE(EXAR, PCI_ANY_ID), },
 	{ PCI_VDEVICE(COMMTECH, PCI_ANY_ID), },
 
+	/* Pericom devices */
+	{ PCI_VDEVICE(PERICOM, PCI_ANY_ID), },
+	{ PCI_VDEVICE(ACCESSIO, PCI_ANY_ID), },
+
 	/* End of the black list */
 	{ }
 };
@@ -5027,127 +4753,6 @@ static const struct pci_device_id serial_pci_tbl[] = {
 	{	PCI_VENDOR_ID_DCI, PCI_DEVICE_ID_DCI_PCCOM8,
 		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
 		pbn_b3_8_115200 },
-	/*
-	 * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
-	 */
-	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951,
-		PCI_ANY_ID, PCI_ANY_ID,
-		0,
-		0, pbn_pericom_PI7C9X7951 },
-	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952,
-		PCI_ANY_ID, PCI_ANY_ID,
-		0,
-		0, pbn_pericom_PI7C9X7952 },
-	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954,
-		PCI_ANY_ID, PCI_ANY_ID,
-		0,
-		0, pbn_pericom_PI7C9X7954 },
-	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958,
-		PCI_ANY_ID, PCI_ANY_ID,
-		0,
-		0, pbn_pericom_PI7C9X7958 },
-	/*
-	 * ACCES I/O Products quad
-	 */
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SDB,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2S,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_2DB,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_2,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SMDB,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2SM,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_1,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7951 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_2,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_2,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2S,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_2,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_2,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2SM,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7952 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM422_8,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7958 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM485_8,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7958 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_8,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7958 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7958 },
-	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM,
-		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
-		pbn_pericom_PI7C9X7954 },
 	/*
 	 * Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke)
 	 */
diff --git a/drivers/tty/serial/8250/8250_pericom.c b/drivers/tty/serial/8250/8250_pericom.c
new file mode 100644
index 000000000000..322c3b743a38
--- /dev/null
+++ b/drivers/tty/serial/8250/8250_pericom.c
@@ -0,0 +1,217 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Driver for Pericom UART */
+
+#include <linux/bits.h>
+#include <linux/module.h>
+#include <linux/overflow.h>
+#include <linux/pci.h>
+
+#include "8250.h"
+
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SDB	0x1051
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2S	0x1053
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_4	0x105a
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_4	0x105b
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SDB	0x105c
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4S	0x105e
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_8	0x106a
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_8	0x106b
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_2DB	0x1091
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_2	0x1093
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4	0x1098
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4DB	0x1099
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_4	0x109b
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_8	0x10a9
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SMDB	0x10d1
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2SM	0x10d3
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SM	0x10d9
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SMDB	0x10da
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4SM	0x10dc
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_8SM	0x10e9
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_1	0x1108
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_2	0x1110
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_2	0x1111
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_4	0x1118
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_4	0x1119
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2S	0x1152
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4S	0x115a
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_2	0x1190
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_2	0x1191
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_4	0x1198
+#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_4	0x1199
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2SM	0x11d0
+#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4SM	0x11d8
+
+struct pericom8250 {
+	void __iomem *virt;
+	unsigned int nr;
+	int line[];
+};
+
+#define PERICOM8250_DEFAUL_BAUD_RATE		921600
+
+static void pericom_do_set_divisor(struct uart_port *port, unsigned int baud,
+				   unsigned int quot, unsigned int quot_frac)
+{
+	int scr;
+
+	for (scr = 16 ; scr > 4 ; scr--) {
+		int maxrate = port->uartclk / scr;
+		int divisor = maxrate / baud;
+		int delta = maxrate / divisor - baud;
+
+		if (baud > maxrate + baud / 50)
+			continue;
+
+		if (divisor == 0 || delta > baud / 50)
+			divisor++;
+
+		if (divisor > 0xffff)
+			continue;
+
+		/* Update delta due to possible divisor change */
+		delta = maxrate / divisor - baud;
+		if (abs(delta) < baud / 50) {
+			int lcr = serial_port_in(port, UART_LCR);
+
+			serial_port_out(port, UART_LCR, lcr | 0x80);
+			serial_port_out(port, UART_DLL, divisor & 0xff);
+			serial_port_out(port, UART_DLM, (divisor >> 8) & 0xff);
+			serial_port_out(port, 2, 16 - scr);
+			serial_port_out(port, UART_LCR, lcr);
+			return;
+		}
+	}
+}
+
+static int pericom8250_probe(struct pci_dev *pdev, const struct pci_device_id *id)
+{
+	unsigned int nr, i, bar = 0, maxnr;
+	struct pericom8250 *pericom;
+	struct uart_8250_port uart;
+	int ret;
+
+	ret = pcim_enable_device(pdev);
+	if (ret)
+		return ret;
+
+	maxnr = pci_resource_len(pdev, bar) >> 3;
+
+	if (pdev->vendor == PCI_VENDOR_ID_PERICOM)
+		nr = pdev->device & 0x0f;
+	else if (pdev->vendor == PCI_VENDOR_ID_ACCESSIO)
+		nr = BIT(((pdev->device & 0x38) >> 3) - 1);
+	else
+		nr = 1;
+
+	pericom = devm_kzalloc(&pdev->dev, struct_size(pericom, line, nr), GFP_KERNEL);
+	if (!pericom)
+		return -ENOMEM;
+
+	pericom->virt = pcim_iomap(pdev, bar, 0);
+	if (!pericom->virt)
+		return -ENOMEM;
+
+	memset(&uart, 0, sizeof(uart));
+
+	uart.port.dev = &pdev->dev;
+	uart.port.irq = pdev->irq;
+	uart.port.private_data = pericom;
+	uart.port.iotype = UPIO_MEM;
+	uart.port.uartclk = PERICOM8250_DEFAUL_BAUD_RATE * 16;
+	uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
+	uart.port.set_divisor = pericom_do_set_divisor;
+	for (i = 0; i < nr && i < maxnr; i++) {
+		unsigned int offset = (i == 3 && nr == 4) ? 0x38 : i * 0x8;
+
+		uart.port.mapbase = pci_resource_start(pdev, bar) + offset;
+		uart.port.membase = pericom->virt + offset;
+
+		dev_dbg(&pdev->dev, "Setup PCI port: port %lx, irq %d, type %d\n",
+			uart.port.iobase, uart.port.irq, uart.port.iotype);
+
+		pericom->line[i] = serial8250_register_8250_port(&uart);
+		if (pericom->line[i] < 0) {
+			dev_err(&pdev->dev,
+				"Couldn't register serial port %lx, irq %d, type %d, error %d\n",
+				uart.port.iobase, uart.port.irq,
+				uart.port.iotype, pericom->line[i]);
+			break;
+		}
+	}
+	pericom->nr = i;
+
+	pci_set_drvdata(pdev, pericom);
+	return 0;
+}
+
+static void pericom8250_remove(struct pci_dev *pdev)
+{
+	struct pericom8250 *pericom = pci_get_drvdata(pdev);
+	unsigned int i;
+
+	for (i = 0; i < pericom->nr; i++)
+		serial8250_unregister_port(pericom->line[i]);
+}
+
+static const struct pci_device_id pericom8250_pci_ids[] = {
+	/*
+	 * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
+	 * (Only 7954 has an offset jump for port 4)
+	 */
+	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951) },
+	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952) },
+	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954) },
+	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958) },
+
+	/*
+	 * ACCES I/O Products quad
+	 * (Only 7954 has an offset jump for port 4)
+	 */
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SDB) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2S) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SDB) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4S) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_8) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_8) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_2DB) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_2) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4DB) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_8) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SMDB) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2SM) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SM) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SMDB) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4SM) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_8SM) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_1) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_2) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_2) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2S) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4S) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_2) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_2) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_4) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2SM) },
+	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4SM) },
+	{ }
+};
+MODULE_DEVICE_TABLE(pci, pericom8250_pci_ids);
+
+static struct pci_driver pericom8250_pci_driver = {
+	.name           = "8250_pericom",
+	.id_table       = pericom8250_pci_ids,
+	.probe          = pericom8250_probe,
+	.remove         = pericom8250_remove,
+};
+module_pci_driver(pericom8250_pci_driver);
+
+MODULE_LICENSE("GPL v2");
+MODULE_DESCRIPTION("Pericom UART driver");
diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig
index 8cd11aa63ed5..9d415a38cc71 100644
--- a/drivers/tty/serial/8250/Kconfig
+++ b/drivers/tty/serial/8250/Kconfig
@@ -498,6 +498,14 @@ config SERIAL_8250_MID
 	  present on the UART found on Intel Medfield SOC and various other
 	  Intel platforms.
 
+config SERIAL_8250_PERICOM
+	tristate "Support for Pericom and Acces I/O serial ports"
+	default SERIAL_8250
+	depends on SERIAL_8250 && PCI
+	help
+	  Selecting this option will enable handling of the extra features
+	  present on the Pericom and Acces I/O UARTs.
+
 config SERIAL_8250_PXA
 	tristate "PXA serial port support"
 	depends on SERIAL_8250
diff --git a/drivers/tty/serial/8250/Makefile b/drivers/tty/serial/8250/Makefile
index b9bcd73c8997..4e4913e0e4d2 100644
--- a/drivers/tty/serial/8250/Makefile
+++ b/drivers/tty/serial/8250/Makefile
@@ -36,6 +36,7 @@ obj-$(CONFIG_SERIAL_8250_UNIPHIER)	+= 8250_uniphier.o
 obj-$(CONFIG_SERIAL_8250_INGENIC)	+= 8250_ingenic.o
 obj-$(CONFIG_SERIAL_8250_LPSS)		+= 8250_lpss.o
 obj-$(CONFIG_SERIAL_8250_MID)		+= 8250_mid.o
+obj-$(CONFIG_SERIAL_8250_PERICOM)	+= 8250_pericom.o
 obj-$(CONFIG_SERIAL_8250_PXA)		+= 8250_pxa.o
 obj-$(CONFIG_SERIAL_8250_TEGRA)		+= 8250_tegra.o
 obj-$(CONFIG_SERIAL_8250_BCM7271)	+= 8250_bcm7271.o
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* [PATCH v1 2/2] serial: 8250_pericom: Re-enable higher baud rates
  2021-11-17 14:57 [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Andy Shevchenko
  2021-11-17 14:57 ` [PATCH v1 1/2] serial: 8250_pci: Split out " Andy Shevchenko
@ 2021-11-17 14:57 ` Andy Shevchenko
  2021-11-19  6:32 ` [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Jay Dolan
  2 siblings, 0 replies; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-17 14:57 UTC (permalink / raw)
  To: Greg Kroah-Hartman, Andy Shevchenko, Jay Dolan, linux-kernel,
	linux-serial
  Cc: Jiri Slaby

From: Jay Dolan <jay.dolan@accesio.com>

Add UPF_MAGIC_MULTIPLIER to the port flags since there is now
range checking in serial8250_get_baud_rate() in 8250_port.c.

Signed-off-by: Jay Dolan <jay.dolan@accesio.com>
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
 drivers/tty/serial/8250/8250_pericom.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/tty/serial/8250/8250_pericom.c b/drivers/tty/serial/8250/8250_pericom.c
index 322c3b743a38..e1b6a64da5c9 100644
--- a/drivers/tty/serial/8250/8250_pericom.c
+++ b/drivers/tty/serial/8250/8250_pericom.c
@@ -119,7 +119,7 @@ static int pericom8250_probe(struct pci_dev *pdev, const struct pci_device_id *i
 	uart.port.private_data = pericom;
 	uart.port.iotype = UPIO_MEM;
 	uart.port.uartclk = PERICOM8250_DEFAUL_BAUD_RATE * 16;
-	uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
+	uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ | UPF_MAGIC_MULTIPLIER;
 	uart.port.set_divisor = pericom_do_set_divisor;
 	for (i = 0; i < nr && i < maxnr; i++) {
 		unsigned int offset = (i == 3 && nr == 4) ? 0x38 : i * 0x8;
-- 
2.33.0


^ permalink raw reply related	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 1/2] serial: 8250_pci: Split out Pericom driver
  2021-11-17 14:57 ` [PATCH v1 1/2] serial: 8250_pci: Split out " Andy Shevchenko
@ 2021-11-18  1:12   ` Jay Dolan
  2021-11-18  9:50     ` Andy Shevchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Jay Dolan @ 2021-11-18  1:12 UTC (permalink / raw)
  To: Andy Shevchenko, Greg Kroah-Hartman, linux-kernel, linux-serial
  Cc: Jiri Slaby



On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> Pericom along with Acces I/O support consumes a lot of LOCs in 8250_pci.c.
> For the sake of easier maintenance, split it to a separate driver.
> 
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
>   drivers/tty/serial/8250/8250_pci.c     | 405 +------------------------
>   drivers/tty/serial/8250/8250_pericom.c | 217 +++++++++++++
>   drivers/tty/serial/8250/Kconfig        |   8 +
>   drivers/tty/serial/8250/Makefile       |   1 +
>   4 files changed, 231 insertions(+), 400 deletions(-)
>   create mode 100644 drivers/tty/serial/8250/8250_pericom.c
> 
> diff --git a/drivers/tty/serial/8250/8250_pci.c b/drivers/tty/serial/8250/8250_pci.c
> index 8b29a9381c74..f8d68db73db8 100644
> --- a/drivers/tty/serial/8250/8250_pci.c
> +++ b/drivers/tty/serial/8250/8250_pci.c
> @@ -1318,89 +1318,6 @@ static int pci_default_setup(struct serial_private *priv,
>   
>   	return setup_port(priv, port, bar, offset, board->reg_shift);
>   }
> -static void
> -pericom_do_set_divisor(struct uart_port *port, unsigned int baud,
> -			       unsigned int quot, unsigned int quot_frac)
> -{
> -	int scr;
> -	int lcr;
> -
> -	for (scr = 16; scr > 4; scr--) {
> -		unsigned int maxrate = port->uartclk / scr;
> -		unsigned int divisor = maxrate / baud;
> -		int delta = maxrate / divisor - baud;
> -
> -		if (baud > maxrate + baud / 50)
> -			continue;
> -
> -		if (divisor == 0 || delta > baud / 50)
> -			divisor++;
> -
> -		if (divisor > 0xffff)
> -			continue;
> -
> -		/* Update delta due to possible divisor change */
> -		delta = maxrate / divisor - baud;
> -		if (abs(delta) < baud / 50) {
> -			lcr = serial_port_in(port, UART_LCR);
> -			serial_port_out(port, UART_LCR, lcr | 0x80);
> -			serial_port_out(port, UART_DLL, divisor & 0xff);
> -			serial_port_out(port, UART_DLM, divisor >> 8 & 0xff);
> -			serial_port_out(port, 2, 16 - scr);
> -			serial_port_out(port, UART_LCR, lcr);
> -			return;
> -		}
> -	}
> -}
> -static int pci_pericom_setup(struct serial_private *priv,
> -		  const struct pciserial_board *board,
> -		  struct uart_8250_port *port, int idx)
> -{
> -	unsigned int bar, offset = board->first_offset, maxnr;
> -
> -	bar = FL_GET_BASE(board->flags);
> -	if (board->flags & FL_BASE_BARS)
> -		bar += idx;
> -	else
> -		offset += idx * board->uart_offset;
> -
> -
> -	maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >>
> -		(board->reg_shift + 3);
> -
> -	if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)
> -		return 1;
> -
> -	port->port.set_divisor = pericom_do_set_divisor;
> -
> -	return setup_port(priv, port, bar, offset, board->reg_shift);
> -}
> -
> -static int pci_pericom_setup_four_at_eight(struct serial_private *priv,
> -		  const struct pciserial_board *board,
> -		  struct uart_8250_port *port, int idx)
> -{
> -	unsigned int bar, offset = board->first_offset, maxnr;
> -
> -	bar = FL_GET_BASE(board->flags);
> -	if (board->flags & FL_BASE_BARS)
> -		bar += idx;
> -	else
> -		offset += idx * board->uart_offset;
> -
> -	if (idx==3)
> -		offset = 0x38;
> -
> -	maxnr = (pci_resource_len(priv->dev, bar) - board->first_offset) >>
> -		(board->reg_shift + 3);
> -
> -	if (board->flags & FL_REGION_SZ_CAP && idx >= maxnr)
> -		return 1;
> -
> -	port->port.set_divisor = pericom_do_set_divisor;
> -
> -	return setup_port(priv, port, bar, offset, board->reg_shift);
> -}
>   
>   static int
>   ce4100_serial_setup(struct serial_private *priv,
> @@ -1886,42 +1803,6 @@ pci_moxa_setup(struct serial_private *priv,
>   #define PCIE_DEVICE_ID_WCH_CH384_8S	0x3853
>   #define PCIE_DEVICE_ID_WCH_CH382_2S	0x3253
>   
> -#define PCI_VENDOR_ID_ACCESIO			0x494f
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SDB	0x1051
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2S	0x1053
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB	0x105C
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S	0x105E
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_2DB	0x1091
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_2	0x1093
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB	0x1099
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4	0x109B
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SMDB	0x10D1
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2SM	0x10D3
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB	0x10DA
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM	0x10DC
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_1	0x1108
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_2	0x1110
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_2	0x1111
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4	0x1118
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4	0x1119
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2S	0x1152
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S	0x115A
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_2	0x1190
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_2	0x1191
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4	0x1198
> -#define PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4	0x1199
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2SM	0x11D0
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4	0x105A
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4	0x105B
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM422_8	0x106A
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM485_8	0x106B
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4	0x1098
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM232_8	0x10A9
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM	0x10D9
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM	0x10E9
> -#define PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM	0x11D8
> -
> -
>   #define	PCI_DEVICE_ID_MOXA_CP102E	0x1024
>   #define	PCI_DEVICE_ID_MOXA_CP102EL	0x1025
>   #define	PCI_DEVICE_ID_MOXA_CP104EL_A	0x1045
> @@ -2198,16 +2079,6 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
>   		.setup		= pci_default_setup,
>   		.exit		= pci_plx9050_exit,
>   	},
> -	/*
> -	 * Pericom (Only 7954 - It have a offset jump for port 4)
> -	 */
> -	{
> -		.vendor		= PCI_VENDOR_ID_PERICOM,
> -		.device		= PCI_DEVICE_ID_PERICOM_PI7C9X7954,
> -		.subvendor	= PCI_ANY_ID,
> -		.subdevice	= PCI_ANY_ID,
> -		.setup		= pci_pericom_setup_four_at_eight,
> -	},
>   	/*
>   	 * PLX
>   	 */
> @@ -2238,125 +2109,7 @@ static struct pci_serial_quirk pci_serial_quirks[] = {
>   		.setup		= pci_default_setup,
>   		.exit		= pci_plx9050_exit,
>   	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup_four_at_eight,
> -	},
> -	{
> -		.vendor     = PCI_VENDOR_ID_ACCESIO,
> -		.device     = PCI_ANY_ID,
> -		.subvendor  = PCI_ANY_ID,
> -		.subdevice  = PCI_ANY_ID,
> -		.setup      = pci_pericom_setup,
> -	},	/*
> +	/*
>   	 * SBS Technologies, Inc., PMC-OCTALPRO 232
>   	 */
>   	{
> @@ -2948,10 +2701,6 @@ enum pci_board_num_t {
>   	pbn_wch382_2,
>   	pbn_wch384_4,
>   	pbn_wch384_8,
> -	pbn_pericom_PI7C9X7951,
> -	pbn_pericom_PI7C9X7952,
> -	pbn_pericom_PI7C9X7954,
> -	pbn_pericom_PI7C9X7958,
>   	pbn_sunix_pci_1s,
>   	pbn_sunix_pci_2s,
>   	pbn_sunix_pci_4s,
> @@ -3696,33 +3445,6 @@ static struct pciserial_board pci_boards[] = {
>   		.uart_offset    = 8,
>   		.first_offset   = 0x00,
>   	},
> -	/*
> -	 * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
> -	 */
> -	[pbn_pericom_PI7C9X7951] = {
> -		.flags          = FL_BASE0,
> -		.num_ports      = 1,
> -		.base_baud      = 921600,
> -		.uart_offset	= 0x8,
> -	},
> -	[pbn_pericom_PI7C9X7952] = {
> -		.flags          = FL_BASE0,
> -		.num_ports      = 2,
> -		.base_baud      = 921600,
> -		.uart_offset	= 0x8,
> -	},
> -	[pbn_pericom_PI7C9X7954] = {
> -		.flags          = FL_BASE0,
> -		.num_ports      = 4,
> -		.base_baud      = 921600,
> -		.uart_offset	= 0x8,
> -	},
> -	[pbn_pericom_PI7C9X7958] = {
> -		.flags          = FL_BASE0,
> -		.num_ports      = 8,
> -		.base_baud      = 921600,
> -		.uart_offset	= 0x8,
> -	},
>   	[pbn_sunix_pci_1s] = {
>   		.num_ports	= 1,
>   		.base_baud      = 921600,
> @@ -3834,6 +3556,10 @@ static const struct pci_device_id blacklist[] = {
>   	{ PCI_VDEVICE(EXAR, PCI_ANY_ID), },
>   	{ PCI_VDEVICE(COMMTECH, PCI_ANY_ID), },
>   
> +	/* Pericom devices */
> +	{ PCI_VDEVICE(PERICOM, PCI_ANY_ID), },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_ANY_ID), },
> +
>   	/* End of the black list */
>   	{ }
>   };
> @@ -5027,127 +4753,6 @@ static const struct pci_device_id serial_pci_tbl[] = {
>   	{	PCI_VENDOR_ID_DCI, PCI_DEVICE_ID_DCI_PCCOM8,
>   		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
>   		pbn_b3_8_115200 },
> -	/*
> -	 * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
> -	 */
> -	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951,
> -		PCI_ANY_ID, PCI_ANY_ID,
> -		0,
> -		0, pbn_pericom_PI7C9X7951 },
> -	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952,
> -		PCI_ANY_ID, PCI_ANY_ID,
> -		0,
> -		0, pbn_pericom_PI7C9X7952 },
> -	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954,
> -		PCI_ANY_ID, PCI_ANY_ID,
> -		0,
> -		0, pbn_pericom_PI7C9X7954 },
> -	{   PCI_VENDOR_ID_PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958,
> -		PCI_ANY_ID, PCI_ANY_ID,
> -		0,
> -		0, pbn_pericom_PI7C9X7958 },
> -	/*
> -	 * ACCES I/O Products quad
> -	 */
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SDB,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2S,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SDB,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4S,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_2DB,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_2,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4DB,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM232_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_2SMDB,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_2SM,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SMDB,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_COM_4SM,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_1,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7951 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_2,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_2,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM422_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM485_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2S,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4S,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_2,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_2,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM232_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_MPCIE_ICM232_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_2SM,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7952 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM422_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM485_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM422_8,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7958 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM485_8,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7958 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_4,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM232_8,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7958 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_4SM,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_COM_8SM,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7958 },
> -	{	PCI_VENDOR_ID_ACCESIO, PCI_DEVICE_ID_ACCESIO_PCIE_ICM_4SM,
> -		PCI_ANY_ID, PCI_ANY_ID, 0, 0,
> -		pbn_pericom_PI7C9X7954 },
>   	/*
>   	 * Topic TP560 Data/Fax/Voice 56k modem (reported by Evan Clarke)
>   	 */
> diff --git a/drivers/tty/serial/8250/8250_pericom.c b/drivers/tty/serial/8250/8250_pericom.c
> new file mode 100644
> index 000000000000..322c3b743a38
> --- /dev/null
> +++ b/drivers/tty/serial/8250/8250_pericom.c
> @@ -0,0 +1,217 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/* Driver for Pericom UART */
> +
> +#include <linux/bits.h>
> +#include <linux/module.h>
> +#include <linux/overflow.h>
> +#include <linux/pci.h>
> +
> +#include "8250.h"
> +
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SDB	0x1051
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2S	0x1053
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_4	0x105a
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_4	0x105b
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SDB	0x105c
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4S	0x105e
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_8	0x106a
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_8	0x106b
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_2DB	0x1091
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_2	0x1093
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4	0x1098
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4DB	0x1099
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_4	0x109b
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_8	0x10a9
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SMDB	0x10d1
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2SM	0x10d3
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SM	0x10d9
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SMDB	0x10da
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4SM	0x10dc
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_COM_8SM	0x10e9
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_1	0x1108
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_2	0x1110
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_2	0x1111
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_4	0x1118
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_4	0x1119
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2S	0x1152
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4S	0x115a
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_2	0x1190
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_2	0x1191
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_4	0x1198
> +#define PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_4	0x1199
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2SM	0x11d0
> +#define PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4SM	0x11d8
> +
> +struct pericom8250 {
> +	void __iomem *virt;
> +	unsigned int nr;
> +	int line[];
> +};
> +
> +#define PERICOM8250_DEFAUL_BAUD_RATE		921600
> +
> +static void pericom_do_set_divisor(struct uart_port *port, unsigned int baud,
> +				   unsigned int quot, unsigned int quot_frac)
> +{
> +	int scr;
> +
> +	for (scr = 16 ; scr > 4 ; scr--) {
> +		int maxrate = port->uartclk / scr;
> +		int divisor = maxrate / baud;
> +		int delta = maxrate / divisor - baud;
> +
> +		if (baud > maxrate + baud / 50)
> +			continue;
> +
> +		if (divisor == 0 || delta > baud / 50)
> +			divisor++;
> +
> +		if (divisor > 0xffff)
> +			continue;
> +
> +		/* Update delta due to possible divisor change */
> +		delta = maxrate / divisor - baud;
> +		if (abs(delta) < baud / 50) {
> +			int lcr = serial_port_in(port, UART_LCR);
> +
> +			serial_port_out(port, UART_LCR, lcr | 0x80);
> +			serial_port_out(port, UART_DLL, divisor & 0xff);
> +			serial_port_out(port, UART_DLM, (divisor >> 8) & 0xff);
> +			serial_port_out(port, 2, 16 - scr);
> +			serial_port_out(port, UART_LCR, lcr);
> +			return;
> +		}
> +	}
> +}
> +
> +static int pericom8250_probe(struct pci_dev *pdev, const struct pci_device_id *id)
> +{
> +	unsigned int nr, i, bar = 0, maxnr;
> +	struct pericom8250 *pericom;
> +	struct uart_8250_port uart;
> +	int ret;
> +
> +	ret = pcim_enable_device(pdev);
> +	if (ret)
> +		return ret;
> +
> +	maxnr = pci_resource_len(pdev, bar) >> 3;
> +
> +	if (pdev->vendor == PCI_VENDOR_ID_PERICOM)
> +		nr = pdev->device & 0x0f;
> +	else if (pdev->vendor == PCI_VENDOR_ID_ACCESSIO)
> +		nr = BIT(((pdev->device & 0x38) >> 3) - 1);
> +	else
> +		nr = 1;
> +
> +	pericom = devm_kzalloc(&pdev->dev, struct_size(pericom, line, nr), GFP_KERNEL);
> +	if (!pericom)
> +		return -ENOMEM;
> +
> +	pericom->virt = pcim_iomap(pdev, bar, 0);
> +	if (!pericom->virt)
> +		return -ENOMEM;
> +
> +	memset(&uart, 0, sizeof(uart));
> +
> +	uart.port.dev = &pdev->dev;
> +	uart.port.irq = pdev->irq;
> +	uart.port.private_data = pericom;
> +	uart.port.iotype = UPIO_MEM;
> +	uart.port.uartclk = PERICOM8250_DEFAUL_BAUD_RATE * 16;
> +	uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
> +	uart.port.set_divisor = pericom_do_set_divisor;
> +	for (i = 0; i < nr && i < maxnr; i++) {
> +		unsigned int offset = (i == 3 && nr == 4) ? 0x38 : i * 0x8;
I'm told this works for PCIe ACCES PIDS, but the PCI PIDs don't have the 
fourth port at the wrong address. I didn't know this until just now. 
I've never had reason to try and tell if a pci_dev is PCI or PCIe. Can 
we query capabilities? It may also be possible to tell by the size of 
one of the BARs. I've requested a four port PCI card and should have it 
tomorrow.
I'm currently building the previous patch set for testing.
> +
> +		uart.port.mapbase = pci_resource_start(pdev, bar) + offset;
> +		uart.port.membase = pericom->virt + offset;
> +
> +		dev_dbg(&pdev->dev, "Setup PCI port: port %lx, irq %d, type %d\n",
> +			uart.port.iobase, uart.port.irq, uart.port.iotype);
> +
> +		pericom->line[i] = serial8250_register_8250_port(&uart);
> +		if (pericom->line[i] < 0) {
> +			dev_err(&pdev->dev,
> +				"Couldn't register serial port %lx, irq %d, type %d, error %d\n",
> +				uart.port.iobase, uart.port.irq,
> +				uart.port.iotype, pericom->line[i]);
> +			break;
> +		}
> +	}
> +	pericom->nr = i;
> +
> +	pci_set_drvdata(pdev, pericom);
> +	return 0;
> +}
> +
> +static void pericom8250_remove(struct pci_dev *pdev)
> +{
> +	struct pericom8250 *pericom = pci_get_drvdata(pdev);
> +	unsigned int i;
> +
> +	for (i = 0; i < pericom->nr; i++)
> +		serial8250_unregister_port(pericom->line[i]);
> +}
> +
> +static const struct pci_device_id pericom8250_pci_ids[] = {
> +	/*
> +	 * Pericom PI7C9X795[1248] Uno/Dual/Quad/Octal UART
> +	 * (Only 7954 has an offset jump for port 4)
> +	 */
> +	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951) },
> +	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952) },
> +	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954) },
> +	{ PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958) },
> +
> +	/*
> +	 * ACCES I/O Products quad
> +	 * (Only 7954 has an offset jump for port 4)
> +	 */
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SDB) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2S) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SDB) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4S) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_8) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_8) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_2DB) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_2) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4DB) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_8) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SMDB) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2SM) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SM) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SMDB) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4SM) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_8SM) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_1) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_2) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_2) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2S) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4S) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_2) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_2) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_4) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2SM) },
> +	{ PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4SM) },
> +	{ }
> +};
> +MODULE_DEVICE_TABLE(pci, pericom8250_pci_ids);
> +
> +static struct pci_driver pericom8250_pci_driver = {
> +	.name           = "8250_pericom",
> +	.id_table       = pericom8250_pci_ids,
> +	.probe          = pericom8250_probe,
> +	.remove         = pericom8250_remove,
> +};
> +module_pci_driver(pericom8250_pci_driver);
> +
> +MODULE_LICENSE("GPL v2");
> +MODULE_DESCRIPTION("Pericom UART driver");
> diff --git a/drivers/tty/serial/8250/Kconfig b/drivers/tty/serial/8250/Kconfig
> index 8cd11aa63ed5..9d415a38cc71 100644
> --- a/drivers/tty/serial/8250/Kconfig
> +++ b/drivers/tty/serial/8250/Kconfig
> @@ -498,6 +498,14 @@ config SERIAL_8250_MID
>   	  present on the UART found on Intel Medfield SOC and various other
>   	  Intel platforms.
>   
> +config SERIAL_8250_PERICOM
> +	tristate "Support for Pericom and Acces I/O serial ports"
> +	default SERIAL_8250
> +	depends on SERIAL_8250 && PCI
> +	help
> +	  Selecting this option will enable handling of the extra features
> +	  present on the Pericom and Acces I/O UARTs.
> +
>   config SERIAL_8250_PXA
>   	tristate "PXA serial port support"
>   	depends on SERIAL_8250
> diff --git a/drivers/tty/serial/8250/Makefile b/drivers/tty/serial/8250/Makefile
> index b9bcd73c8997..4e4913e0e4d2 100644
> --- a/drivers/tty/serial/8250/Makefile
> +++ b/drivers/tty/serial/8250/Makefile
> @@ -36,6 +36,7 @@ obj-$(CONFIG_SERIAL_8250_UNIPHIER)	+= 8250_uniphier.o
>   obj-$(CONFIG_SERIAL_8250_INGENIC)	+= 8250_ingenic.o
>   obj-$(CONFIG_SERIAL_8250_LPSS)		+= 8250_lpss.o
>   obj-$(CONFIG_SERIAL_8250_MID)		+= 8250_mid.o
> +obj-$(CONFIG_SERIAL_8250_PERICOM)	+= 8250_pericom.o
>   obj-$(CONFIG_SERIAL_8250_PXA)		+= 8250_pxa.o
>   obj-$(CONFIG_SERIAL_8250_TEGRA)		+= 8250_tegra.o
>   obj-$(CONFIG_SERIAL_8250_BCM7271)	+= 8250_bcm7271.o
> 

-- 
Jay Dolan
ACCES I/O Products, Inc.
Senior Linux Kernel Dev
jay.dolan@accesio.com

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 1/2] serial: 8250_pci: Split out Pericom driver
  2021-11-18  1:12   ` Jay Dolan
@ 2021-11-18  9:50     ` Andy Shevchenko
  2021-11-18 14:45       ` Jay Dolan
  0 siblings, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-18  9:50 UTC (permalink / raw)
  To: Jay Dolan
  Cc: Andy Shevchenko, Greg Kroah-Hartman, Linux Kernel Mailing List,
	open list:SERIAL DRIVERS, Jiri Slaby

On Thu, Nov 18, 2021 at 4:39 AM Jay Dolan <jay.dolan@accesio.com> wrote:
> On 11/17/21 6:57 AM, Andy Shevchenko wrote:

Thanks for looking into it. My answer below.

...

> > +     for (i = 0; i < nr && i < maxnr; i++) {
> > +             unsigned int offset = (i == 3 && nr == 4) ? 0x38 : i * 0x8;
> I'm told this works for PCIe ACCES PIDS, but the PCI PIDs don't have the
> fourth port at the wrong address. I didn't know this until just now.

For the sake of context I left below PCI IDs, all of them have PCIE
prefix. Moreover, the patch should not change this logic (see
different setup functions in the original code). So if it wasn't
working it is not working anyway. Besides that, what does the above
mean? The ID can't be the same for two different hardware.

> I've never had reason to try and tell if a pci_dev is PCI or PCIe. Can
> we query capabilities?

This is confusing me. What does all this imply?

> It may also be possible to tell by the size of
> one of the BARs.

This is already done by calculating maxnr.

> I've requested a four port PCI card and should have it
> tomorrow.

I'm looking forward to seeing any test results.

> I'm currently building the previous patch set for testing.

Noted, thanks!

...

> > +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951) },
> > +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952) },
> > +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954) },
> > +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958) },
> > +
> > +     /*
> > +      * ACCES I/O Products quad
> > +      * (Only 7954 has an offset jump for port 4)
> > +      */
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SDB) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2S) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SDB) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4S) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_8) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_8) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_2DB) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_2) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4DB) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_8) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SMDB) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2SM) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SM) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SMDB) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4SM) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_8SM) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_1) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_2) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_2) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2S) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4S) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_2) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_2) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_4) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2SM) },
> > +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4SM) },

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 1/2] serial: 8250_pci: Split out Pericom driver
  2021-11-18  9:50     ` Andy Shevchenko
@ 2021-11-18 14:45       ` Jay Dolan
  0 siblings, 0 replies; 19+ messages in thread
From: Jay Dolan @ 2021-11-18 14:45 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Andy Shevchenko, Greg Kroah-Hartman, Linux Kernel Mailing List,
	open list:SERIAL DRIVERS, Jiri Slaby



On 11/18/21 1:50 AM, Andy Shevchenko wrote:
> On Thu, Nov 18, 2021 at 4:39 AM Jay Dolan <jay.dolan@accesio.com> wrote:
>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> 
> Thanks for looking into it. My answer below.
> 
> ...
> 
>>> +     for (i = 0; i < nr && i < maxnr; i++) {
>>> +             unsigned int offset = (i == 3 && nr == 4) ? 0x38 : i * 0x8;
>> I'm told this works for PCIe ACCES PIDS, but the PCI PIDs don't have the
>> fourth port at the wrong address. I didn't know this until just now.
> 
> For the sake of context I left below PCI IDs, all of them have PCIE
> prefix. Moreover, the patch should not change this logic (see
> different setup functions in the original code). So if it wasn't
> working it is not working anyway. Besides that, what does the above
> mean? The ID can't be the same for two different hardware.You're right. I think I was confused first. I sent the list of PIDs to 
someone who knows all the products to verify. Either way I will get this 
tested tonight.
> 
>> I've never had reason to try and tell if a pci_dev is PCI or PCIe. Can
>> we query capabilities?
> 
> This is confusing me. What does all this imply?
> 
>> It may also be possible to tell by the size of
>> one of the BARs.
> 
> This is already done by calculating maxnr.
> 
>> I've requested a four port PCI card and should have it
>> tomorrow.
> 
> I'm looking forward to seeing any test results.
> 
>> I'm currently building the previous patch set for testing.
> 
> Noted, thanks!
> 
> ...
> 
>>> +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7951) },
>>> +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7952) },
>>> +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7954) },
>>> +     { PCI_VDEVICE(PERICOM, PCI_DEVICE_ID_PERICOM_PI7C9X7958) },
>>> +
>>> +     /*
>>> +      * ACCES I/O Products quad
>>> +      * (Only 7954 has an offset jump for port 4)
>>> +      */
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SDB) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2S) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SDB) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4S) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM422_8) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM485_8) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_2DB) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_2) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_4DB) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM232_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM232_8) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_2SMDB) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_2SM) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SM) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_4SMDB) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_COM_4SM) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_COM_8SM) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_1) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_2) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_2) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM422_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM485_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2S) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4S) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_2) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_2) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM232_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_MPCIE_ICM232_4) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_2SM) },
>>> +     { PCI_VDEVICE(ACCESSIO, PCI_DEVICE_ID_ACCESSIO_PCIE_ICM_4SM) },
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-17 14:57 [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Andy Shevchenko
  2021-11-17 14:57 ` [PATCH v1 1/2] serial: 8250_pci: Split out " Andy Shevchenko
  2021-11-17 14:57 ` [PATCH v1 2/2] serial: 8250_pericom: Re-enable higher baud rates Andy Shevchenko
@ 2021-11-19  6:32 ` Jay Dolan
  2021-11-19  8:23   ` Andy Shevchenko
  2021-11-22 12:47   ` Andy Shevchenko
  2 siblings, 2 replies; 19+ messages in thread
From: Jay Dolan @ 2021-11-19  6:32 UTC (permalink / raw)
  To: Andy Shevchenko, Greg Kroah-Hartman, linux-kernel, linux-serial
  Cc: Jiri Slaby

On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> Split Pericom driver to a separate module.
> While at it, re-enable high baud rates.
> 
> Jay, can you, please, test this on as many hardware as you have?
> 
> The series depends on the fix-series: https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u
> 
> Andy Shevchenko (1):
>    serial: 8250_pci: Split out Pericom driver
> 
> Jay Dolan (1):
>    serial: 8250_pericom: Re-enable higher baud rates
> 
>   drivers/tty/serial/8250/8250_pci.c     | 405 +------------------------
>   drivers/tty/serial/8250/8250_pericom.c | 217 +++++++++++++
>   drivers/tty/serial/8250/Kconfig        |   8 +
>   drivers/tty/serial/8250/Makefile       |   1 +
>   4 files changed, 231 insertions(+), 400 deletions(-)
>   create mode 100644 drivers/tty/serial/8250/8250_pericom.c
> 

I have my current state here: 
https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c

* Change port type to UPIO_PORT
* Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't 
stick.

When I'm testing baud rates greater than baud_base I'm seeing strange 
things on the scope. Maybe I'm just tired, and it's human error. I 
should be able to get back to it and get it done on Saturday.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-19  6:32 ` [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Jay Dolan
@ 2021-11-19  8:23   ` Andy Shevchenko
  2021-11-19 14:33     ` Jay Dolan
  2021-11-22 12:47   ` Andy Shevchenko
  1 sibling, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-19  8:23 UTC (permalink / raw)
  To: Jay Dolan; +Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby

On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> > Split Pericom driver to a separate module.
> > While at it, re-enable high baud rates.
> > 
> > Jay, can you, please, test this on as many hardware as you have?
> > 
> > The series depends on the fix-series: https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u

> I have my current state here: https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c
> 
> * Change port type to UPIO_PORT
> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
> stick.

Thanks, I have updated my local tree with these changes.

> When I'm testing baud rates greater than baud_base I'm seeing strange things
> on the scope.

Can you confirm that there are no issues with the first (fixes) series?
I have slightly changed your set_divisor() refactoring, it may be that issue
is there.

> Maybe I'm just tired, and it's human error. I should be able
> to get back to it and get it done on Saturday.

Thank you.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-19  8:23   ` Andy Shevchenko
@ 2021-11-19 14:33     ` Jay Dolan
  2021-11-20 21:05       ` Jay Dolan
  0 siblings, 1 reply; 19+ messages in thread
From: Jay Dolan @ 2021-11-19 14:33 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby



On 11/19/21 12:23 AM, Andy Shevchenko wrote:
> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
>>> Split Pericom driver to a separate module.
>>> While at it, re-enable high baud rates.
>>>
>>> Jay, can you, please, test this on as many hardware as you have?
>>>
>>> The series depends on the fix-series: https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u
> 
>> I have my current state here: https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c
>>
>> * Change port type to UPIO_PORT
>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
>> stick.
> 
> Thanks, I have updated my local tree with these changes.
> 
>> When I'm testing baud rates greater than baud_base I'm seeing strange things
>> on the scope.
> 
> Can you confirm that there are no issues with the first (fixes) series?
Yes. The fixes series has no issues, and was tested up to baud_base for 
both 14 and 24 MHz crystals.
> I have slightly changed your set_divisor() refactoring, it may be that issue
> is there.
> 
>> Maybe I'm just tired, and it's human error. I should be able
>> to get back to it and get it done on Saturday.
> 
> Thank you.
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-19 14:33     ` Jay Dolan
@ 2021-11-20 21:05       ` Jay Dolan
  2021-11-21 10:16         ` Andy Shevchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Jay Dolan @ 2021-11-20 21:05 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby



On 11/19/21 6:33 AM, Jay Dolan wrote:
> 
> 
> On 11/19/21 12:23 AM, Andy Shevchenko wrote:
>> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
>>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
>>>> Split Pericom driver to a separate module.
>>>> While at it, re-enable high baud rates.
>>>>
>>>> Jay, can you, please, test this on as many hardware as you have?
>>>>
>>>> The series depends on the fix-series: 
>>>> https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u 
>>>>
>>
>>> I have my current state here: 
>>> https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c 
>>>
>>>
>>> * Change port type to UPIO_PORT
>>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
>>> stick.
>>
>> Thanks, I have updated my local tree with these changes.
>>
>>> When I'm testing baud rates greater than baud_base I'm seeing strange 
>>> things
>>> on the scope.
>>
>> Can you confirm that there are no issues with the first (fixes) series?
> Yes. The fixes series has no issues, and was tested up to baud_base for 
> both 14 and 24 MHz crystals.
>> I have slightly changed your set_divisor() refactoring, it may be that 
>> issue
>> is there.
>>
>>> Maybe I'm just tired, and it's human error. I should be able
>>> to get back to it and get it done on Saturday.
>>
>> Thank you.
>>

Latest code is still here 
https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c

Changes from last update:
* Avoid divide by zero when initializing delta

I retested and verified on the scope that speeds are now being set 
correctly.

I have also confirmed that all of the ACCES four port cards in the 
driver do have the offset fourth port. The item I raised about PCI was a 
misunderstanding that was all on my end.

Are there any other action items I should be handling?

Thank you for your work so far.

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-20 21:05       ` Jay Dolan
@ 2021-11-21 10:16         ` Andy Shevchenko
  2021-11-21 15:36           ` Jay Dolan
  0 siblings, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-21 10:16 UTC (permalink / raw)
  To: Jay Dolan
  Cc: Andy Shevchenko, Greg Kroah-Hartman, Linux Kernel Mailing List,
	open list:SERIAL DRIVERS, Jiri Slaby

On Sat, Nov 20, 2021 at 11:46 PM Jay Dolan <jay.dolan@accesio.com> wrote:
> On 11/19/21 6:33 AM, Jay Dolan wrote:
> > On 11/19/21 12:23 AM, Andy Shevchenko wrote:
> >> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
> >>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:

> >>>> Split Pericom driver to a separate module.
> >>>> While at it, re-enable high baud rates.
> >>>>
> >>>> Jay, can you, please, test this on as many hardware as you have?
> >>>>
> >>>> The series depends on the fix-series:
> >>>> https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u
> >>
> >>> I have my current state here:
> >>> https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c
> >>>
> >>>
> >>> * Change port type to UPIO_PORT
> >>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
> >>> stick.
> >>
> >> Thanks, I have updated my local tree with these changes.
> >>
> >>> When I'm testing baud rates greater than baud_base I'm seeing strange
> >>> things
> >>> on the scope.
> >>
> >> Can you confirm that there are no issues with the first (fixes) series?
> > Yes. The fixes series has no issues, and was tested up to baud_base for
> > both 14 and 24 MHz crystals.
> >> I have slightly changed your set_divisor() refactoring, it may be that
> >> issue
> >> is there.
> >>
> >>> Maybe I'm just tired, and it's human error. I should be able
> >>> to get back to it and get it done on Saturday.
> >>
> >> Thank you.
>
> Latest code is still here
> https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c
>
> Changes from last update:
> * Avoid divide by zero when initializing delta

Thanks for digging into it. But doesn't it mean that the issue is in
the fix series as I assumed before?

> I retested and verified on the scope that speeds are now being set
> correctly.
>
> I have also confirmed that all of the ACCES four port cards in the
> driver do have the offset fourth port. The item I raised about PCI was a
> misunderstanding that was all on my end.

Good to know that is not relevant.

> Are there any other action items I should be handling?

I think I have to issue two new iterations of each series and collect
your formal Tested-by on the second one.

-- 
With Best Regards,
Andy Shevchenko

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-21 10:16         ` Andy Shevchenko
@ 2021-11-21 15:36           ` Jay Dolan
  0 siblings, 0 replies; 19+ messages in thread
From: Jay Dolan @ 2021-11-21 15:36 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Andy Shevchenko, Greg Kroah-Hartman, Linux Kernel Mailing List,
	open list:SERIAL DRIVERS, Jiri Slaby



On 11/21/21 2:16 AM, Andy Shevchenko wrote:
> On Sat, Nov 20, 2021 at 11:46 PM Jay Dolan <jay.dolan@accesio.com> wrote:
>> On 11/19/21 6:33 AM, Jay Dolan wrote:
>>> On 11/19/21 12:23 AM, Andy Shevchenko wrote:
>>>> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
>>>>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> 
>>>>>> Split Pericom driver to a separate module.
>>>>>> While at it, re-enable high baud rates.
>>>>>>
>>>>>> Jay, can you, please, test this on as many hardware as you have?
>>>>>>
>>>>>> The series depends on the fix-series:
>>>>>> https://lore.kernel.org/linux-serial/20211117145502.43645-1-andriy.shevchenko@linux.intel.com/T/#u
>>>>
>>>>> I have my current state here:
>>>>> https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c
>>>>>
>>>>>
>>>>> * Change port type to UPIO_PORT
>>>>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
>>>>> stick.
>>>>
>>>> Thanks, I have updated my local tree with these changes.
>>>>
>>>>> When I'm testing baud rates greater than baud_base I'm seeing strange
>>>>> things
>>>>> on the scope.
>>>>
>>>> Can you confirm that there are no issues with the first (fixes) series?
>>> Yes. The fixes series has no issues, and was tested up to baud_base for
>>> both 14 and 24 MHz crystals.
>>>> I have slightly changed your set_divisor() refactoring, it may be that
>>>> issue
>>>> is there.
>>>>
>>>>> Maybe I'm just tired, and it's human error. I should be able
>>>>> to get back to it and get it done on Saturday.
>>>>
>>>> Thank you.
>>
>> Latest code is still here
>> https://github.com/accesio/linux/blob/split-pericom-driver/drivers/tty/serial/8250/8250_pericom.c
>>
>> Changes from last update:
>> * Avoid divide by zero when initializing delta
> 
> Thanks for digging into it. But doesn't it mean that the issue is in
> the fix series as I assumed before?
Yes. It just happens to not get hit at any of the standard baud rates 
that I found in the termbits.h files. So testing didn't find it until 
testing rates greater than what is allowed without the magic multiplier 
flag.
I found it when doing the math on 3000000 because that causes it with 
the 14 MHz crystal.
> 
>> I retested and verified on the scope that speeds are now being set
>> correctly.
>>
>> I have also confirmed that all of the ACCES four port cards in the
>> driver do have the offset fourth port. The item I raised about PCI was a
>> misunderstanding that was all on my end.
> 
> Good to know that is not relevant.
> 
>> Are there any other action items I should be handling?
> 
> I think I have to issue two new iterations of each series and collect
> your formal Tested-by on the second one.
> 

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-19  6:32 ` [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Jay Dolan
  2021-11-19  8:23   ` Andy Shevchenko
@ 2021-11-22 12:47   ` Andy Shevchenko
  2021-11-22 12:48     ` Andy Shevchenko
  1 sibling, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-22 12:47 UTC (permalink / raw)
  To: Jay Dolan; +Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby

On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> > Split Pericom driver to a separate module.
> > While at it, re-enable high baud rates.
> > 
> > Jay, can you, please, test this on as many hardware as you have?

...

> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
> stick.

Can't find an evidence that this is the case. Can you recheck this (reading
flags back via sysfs or so)? So, for v2 I'll leave my approach.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-22 12:47   ` Andy Shevchenko
@ 2021-11-22 12:48     ` Andy Shevchenko
  2021-11-23  5:19       ` Jay Dolan
  0 siblings, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-22 12:48 UTC (permalink / raw)
  To: Jay Dolan; +Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby

On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
> > On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> > > Split Pericom driver to a separate module.
> > > While at it, re-enable high baud rates.
> > > 
> > > Jay, can you, please, test this on as many hardware as you have?
> 
> ...
> 
> > * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
> > stick.
> 
> Can't find an evidence that this is the case. Can you recheck this (reading
> flags back via sysfs or so)? So, for v2 I'll leave my approach.

Otherwise how the other drivers which are using that flag survive? If it's
indeed an issue, it should be fixed on generic level.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-22 12:48     ` Andy Shevchenko
@ 2021-11-23  5:19       ` Jay Dolan
  2021-11-23  9:25         ` Andy Shevchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Jay Dolan @ 2021-11-23  5:19 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby



On 11/22/21 4:48 AM, Andy Shevchenko wrote:
> On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
>> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
>>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
>>>> Split Pericom driver to a separate module.
>>>> While at it, re-enable high baud rates.
>>>>
>>>> Jay, can you, please, test this on as many hardware as you have?
>>
>> ...
>>
>>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
>>> stick.
>>
>> Can't find an evidence that this is the case. Can you recheck this (reading
>> flags back via sysfs or so)? So, for v2 I'll leave my approach.
> 
> Otherwise how the other drivers which are using that flag survive? If it's
> indeed an issue, it should be fixed on generic level.
> 

I modified pericom_do_startup to log when the UPF_MAGIC_MULTIPLIER flag 
was present. Then tried to set the port to 3000000 a few times. The port
stayed at 9600. It looks like pericom_do_startup() is getting called 
twice per port on boot, and the flag is gone with the second one.

[    4.925577] [J4D] flag present
[    4.926121] [J4D[ flag not present
[    4.926843] [J4D] flag present
[    4.927415] [J4D[ flag not present
[    4.928106] [J4D] flag present
[    4.928673] [J4D[ flag not present
[    4.929419] [J4D] flag present
[    4.930447] [J4D[ flag not present

[   49.528504] [J4D[ flag not present
[   51.675240] [J4D[ flag not present
[   59.617954] [J4D[ flag not present

Then I modified it to log when it was adding the flag in. The port was 
set to 3000000. Also the flag only needed to be added in once. It sticks 
after the first time.

[    4.647546] [J4D] flag present
[    4.648119] [J4D] flag not present(adding)
[    4.648778] [J4D] flag present
[    4.649330] [J4D] flag not present(adding)
[    4.650001] [J4D] flag present
[    4.650537] [J4D] flag not present(adding)
[    4.651192] [J4D] flag present
[    4.651718] [J4D] flag not present(adding)

[   96.025668] [J4D] flag present
[  100.130626] [J4D] flag present
[  116.435436] [J4D] flag present

I mostly just guessed at do_startup() being the place to set the magic 
multiplier flag after it didn't stick in quirk in 8250_pci.c.


^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-23  5:19       ` Jay Dolan
@ 2021-11-23  9:25         ` Andy Shevchenko
  2021-11-23 15:02           ` Jay Dolan
  0 siblings, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-23  9:25 UTC (permalink / raw)
  To: Jay Dolan; +Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby

On Mon, Nov 22, 2021 at 09:19:09PM -0800, Jay Dolan wrote:
> On 11/22/21 4:48 AM, Andy Shevchenko wrote:
> > On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
> > > On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
> > > > On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> > > > > Split Pericom driver to a separate module.
> > > > > While at it, re-enable high baud rates.
> > > > > 
> > > > > Jay, can you, please, test this on as many hardware as you have?
> > > 
> > > ...
> > > 
> > > > * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
> > > > stick.
> > > 
> > > Can't find an evidence that this is the case. Can you recheck this (reading
> > > flags back via sysfs or so)? So, for v2 I'll leave my approach.
> > 
> > Otherwise how the other drivers which are using that flag survive? If it's
> > indeed an issue, it should be fixed on generic level.
> > 
> 
> I modified pericom_do_startup to log when the UPF_MAGIC_MULTIPLIER flag was
> present. Then tried to set the port to 3000000 a few times. The port
> stayed at 9600. It looks like pericom_do_startup() is getting called twice
> per port on boot, and the flag is gone with the second one.
> 
> [    4.925577] [J4D] flag present
> [    4.926121] [J4D[ flag not present
> [    4.926843] [J4D] flag present
> [    4.927415] [J4D[ flag not present
> [    4.928106] [J4D] flag present
> [    4.928673] [J4D[ flag not present
> [    4.929419] [J4D] flag present
> [    4.930447] [J4D[ flag not present
> 
> [   49.528504] [J4D[ flag not present
> [   51.675240] [J4D[ flag not present
> [   59.617954] [J4D[ flag not present
> 
> Then I modified it to log when it was adding the flag in. The port was set
> to 3000000. Also the flag only needed to be added in once. It sticks after
> the first time.
> 
> [    4.647546] [J4D] flag present
> [    4.648119] [J4D] flag not present(adding)
> [    4.648778] [J4D] flag present
> [    4.649330] [J4D] flag not present(adding)
> [    4.650001] [J4D] flag present
> [    4.650537] [J4D] flag not present(adding)
> [    4.651192] [J4D] flag present
> [    4.651718] [J4D] flag not present(adding)
> 
> [   96.025668] [J4D] flag present
> [  100.130626] [J4D] flag present
> [  116.435436] [J4D] flag present
> 
> I mostly just guessed at do_startup() being the place to set the magic
> multiplier flag after it didn't stick in quirk in 8250_pci.c.

Can you share `dmesg` and output of `lspci -nk -vv` on the machine with the
kernel with patches applied and running?

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-23  9:25         ` Andy Shevchenko
@ 2021-11-23 15:02           ` Jay Dolan
  2021-11-23 15:38             ` Andy Shevchenko
  0 siblings, 1 reply; 19+ messages in thread
From: Jay Dolan @ 2021-11-23 15:02 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby



On 11/23/21 1:25 AM, Andy Shevchenko wrote:
> On Mon, Nov 22, 2021 at 09:19:09PM -0800, Jay Dolan wrote:
>> On 11/22/21 4:48 AM, Andy Shevchenko wrote:
>>> On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
>>>> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
>>>>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
>>>>>> Split Pericom driver to a separate module.
>>>>>> While at it, re-enable high baud rates.
>>>>>>
>>>>>> Jay, can you, please, test this on as many hardware as you have?
>>>>
>>>> ...
>>>>
>>>>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
>>>>> stick.
>>>>
>>>> Can't find an evidence that this is the case. Can you recheck this (reading
>>>> flags back via sysfs or so)? So, for v2 I'll leave my approach.
>>>
>>> Otherwise how the other drivers which are using that flag survive? If it's
>>> indeed an issue, it should be fixed on generic level.
>>>
>>
>> I modified pericom_do_startup to log when the UPF_MAGIC_MULTIPLIER flag was
>> present. Then tried to set the port to 3000000 a few times. The port
>> stayed at 9600. It looks like pericom_do_startup() is getting called twice
>> per port on boot, and the flag is gone with the second one.
>>
>> [    4.925577] [J4D] flag present
>> [    4.926121] [J4D[ flag not present
>> [    4.926843] [J4D] flag present
>> [    4.927415] [J4D[ flag not present
>> [    4.928106] [J4D] flag present
>> [    4.928673] [J4D[ flag not present
>> [    4.929419] [J4D] flag present
>> [    4.930447] [J4D[ flag not present
>>
>> [   49.528504] [J4D[ flag not present
>> [   51.675240] [J4D[ flag not present
>> [   59.617954] [J4D[ flag not present
>>
>> Then I modified it to log when it was adding the flag in. The port was set
>> to 3000000. Also the flag only needed to be added in once. It sticks after
>> the first time.
>>
>> [    4.647546] [J4D] flag present
>> [    4.648119] [J4D] flag not present(adding)
>> [    4.648778] [J4D] flag present
>> [    4.649330] [J4D] flag not present(adding)
>> [    4.650001] [J4D] flag present
>> [    4.650537] [J4D] flag not present(adding)
>> [    4.651192] [J4D] flag present
>> [    4.651718] [J4D] flag not present(adding)
>>
>> [   96.025668] [J4D] flag present
>> [  100.130626] [J4D] flag present
>> [  116.435436] [J4D] flag present
>>
>> I mostly just guessed at do_startup() being the place to set the magic
>> multiplier flag after it didn't stick in quirk in 8250_pci.c.
> 
> Can you share `dmesg` and output of `lspci -nk -vv` on the machine with the
> kernel with patches applied and running?
> 

Provided below. Also, I am going to lose the place for my test station 
to the  family Christmas tree after tomorrow. I'm not sure when or where 
I'm going to get it set back up.

00:00.0 0600: 8086:0100 (rev 09)
	Subsystem: 8086:200b
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort+ >SERR- <PERR- INTx-
	Latency: 0
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: snb_uncore

00:01.0 0604: 8086:0101 (rev 09) (prog-if 00 [Normal decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 24
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=0
	I/O behind bridge: 0000e000-0000efff
	Memory behind bridge: fe400000-fe4fffff
	Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [88] Subsystem: 8086:200b
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee04004  Data: 0021
	Capabilities: [a0] Express (v2) Root Port (Slot+), MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE+
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend-
		LnkCap:	Port #2, Speed 5GT/s, Width x16, ASPM L0s L1, Exit Latency L0s 
<1us, L1 <4us
			ClockPM- Surprise- LLActRep- BwNot+ ASPMOptComp-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk+ DLActive- 
BWMgmt+ ABWMgmt-
		SltCap:	AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd- HotPlug- Surprise-
			Slot #0, PowerLimit 10.000W; Interlock- NoCompl+
		SltCtl:	Enable: AttnBtn- PwrFlt- MRL- PresDet- CmdCplt- HPIrq- LinkChg-
			Control: AttnInd Unknown, PwrInd Unknown, Power- Interlock-
		SltSta:	Status: AttnBtn- PowerFlt- MRL- CmdCplt- PresDet+ Interlock-
			Changed: MRL- PresDet+ LinkState-
		RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal- PMEIntEna+ CRSVisible-
		RootCap: CRSVisible-
		RootSta: PME ReqID 0000, PMEStatus- PMEPending-
		DevCap2: Completion Timeout: Not Supported, TimeoutDis-, LTR+, OBFF 
Not Supported ARIFwd-
		DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF 
Disabled ARIFwd-
		LnkCtl2: Target Link Speed: 5GT/s, EnterCompliance- SpeedDis-
			 Transmit Margin: Normal Operating Range, EnterModifiedCompliance- 
ComplianceSOS-
			 Compliance De-emphasis: -6dB
		LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete-, 
EqualizationPhase1-
			 EqualizationPhase2-, EqualizationPhase3-, LinkEqualizationRequest-
	Capabilities: [100 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed+ WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=ff
			Status:	NegoPending- InProgress-
	Capabilities: [140 v1] Root Complex Link
		Desc:	PortNumber=02 ComponentID=01 EltType=Config
		Link0:	Desc:	TargetPort=00 TargetComponent=01 AssocRCRB- 
LinkType=MemMapped LinkValid+
			Addr:	00000000fed19000
	Kernel driver in use: pcieport

00:02.0 0300: 8086:0102 (rev 09) (prog-if 00 [VGA controller])
	Subsystem: 8086:200b
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 28
	Region 0: Memory at fe000000 (64-bit, non-prefetchable) [size=4M]
	Region 2: Memory at d0000000 (64-bit, prefetchable) [size=256M]
	Region 4: I/O ports at f000 [size=64]
	[virtual] Expansion ROM at 000c0000 [disabled] [size=128K]
	Capabilities: [90] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee08004  Data: 0023
	Capabilities: [d0] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a4] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: i915
	Kernel modules: i915

00:16.0 0780: 8086:1c3a (rev 04)
	Subsystem: 8086:200b
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 27
	Region 0: Memory at fe529000 (64-bit, non-prefetchable) [size=16]
	Capabilities: [50] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [8c] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee04004  Data: 0023
	Kernel driver in use: mei_me
	Kernel modules: mei_me

00:19.0 0200: 8086:1503 (rev 04)
	Subsystem: 8086:200b
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 25
	Region 0: Memory at fe500000 (32-bit, non-prefetchable) [size=128K]
	Region 1: Memory at fe528000 (32-bit, non-prefetchable) [size=4K]
	Region 2: I/O ports at f080 [size=32]
	Capabilities: [c8] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
	Capabilities: [d0] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee08004  Data: 0024
	Capabilities: [e0] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: e1000e
	Kernel modules: e1000e

00:1a.0 0c03: 8086:1c2d (rev 04) (prog-if 20 [EHCI])
	Subsystem: 8086:200b
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at fe527000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA 
PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Debug port: BAR=1 offset=00a0
	Capabilities: [98] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: ehci-pci

00:1b.0 0403: 8086:1c20 (rev 04)
	Subsystem: 8086:200b
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 29
	Region 0: Memory at fe520000 (64-bit, non-prefetchable) [size=16K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=55mA 
PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [60] MSI: Enable+ Count=1/1 Maskable- 64bit+
		Address: 00000000fee01004  Data: 0023
	Capabilities: [70] Express (v1) Root Complex Integrated Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0
			ExtTag- RBE-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
	Capabilities: [100 v1] Virtual Channel
		Caps:	LPEVC=0 RefClk=100ns PATEntryBits=1
		Arb:	Fixed- WRR32- WRR64- WRR128-
		Ctrl:	ArbSelect=Fixed
		Status:	InProgress-
		VC0:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=0 ArbSelect=Fixed TC/VC=01
			Status:	NegoPending- InProgress-
		VC1:	Caps:	PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-
			Arb:	Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-
			Ctrl:	Enable+ ID=1 ArbSelect=Fixed TC/VC=22
			Status:	NegoPending- InProgress-
	Capabilities: [130 v1] Root Complex Link
		Desc:	PortNumber=0f ComponentID=00 EltType=Config
		Link0:	Desc:	TargetPort=00 TargetComponent=00 AssocRCRB- 
LinkType=MemMapped LinkValid+
			Addr:	00000000fed1c000
	Kernel driver in use: snd_hda_intel
	Kernel modules: snd_hda_intel

00:1d.0 0c03: 8086:1c26 (rev 04) (prog-if 20 [EHCI])
	Subsystem: 8086:200b
	Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin A routed to IRQ 23
	Region 0: Memory at fe526000 (32-bit, non-prefetchable) [size=1K]
	Capabilities: [50] Power Management version 2
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=375mA 
PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [58] Debug port: BAR=1 offset=00a0
	Capabilities: [98] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: ehci-pci

00:1e.0 0604: 8086:244e (rev a4) (prog-if 01 [Subtractive decode])
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=32
	Secondary status: 66MHz- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort+ <SERR- <PERR-
	BridgeCtl: Parity- SERR+ NoISA- VGA- MAbort- >Reset- FastB2B-
		PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
	Capabilities: [50] Subsystem: 8086:200b

00:1f.0 0601: 8086:1c50 (rev 04)
	Subsystem: 8086:200b
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Capabilities: [e0] Vendor Specific Information: Len=0c <?>
	Kernel driver in use: lpc_ich
	Kernel modules: lpc_ich

00:1f.2 0106: 8086:1c02 (rev 04) (prog-if 01 [AHCI 1.0])
	Subsystem: 8086:200b
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx+
	Status: Cap+ 66MHz+ UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
	Latency: 0
	Interrupt: pin B routed to IRQ 26
	Region 0: I/O ports at f0d0 [size=8]
	Region 1: I/O ports at f0c0 [size=4]
	Region 2: I/O ports at f0b0 [size=8]
	Region 3: I/O ports at f0a0 [size=4]
	Region 4: I/O ports at f060 [size=32]
	Region 5: Memory at fe525000 (32-bit, non-prefetchable) [size=2K]
	Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
		Address: fee04004  Data: 0024
	Capabilities: [70] Power Management version 3
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [a8] SATA HBA v1.0 BAR4 Offset=00000004
	Capabilities: [b0] PCI Advanced Features
		AFCap: TP+ FLR+
		AFCtrl: FLR-
		AFStatus: TP-
	Kernel driver in use: ahci
	Kernel modules: ahci

00:1f.3 0c05: 8086:1c22 (rev 04)
	Subsystem: 8086:200b
	Control: I/O+ Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap- 66MHz- UDF- FastB2B+ ParErr- DEVSEL=medium >TAbort- 
<TAbort- <MAbort- >SERR- <PERR- INTx-
	Interrupt: pin C routed to IRQ 10
	Region 0: Memory at fe524000 (64-bit, non-prefetchable) [size=256]
	Region 4: I/O ports at f040 [size=32]
	Kernel modules: i2c_i801

01:00.0 0700: 494f:10dc (prog-if 02 [16550])
	Subsystem: 0001:0001
	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- 
Stepping- SERR- FastB2B- DisINTx-
	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- 
<MAbort- >SERR- <PERR- INTx-
	Latency: 0, Cache Line Size: 64 bytes
	Interrupt: pin A routed to IRQ 16
	Region 0: I/O ports at e000 [size=64]
	Region 1: Memory at fe400000 (32-bit, non-prefetchable) [size=4K]
	Capabilities: [80] Power Management version 3
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA 
PME(D0-,D1-,D2-,D3hot+,D3cold-)
		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
	Capabilities: [8c] MSI: Enable- Count=1/1 Maskable- 64bit+
		Address: 0000000000000000  Data: 0000
	Capabilities: [9c] Vital Product Data
		Not readable
	Capabilities: [a4] Vendor Specific Information: Len=28 <?>
	Capabilities: [e0] Express (v1) Legacy Endpoint, MSI 00
		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
			MaxPayload 128 bytes, MaxReadReq 128 bytes
		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency 
L0s <512ns, L1 <1us
			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- 
BWMgmt- ABWMgmt-
	Capabilities: [100 v1] Advanced Error Reporting
		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- 
MalfTLP- ECRC- UnsupReq- ACSViol-
		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- 
MalfTLP- ECRC- UnsupReq- ACSViol-
		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ 
MalfTLP+ ECRC- UnsupReq- ACSViol-
		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
		AERCap:	First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
	Kernel driver in use: 8250_pericom
	Kernel modules: 8250_pci, 8250_pericom






[    0.000000] microcode: microcode updated early to revision 0x2f, date 
= 2019-02-17
[    0.000000] Linux version 5.16.0-rc1+ (jdolan@work-laptop) (gcc 
(Ubuntu 9.3.0-17ubuntu1~20.04) 9.3.0, GNU ld (GNU Binutils for Ubuntu) 
2.34) #17 SMP PREEMPT Thu Nov 18 16:26:46 PST 2021
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-5.16.0-rc1+ 
root=UUID=1237a243-bb81-47f8-857d-50bc9ada5b90 ro quiet splash vt.handoff=1
[    0.000000] KERNEL supported cpus:
[    0.000000]   Intel GenuineIntel
[    0.000000]   AMD AuthenticAMD
[    0.000000]   Hygon HygonGenuine
[    0.000000]   Centaur CentaurHauls
[    0.000000]   zhaoxin   Shanghai
[    0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating 
point registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[    0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[    0.000000] x86/fpu: xstate_offset[2]:  576, xstate_sizes[2]:  256
[    0.000000] x86/fpu: Enabled xstate features 0x7, context size is 832 
bytes, using 'standard' format.
[    0.000000] signal: max sigframe size: 1776
[    0.000000] reserving inaccessible SNB gfx pages
[    0.000000] BIOS-provided physical RAM map:
[    0.000000] BIOS-e820: [mem 0x0000000000000000-0x000000000009abff] usable
[    0.000000] BIOS-e820: [mem 0x000000000009ac00-0x000000000009ffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000000e0000-0x00000000000fffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x0000000000100000-0x000000001fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000020000000-0x00000000201fffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x0000000020200000-0x000000003fffffff] usable
[    0.000000] BIOS-e820: [mem 0x0000000040000000-0x00000000401fffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x0000000040200000-0x00000000bc98dfff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bc98e000-0x00000000bc9d8fff] 
ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000bc9d9000-0x00000000bc9e0fff] 
ACPI data
[    0.000000] BIOS-e820: [mem 0x00000000bc9e1000-0x00000000bcad2fff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000bcad3000-0x00000000bcad4fff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bcad5000-0x00000000bcbdbfff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000bcbdc000-0x00000000bcbdcfff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bcbdd000-0x00000000bcbecfff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000bcbed000-0x00000000bcbfafff] 
ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000bcbfb000-0x00000000bcc1efff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000bcc1f000-0x00000000bcc61fff] 
ACPI NVS
[    0.000000] BIOS-e820: [mem 0x00000000bcc62000-0x00000000bce81fff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000bce82000-0x00000000bcffffff] usable
[    0.000000] BIOS-e820: [mem 0x00000000bd800000-0x00000000bf9fffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000fed1c000-0x00000000fed1ffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x00000000ff000000-0x00000000ffffffff] 
reserved
[    0.000000] BIOS-e820: [mem 0x0000000100000000-0x000000013e5fffff] usable
[    0.000000] NX (Execute Disable) protection: active
[    0.000000] SMBIOS 2.6 present.
[    0.000000] DMI:  /DB65AL, BIOS ALB6510H.86A.0055.2011.1003.1116 
10/03/2011
[    0.000000] e820: update [mem 0x00000000-0x00000fff] usable ==> reserved
[    0.000000] e820: remove [mem 0x000a0000-0x000fffff] usable
[    0.000000] last_pfn = 0x13e600 max_arch_pfn = 0x400000000
[    0.000000] x86/PAT: Configuration [0-7]: WB  WC  UC- UC  WB  WP  UC- 
WT
[    0.000000] total RAM covered: 4030M
[    0.000000] Found optimal setting for mtrr clean up
[    0.000000]  gran_size: 64K 	chunk_size: 64M 	num_reg: 8  	lose cover 
RAM: 0G
[    0.000000] e820: update [mem 0xbd800000-0xffffffff] usable ==> reserved
[    0.000000] last_pfn = 0xbd000 max_arch_pfn = 0x400000000
[    0.000000] found SMP MP-table at [mem 0x000fce20-0x000fce2f]
[    0.000000] RAMDISK: [mem 0x32d1f000-0x35686fff]
[    0.000000] ACPI: Early table checksum verification disabled
[    0.000000] ACPI: RSDP 0x00000000000F0450 000024 (v02 INTEL )
[    0.000000] ACPI: XSDT 0x00000000BC9D9068 000054 (v01 INTEL  DB65AL 
  01072009 AMI  00010013)
[    0.000000] ACPI: FACP 0x00000000BC9E04B8 0000F4 (v04 INTEL  DB65AL 
  01072009 AMI  00010013)
[    0.000000] ACPI: DSDT 0x00000000BC9D9150 007365 (v02 INTEL  DB65AL 
  00000016 INTL 20051117)
[    0.000000] ACPI: FACS 0x00000000BCBF2F80 000040
[    0.000000] ACPI: APIC 0x00000000BC9E05B0 000072 (v03 INTEL  DB65AL 
  01072009 AMI  00010013)
[    0.000000] ACPI: SSDT 0x00000000BC9E0628 000102 (v01 INTEL  DB65AL 
  00000001 MSFT 03000001)
[    0.000000] ACPI: MCFG 0x00000000BC9E0730 00003C (v01 INTEL  DB65AL 
  01072009 MSFT 00000097)
[    0.000000] ACPI: HPET 0x00000000BC9E0770 000038 (v01 INTEL  DB65AL 
  01072009 AMI. 00000004)
[    0.000000] ACPI: ASF! 0x00000000BC9E07A8 0000A0 (v32 INTEL  DB65AL 
  00000001 TFSM 000F4240)
[    0.000000] ACPI: Reserving FACP table memory at [mem 
0xbc9e04b8-0xbc9e05ab]
[    0.000000] ACPI: Reserving DSDT table memory at [mem 
0xbc9d9150-0xbc9e04b4]
[    0.000000] ACPI: Reserving FACS table memory at [mem 
0xbcbf2f80-0xbcbf2fbf]
[    0.000000] ACPI: Reserving APIC table memory at [mem 
0xbc9e05b0-0xbc9e0621]
[    0.000000] ACPI: Reserving SSDT table memory at [mem 
0xbc9e0628-0xbc9e0729]
[    0.000000] ACPI: Reserving MCFG table memory at [mem 
0xbc9e0730-0xbc9e076b]
[    0.000000] ACPI: Reserving HPET table memory at [mem 
0xbc9e0770-0xbc9e07a7]
[    0.000000] ACPI: Reserving ASF! table memory at [mem 
0xbc9e07a8-0xbc9e0847]
[    0.000000] No NUMA configuration found
[    0.000000] Faking a node at [mem 0x0000000000000000-0x000000013e5fffff]
[    0.000000] NODE_DATA(0) allocated [mem 0x13e5d2000-0x13e5fcfff]
[    0.000000] Zone ranges:
[    0.000000]   DMA      [mem 0x0000000000001000-0x0000000000ffffff]
[    0.000000]   DMA32    [mem 0x0000000001000000-0x00000000ffffffff]
[    0.000000]   Normal   [mem 0x0000000100000000-0x000000013e5fffff]
[    0.000000]   Device   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000001000-0x0000000000099fff]
[    0.000000]   node   0: [mem 0x0000000000100000-0x000000001fffffff]
[    0.000000]   node   0: [mem 0x0000000020200000-0x000000003fffffff]
[    0.000000]   node   0: [mem 0x0000000040200000-0x00000000bc98dfff]
[    0.000000]   node   0: [mem 0x00000000bcad3000-0x00000000bcad4fff]
[    0.000000]   node   0: [mem 0x00000000bcbdc000-0x00000000bcbdcfff]
[    0.000000]   node   0: [mem 0x00000000bce82000-0x00000000bcffffff]
[    0.000000]   node   0: [mem 0x0000000100000000-0x000000013e5fffff]
[    0.000000] Initmem setup node 0 [mem 
0x0000000000001000-0x000000013e5fffff]
[    0.000000] On node 0, zone DMA: 1 pages in unavailable ranges
[    0.000000] On node 0, zone DMA: 102 pages in unavailable ranges
[    0.000000] On node 0, zone DMA32: 512 pages in unavailable ranges
[    0.000000] On node 0, zone DMA32: 512 pages in unavailable ranges
[    0.000000] On node 0, zone DMA32: 325 pages in unavailable ranges
[    0.000000] On node 0, zone DMA32: 263 pages in unavailable ranges
[    0.000000] On node 0, zone DMA32: 677 pages in unavailable ranges
[    0.000000] On node 0, zone Normal: 12288 pages in unavailable ranges
[    0.000000] On node 0, zone Normal: 6656 pages in unavailable ranges
[    0.000000] Reserving Intel graphics memory at [mem 
0xbda00000-0xbf9fffff]
[    0.000000] ACPI: PM-Timer IO Port: 0x408
[    0.000000] ACPI: LAPIC_NMI (acpi_id[0xff] high edge lint[0x1])
[    0.000000] IOAPIC[0]: apic_id 0, version 32, address 0xfec00000, GSI 
0-23
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl)
[    0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 high level)
[    0.000000] ACPI: Using ACPI (MADT) for SMP configuration information
[    0.000000] ACPI: HPET id: 0x8086a701 base: 0xfed00000
[    0.000000] TSC deadline timer available
[    0.000000] smpboot: Allowing 4 CPUs, 0 hotplug CPUs
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x00000000-0x00000fff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x0009a000-0x0009afff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x0009b000-0x0009ffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x000a0000-0x000dffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x000e0000-0x000fffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x20000000-0x201fffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0x40000000-0x401fffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbc98e000-0xbc9d8fff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbc9d9000-0xbc9e0fff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbc9e1000-0xbcad2fff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbcad5000-0xbcbdbfff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbcbdd000-0xbcbecfff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbcbed000-0xbcbfafff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbcbfb000-0xbcc1efff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbcc1f000-0xbcc61fff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbcc62000-0xbce81fff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbd000000-0xbd7fffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbd800000-0xbf9fffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xbfa00000-0xfed1bfff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xfed1c000-0xfed1ffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xfed20000-0xfeffffff]
[    0.000000] PM: hibernation: Registered nosave memory: [mem 
0xff000000-0xffffffff]
[    0.000000] [mem 0xbfa00000-0xfed1bfff] available for PCI devices
[    0.000000] Booting paravirtualized kernel on bare hardware
[    0.000000] clocksource: refined-jiffies: mask: 0xffffffff 
max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[    0.000000] setup_percpu: NR_CPUS:8192 nr_cpumask_bits:4 nr_cpu_ids:4 
nr_node_ids:1
[    0.000000] percpu: Embedded 61 pages/cpu s212992 r8192 d28672 u524288
[    0.000000] pcpu-alloc: s212992 r8192 d28672 u524288 alloc=1*2097152
[    0.000000] pcpu-alloc: [0] 0 1 2 3
[    0.000000] Fallback order for Node 0: 0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 
1011034
[    0.000000] Policy zone: Normal
[    0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-5.16.0-rc1+ 
root=UUID=1237a243-bb81-47f8-857d-50bc9ada5b90 ro quiet splash vt.handoff=1
[    0.000000] Unknown kernel command line parameters "splash 
BOOT_IMAGE=/boot/vmlinuz-5.16.0-rc1+", will be passed to user space.
[    0.000000] Dentry cache hash table entries: 524288 (order: 10, 
4194304 bytes, linear)
[    0.000000] Inode-cache hash table entries: 262144 (order: 9, 2097152 
bytes, linear)
[    0.000000] mem auto-init: stack:off, heap alloc:on, heap free:off
[    0.000000] Memory: 3889572K/4108960K available (16393K kernel code, 
3525K rwdata, 5424K rodata, 2680K init, 5936K bss, 219128K reserved, 0K 
cma-reserved)
[    0.000000] random: get_random_u64 called from 
__kmem_cache_create+0x2d/0x480 with crng_init=0
[    0.000000] SLUB: HWalign=64, Order=0-3, MinObjects=0, CPUs=4, Nodes=1
[    0.000000] Kernel/User page tables isolation: enabled
[    0.000000] ftrace: allocating 48411 entries in 190 pages
[    0.000000] ftrace: allocated 190 pages with 6 groups
[    0.000000] Dynamic Preempt: full
[    0.000000] rcu: Preemptible hierarchical RCU implementation.
[    0.000000] rcu: 	RCU restricting CPUs from NR_CPUS=8192 to nr_cpu_ids=4.
[    0.000000] 	Trampoline variant of Tasks RCU enabled.
[    0.000000] 	Rude variant of Tasks RCU enabled.
[    0.000000] 	Tracing variant of Tasks RCU enabled.
[    0.000000] rcu: RCU calculated value of scheduler-enlistment delay 
is 25 jiffies.
[    0.000000] rcu: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=4
[    0.000000] NR_IRQS: 524544, nr_irqs: 456, preallocated irqs: 16
[    0.000000] Console: colour dummy device 80x25
[    0.000000] printk: console [tty0] enabled
[    0.000000] ACPI: Core revision 20210930
[    0.000000] clocksource: hpet: mask: 0xffffffff max_cycles: 
0xffffffff, max_idle_ns: 133484882848 ns
[    0.000000] APIC: Switch to symmetric I/O mode setup
[    0.000000] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1
[    0.024000] tsc: PIT calibration matches HPET. 1 loops
[    0.024000] tsc: Detected 2800.620 MHz processor
[    0.000006] clocksource: tsc-early: mask: 0xffffffffffffffff 
max_cycles: 0x285e8ad1684, max_idle_ns: 440795345134 ns
[    0.000014] Calibrating delay loop (skipped), value calculated using 
timer frequency.. 5601.24 BogoMIPS (lpj=11202480)
[    0.000019] pid_max: default: 32768 minimum: 301
[    0.000063] LSM: Security Framework initializing
[    0.000077] Yama: becoming mindful.
[    0.000113] AppArmor: AppArmor initialized
[    0.000157] Mount-cache hash table entries: 8192 (order: 4, 65536 
bytes, linear)
[    0.000170] Mountpoint-cache hash table entries: 8192 (order: 4, 
65536 bytes, linear)
[    0.000578] CPU0: Thermal monitoring enabled (TM1)
[    0.000611] process: using mwait in idle threads
[    0.000615] Last level iTLB entries: 4KB 512, 2MB 8, 4MB 8
[    0.000617] Last level dTLB entries: 4KB 512, 2MB 32, 4MB 32, 1GB 0
[    0.000624] Spectre V1 : Mitigation: usercopy/swapgs barriers and 
__user pointer sanitization
[    0.000627] Spectre V2 : Mitigation: Full generic retpoline
[    0.000628] Spectre V2 : Spectre v2 / SpectreRSB mitigation: Filling 
RSB on context switch
[    0.000629] Spectre V2 : Enabling Restricted Speculation for firmware 
calls
[    0.000632] Spectre V2 : mitigation: Enabling conditional Indirect 
Branch Prediction Barrier
[    0.000634] Speculative Store Bypass: Mitigation: Speculative Store 
Bypass disabled via prctl
[    0.000639] MDS: Mitigation: Clear CPU buffers
[    0.006944] Freeing SMP alternatives memory: 40K
[    0.007385] smpboot: Estimated ratio of average max frequency by base 
frequency (times 1024): 1060
[    0.007397] smpboot: CPU0: Intel(R) Core(TM) i5-2300 CPU @ 2.80GHz 
(family: 0x6, model: 0x2a, stepping: 0x7)
[    0.007648] Performance Events: PEBS fmt1+, SandyBridge events, 
16-deep LBR, full-width counters, Intel PMU driver.
[    0.007675] ... version:                3
[    0.007676] ... bit width:              48
[    0.007678] ... generic registers:      8
[    0.007679] ... value mask:             0000ffffffffffff
[    0.007681] ... max period:             00007fffffffffff
[    0.007683] ... fixed-purpose events:   3
[    0.007684] ... event mask:             00000007000000ff
[    0.007931] rcu: Hierarchical SRCU implementation.
[    0.008011] NMI watchdog: Enabled. Permanently consumes one hw-PMU 
counter.
[    0.008011] smp: Bringing up secondary CPUs ...
[    0.008011] x86: Booting SMP configuration:
[    0.008011] .... node  #0, CPUs:      #1 #2 #3
[    0.018704] smp: Brought up 1 node, 4 CPUs
[    0.018704] smpboot: Max logical packages: 1
[    0.018704] smpboot: Total of 4 processors activated (22404.96 BogoMIPS)
[    0.020243] devtmpfs: initialized
[    0.020243] x86/mm: Memory block size: 128MB
[    0.020809] ACPI: PM: Registering ACPI NVS region [mem 
0xbc98e000-0xbc9d8fff] (307200 bytes)
[    0.020809] ACPI: PM: Registering ACPI NVS region [mem 
0xbcbed000-0xbcbfafff] (57344 bytes)
[    0.020809] ACPI: PM: Registering ACPI NVS region [mem 
0xbcc1f000-0xbcc61fff] (274432 bytes)
[    0.020809] clocksource: jiffies: mask: 0xffffffff max_cycles: 
0xffffffff, max_idle_ns: 7645041785100000 ns
[    0.020809] futex hash table entries: 1024 (order: 4, 65536 bytes, 
linear)
[    0.020809] pinctrl core: initialized pinctrl subsystem
[    0.020809] PM: RTC time: 14:56:55, date: 2021-11-23
[    0.020809] NET: Registered PF_NETLINK/PF_ROUTE protocol family
[    0.020903] DMA: preallocated 512 KiB GFP_KERNEL pool for atomic 
allocations
[    0.020965] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA pool for 
atomic allocations
[    0.021026] DMA: preallocated 512 KiB GFP_KERNEL|GFP_DMA32 pool for 
atomic allocations
[    0.021038] audit: initializing netlink subsys (disabled)
[    0.021051] audit: type=2000 audit(1637679415.044:1): 
state=initialized audit_enabled=0 res=1
[    0.021051] thermal_sys: Registered thermal governor 'fair_share'
[    0.021051] thermal_sys: Registered thermal governor 'bang_bang'
[    0.021051] thermal_sys: Registered thermal governor 'step_wise'
[    0.021051] thermal_sys: Registered thermal governor 'user_space'
[    0.021051] EISA bus registered
[    0.021051] cpuidle: using governor ladder
[    0.021051] cpuidle: using governor menu
[    0.021051] acpiphp: ACPI Hot Plug PCI Controller Driver version: 0.5
[    0.021051] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 
0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.021051] PCI: not using MMCONFIG
[    0.021051] PCI: Using configuration type 1 for base access
[    0.021051] core: PMU erratum BJ122, BV98, HSD29 workaround disabled, 
HT off
[    0.021051] ENERGY_PERF_BIAS: Set to 'normal', was 'performance'
[    0.025820] kprobes: kprobe jump-optimization is enabled. All kprobes 
are optimized if possible.
[    0.025832] HugeTLB registered 2.00 MiB page size, pre-allocated 0 pages
[    0.025832] ACPI: Added _OSI(Module Device)
[    0.025832] ACPI: Added _OSI(Processor Device)
[    0.025832] ACPI: Added _OSI(3.0 _SCP Extensions)
[    0.025832] ACPI: Added _OSI(Processor Aggregator Device)
[    0.025832] ACPI: Added _OSI(Linux-Dell-Video)
[    0.025832] ACPI: Added _OSI(Linux-Lenovo-NV-HDMI-Audio)
[    0.025832] ACPI: Added _OSI(Linux-HPI-Hybrid-Graphics)
[    0.036277] ACPI: 2 ACPI AML tables successfully acquired and loaded
[    0.038335] ACPI: Dynamic OEM Table Load:
[    0.038346] ACPI: SSDT 0xFFFF98A7002D3400 00038C (v01 AMI    IST 
  00000001 MSFT 03000001)
[    0.039300] ACPI: Dynamic OEM Table Load:
[    0.039307] ACPI: SSDT 0xFFFF98A700B67CC0 000084 (v01 AMI    CST 
  00000001 MSFT 03000001)
[    0.041648] ACPI: Interpreter enabled
[    0.041675] ACPI: PM: (supports S0 S3 S4 S5)
[    0.041677] ACPI: Using IOAPIC for interrupt routing
[    0.041730] PCI: MMCONFIG for domain 0000 [bus 00-3f] at [mem 
0xe0000000-0xe3ffffff] (base 0xe0000000)
[    0.041897] PCI: MMCONFIG at [mem 0xe0000000-0xe3ffffff] reserved in 
ACPI motherboard resources
[    0.041914] PCI: Using host bridge windows from ACPI; if necessary, 
use "pci=nocrs" and report a bug
[    0.042476] ACPI: Enabled 8 GPEs in block 00 to 3F
[    0.042923] ACPI: [Firmware Bug]: BIOS _OSI(Linux) query ignored
[    0.056573] ACPI: PCI Root Bridge [PCI0] (domain 0000 [bus 00-ff])
[    0.056584] acpi PNP0A08:00: _OSC: OS supports [ExtendedConfig ASPM 
ClockPM Segments MSI HPX-Type3]
[    0.056781] acpi PNP0A08:00: _OSC: platform does not support 
[SHPCHotplug LTR]
[    0.057129] acpi PNP0A08:00: _OSC: OS now controls [PCIeHotplug PME 
AER PCIeCapability]
[    0.057144] acpi PNP0A08:00: [Firmware Info]: MMCONFIG for domain 
0000 [bus 00-3f] only partially covers this bridge
[    0.057830] PCI host bridge to bus 0000:00
[    0.057834] pci_bus 0000:00: root bus resource [io  0x0000-0x03af window]
[    0.057838] pci_bus 0000:00: root bus resource [io  0x03e0-0x0cf7 window]
[    0.057841] pci_bus 0000:00: root bus resource [io  0x03b0-0x03df window]
[    0.057843] pci_bus 0000:00: root bus resource [io  0x0d00-0xffff window]
[    0.057846] pci_bus 0000:00: root bus resource [mem 
0x000a0000-0x000dffff window]
[    0.057849] pci_bus 0000:00: root bus resource [mem 
0xbfa00000-0xffffffff window]
[    0.057852] pci_bus 0000:00: root bus resource [bus 00-ff]
[    0.057875] pci 0000:00:00.0: [8086:0100] type 00 class 0x060000
[    0.057983] pci 0000:00:01.0: [8086:0101] type 01 class 0x060400
[    0.058043] pci 0000:00:01.0: PME# supported from D0 D3hot D3cold
[    0.058188] pci 0000:00:02.0: [8086:0102] type 00 class 0x030000
[    0.058202] pci 0000:00:02.0: reg 0x10: [mem 0xfe000000-0xfe3fffff 64bit]
[    0.058212] pci 0000:00:02.0: reg 0x18: [mem 0xd0000000-0xdfffffff 
64bit pref]
[    0.058219] pci 0000:00:02.0: reg 0x20: [io  0xf000-0xf03f]
[    0.058452] pci 0000:00:16.0: [8086:1c3a] type 00 class 0x078000
[    0.058515] pci 0000:00:16.0: reg 0x10: [mem 0xfe529000-0xfe52900f 64bit]
[    0.058742] pci 0000:00:16.0: PME# supported from D0 D3hot D3cold
[    0.058903] pci 0000:00:19.0: [8086:1503] type 00 class 0x020000
[    0.058946] pci 0000:00:19.0: reg 0x10: [mem 0xfe500000-0xfe51ffff]
[    0.058970] pci 0000:00:19.0: reg 0x14: [mem 0xfe528000-0xfe528fff]
[    0.058994] pci 0000:00:19.0: reg 0x18: [io  0xf080-0xf09f]
[    0.059193] pci 0000:00:19.0: PME# supported from D0 D3hot D3cold
[    0.059372] pci 0000:00:1a.0: [8086:1c2d] type 00 class 0x0c0320
[    0.059419] pci 0000:00:1a.0: reg 0x10: [mem 0xfe527000-0xfe5273ff]
[    0.059668] pci 0000:00:1a.0: PME# supported from D0 D3hot D3cold
[    0.059866] pci 0000:00:1b.0: [8086:1c20] type 00 class 0x040300
[    0.059921] pci 0000:00:1b.0: reg 0x10: [mem 0xfe520000-0xfe523fff 64bit]
[    0.060197] pci 0000:00:1b.0: PME# supported from D0 D3hot D3cold
[    0.060379] pci 0000:00:1d.0: [8086:1c26] type 00 class 0x0c0320
[    0.060430] pci 0000:00:1d.0: reg 0x10: [mem 0xfe526000-0xfe5263ff]
[    0.060695] pci 0000:00:1d.0: PME# supported from D0 D3hot D3cold
[    0.060869] pci 0000:00:1e.0: [8086:244e] type 01 class 0x060401
[    0.061213] pci 0000:00:1f.0: [8086:1c50] type 00 class 0x060100
[    0.061648] pci 0000:00:1f.2: [8086:1c02] type 00 class 0x010601
[    0.061698] pci 0000:00:1f.2: reg 0x10: [io  0xf0d0-0xf0d7]
[    0.061727] pci 0000:00:1f.2: reg 0x14: [io  0xf0c0-0xf0c3]
[    0.061752] pci 0000:00:1f.2: reg 0x18: [io  0xf0b0-0xf0b7]
[    0.061781] pci 0000:00:1f.2: reg 0x1c: [io  0xf0a0-0xf0a3]
[    0.061809] pci 0000:00:1f.2: reg 0x20: [io  0xf060-0xf07f]
[    0.061837] pci 0000:00:1f.2: reg 0x24: [mem 0xfe525000-0xfe5257ff]
[    0.061993] pci 0000:00:1f.2: PME# supported from D3hot
[    0.062158] pci 0000:00:1f.3: [8086:1c22] type 00 class 0x0c0500
[    0.062222] pci 0000:00:1f.3: reg 0x10: [mem 0xfe524000-0xfe5240ff 64bit]
[    0.062293] pci 0000:00:1f.3: reg 0x20: [io  0xf040-0xf05f]
[    0.062531] pci 0000:01:00.0: [494f:10dc] type 00 class 0x070002
[    0.062551] pci 0000:01:00.0: reg 0x10: [io  0xe000-0xe03f]
[    0.062562] pci 0000:01:00.0: reg 0x14: [mem 0xfe400000-0xfe400fff]
[    0.062670] pci 0000:01:00.0: supports D1 D2
[    0.062673] pci 0000:01:00.0: PME# supported from D3hot
[    0.072035] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.072040] pci 0000:00:01.0:   bridge window [io  0xe000-0xefff]
[    0.072044] pci 0000:00:01.0:   bridge window [mem 0xfe400000-0xfe4fffff]
[    0.072108] pci_bus 0000:02: extended config space not accessible
[    0.072244] pci 0000:00:1e.0: PCI bridge to [bus 02] (subtractive decode)
[    0.072275] pci 0000:00:1e.0:   bridge window [io  0x0000-0x03af 
window] (subtractive decode)
[    0.072278] pci 0000:00:1e.0:   bridge window [io  0x03e0-0x0cf7 
window] (subtractive decode)
[    0.072280] pci 0000:00:1e.0:   bridge window [io  0x03b0-0x03df 
window] (subtractive decode)
[    0.072283] pci 0000:00:1e.0:   bridge window [io  0x0d00-0xffff 
window] (subtractive decode)
[    0.072286] pci 0000:00:1e.0:   bridge window [mem 
0x000a0000-0x000dffff window] (subtractive decode)
[    0.072289] pci 0000:00:1e.0:   bridge window [mem 
0xbfa00000-0xffffffff window] (subtractive decode)
[    0.073715] ACPI: PCI: Interrupt link LNKA configured for IRQ 11
[    0.073842] ACPI: PCI: Interrupt link LNKB configured for IRQ 0
[    0.073965] ACPI: PCI: Interrupt link LNKC configured for IRQ 10
[    0.074087] ACPI: PCI: Interrupt link LNKD configured for IRQ 11
[    0.074209] ACPI: PCI: Interrupt link LNKE configured for IRQ 10
[    0.074335] ACPI: PCI: Interrupt link LNKF configured for IRQ 0
[    0.074456] ACPI: PCI: Interrupt link LNKG configured for IRQ 5
[    0.074577] ACPI: PCI: Interrupt link LNKH configured for IRQ 3
[    0.074794] iommu: Default domain type: Translated
[    0.074794] iommu: DMA domain TLB invalidation policy: lazy mode
[    0.074794] pci 0000:00:02.0: vgaarb: setting as boot VGA device
[    0.074794] pci 0000:00:02.0: vgaarb: VGA device added: 
decodes=io+mem,owns=io+mem,locks=none
[    0.074794] pci 0000:00:02.0: vgaarb: bridge control possible
[    0.074794] vgaarb: loaded
[    0.074794] SCSI subsystem initialized
[    0.074794] libata version 3.00 loaded.
[    0.074794] ACPI: bus type USB registered
[    0.074794] usbcore: registered new interface driver usbfs
[    0.074794] usbcore: registered new interface driver hub
[    0.074794] usbcore: registered new device driver usb
[    0.074794] pps_core: LinuxPPS API ver. 1 registered
[    0.074794] pps_core: Software ver. 5.3.6 - Copyright 2005-2007 
Rodolfo Giometti <giometti@linux.it>
[    0.074794] PTP clock support registered
[    0.074794] EDAC MC: Ver: 3.0.0
[    0.074794] NetLabel: Initializing
[    0.074794] NetLabel:  domain hash size = 128
[    0.074794] NetLabel:  protocols = UNLABELED CIPSOv4 CALIPSO
[    0.074794] NetLabel:  unlabeled traffic allowed by default
[    0.076014] PCI: Using ACPI for IRQ routing
[    0.082585] PCI: pci_cache_line_size set to 64 bytes
[    0.082669] e820: reserve RAM buffer [mem 0x0009ac00-0x0009ffff]
[    0.082672] e820: reserve RAM buffer [mem 0xbc98e000-0xbfffffff]
[    0.082676] e820: reserve RAM buffer [mem 0xbcad5000-0xbfffffff]
[    0.082680] e820: reserve RAM buffer [mem 0xbcbdd000-0xbfffffff]
[    0.082683] e820: reserve RAM buffer [mem 0xbd000000-0xbfffffff]
[    0.082685] e820: reserve RAM buffer [mem 0x13e600000-0x13fffffff]
[    0.084307] hpet0: at MMIO 0xfed00000, IRQs 2, 8, 0, 0, 0, 0, 0, 0
[    0.084324] hpet0: 8 comparators, 64-bit 14.318180 MHz counter
[    0.086393] clocksource: Switched to clocksource tsc-early
[    0.101517] VFS: Disk quotas dquot_6.6.0
[    0.101545] VFS: Dquot-cache hash table entries: 512 (order 0, 4096 
bytes)
[    0.101731] AppArmor: AppArmor Filesystem Enabled
[    0.101772] pnp: PnP ACPI init
[    0.102043] system 00:00: [mem 0xfed10000-0xfed19fff] has been reserved
[    0.102049] system 00:00: [mem 0xe0000000-0xe3ffffff] has been reserved
[    0.102053] system 00:00: [mem 0xfed90000-0xfed93fff] has been reserved
[    0.102056] system 00:00: [mem 0xfed20000-0xfed3ffff] has been reserved
[    0.102059] system 00:00: [mem 0xfee00000-0xfee0ffff] has been reserved
[    0.102391] system 00:01: [io  0x0290-0x029f] has been reserved
[    0.103016] system 00:03: [io  0x04d0-0x04d1] has been reserved
[    0.103429] pnp 00:04: [dma 0 disabled]
[    0.104126] system 00:05: [io  0x0400-0x0453] has been reserved
[    0.104131] system 00:05: [io  0x0458-0x047f] has been reserved
[    0.104134] system 00:05: [io  0x1180-0x119f] has been reserved
[    0.104137] system 00:05: [io  0x0500-0x057f] has been reserved
[    0.104141] system 00:05: [mem 0xfed1c000-0xfed1ffff] has been reserved
[    0.104145] system 00:05: [mem 0xfec00000-0xfecfffff] could not be 
reserved
[    0.104148] system 00:05: [mem 0xfed08000-0xfed08fff] has been reserved
[    0.104151] system 00:05: [mem 0xff000000-0xffffffff] has been reserved
[    0.104284] system 00:06: [io  0x0454-0x0457] has been reserved
[    0.104731] pnp: PnP ACPI: found 7 devices
[    0.111570] clocksource: acpi_pm: mask: 0xffffff max_cycles: 
0xffffff, max_idle_ns: 2085701024 ns
[    0.111670] NET: Registered PF_INET protocol family
[    0.111767] IP idents hash table entries: 65536 (order: 7, 524288 
bytes, linear)
[    0.113080] tcp_listen_portaddr_hash hash table entries: 2048 (order: 
3, 32768 bytes, linear)
[    0.113125] TCP established hash table entries: 32768 (order: 6, 
262144 bytes, linear)
[    0.113257] TCP bind hash table entries: 32768 (order: 7, 524288 
bytes, linear)
[    0.113343] TCP: Hash tables configured (established 32768 bind 32768)
[    0.113395] UDP hash table entries: 2048 (order: 4, 65536 bytes, linear)
[    0.113422] UDP-Lite hash table entries: 2048 (order: 4, 65536 bytes, 
linear)
[    0.113495] NET: Registered PF_UNIX/PF_LOCAL protocol family
[    0.113506] NET: Registered PF_XDP protocol family
[    0.113519] pci 0000:00:01.0: PCI bridge to [bus 01]
[    0.113525] pci 0000:00:01.0:   bridge window [io  0xe000-0xefff]
[    0.113530] pci 0000:00:01.0:   bridge window [mem 0xfe400000-0xfe4fffff]
[    0.113538] pci 0000:00:1e.0: PCI bridge to [bus 02]
[    0.113574] pci_bus 0000:00: resource 4 [io  0x0000-0x03af window]
[    0.113577] pci_bus 0000:00: resource 5 [io  0x03e0-0x0cf7 window]
[    0.113580] pci_bus 0000:00: resource 6 [io  0x03b0-0x03df window]
[    0.113583] pci_bus 0000:00: resource 7 [io  0x0d00-0xffff window]
[    0.113586] pci_bus 0000:00: resource 8 [mem 0x000a0000-0x000dffff 
window]
[    0.113588] pci_bus 0000:00: resource 9 [mem 0xbfa00000-0xffffffff 
window]
[    0.113592] pci_bus 0000:01: resource 0 [io  0xe000-0xefff]
[    0.113594] pci_bus 0000:01: resource 1 [mem 0xfe400000-0xfe4fffff]
[    0.113597] pci_bus 0000:02: resource 4 [io  0x0000-0x03af window]
[    0.113600] pci_bus 0000:02: resource 5 [io  0x03e0-0x0cf7 window]
[    0.113603] pci_bus 0000:02: resource 6 [io  0x03b0-0x03df window]
[    0.113605] pci_bus 0000:02: resource 7 [io  0x0d00-0xffff window]
[    0.113608] pci_bus 0000:02: resource 8 [mem 0x000a0000-0x000dffff 
window]
[    0.113611] pci_bus 0000:02: resource 9 [mem 0xbfa00000-0xffffffff 
window]
[    0.113736] pci 0000:00:02.0: BIOS left Intel GPU interrupts enabled; 
disabling
[    0.113746] pci 0000:00:02.0: Video device with shadowed ROM at [mem 
0x000c0000-0x000dffff]
[    0.244147] pci 0000:00:1a.0: quirk_usb_early_handoff+0x0/0x640 took 
127326 usecs
[    0.376132] pci 0000:00:1d.0: quirk_usb_early_handoff+0x0/0x640 took 
128865 usecs
[    0.376172] PCI: CLS 64 bytes, default 64
[    0.376182] PCI-DMA: Using software bounce buffering for IO (SWIOTLB)
[    0.376184] software IO TLB: mapped [mem 
0x00000000b898e000-0x00000000bc98e000] (64MB)
[    0.376259] Trying to unpack rootfs image as initramfs...
[    0.377008] Initialise system trusted keyrings
[    0.377023] Key type blacklist registered
[    0.377078] workingset: timestamp_bits=36 max_order=20 bucket_order=0
[    0.379422] zbud: loaded
[    0.379893] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    0.380170] fuse: init (API version 7.35)
[    0.380438] integrity: Platform Keyring initialized
[    0.398198] Key type asymmetric registered
[    0.398201] Asymmetric key parser 'x509' registered
[    0.398248] Block layer SCSI generic (bsg) driver version 0.4 loaded 
(major 245)
[    0.398300] io scheduler mq-deadline registered
[    0.398844] pcieport 0000:00:01.0: PME: Signaling with IRQ 24
[    0.398968] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4
[    0.399546] input: Power Button as 
/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input0
[    0.399585] ACPI: button: Power Button [PWRB]
[    0.399644] input: Power Button as 
/devices/LNXSYSTM:00/LNXPWRBN:00/input/input1
[    0.399702] ACPI: button: Power Button [PWRF]
[    0.401961] Linux agpgart interface v0.103
[    0.404610] loop: module loaded
[    0.404995] libphy: Fixed MDIO Bus: probed
[    0.404998] tun: Universal TUN/TAP device driver, 1.6
[    0.405061] PPP generic driver version 2.4.2
[    0.405176] VFIO - User Level meta-driver version: 0.3
[    0.405329] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    0.405340] ehci-pci: EHCI PCI platform driver
[    0.405527] ehci-pci 0000:00:1a.0: EHCI Host Controller
[    0.405538] ehci-pci 0000:00:1a.0: new USB bus registered, assigned 
bus number 1
[    0.405568] ehci-pci 0000:00:1a.0: debug port 2
[    0.409515] ehci-pci 0000:00:1a.0: irq 16, io mem 0xfe527000
[    0.424051] ehci-pci 0000:00:1a.0: USB 2.0 started, EHCI 1.00
[    0.424145] usb usb1: New USB device found, idVendor=1d6b, 
idProduct=0002, bcdDevice= 5.16
[    0.424150] usb usb1: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.424154] usb usb1: Product: EHCI Host Controller
[    0.424156] usb usb1: Manufacturer: Linux 5.16.0-rc1+ ehci_hcd
[    0.424159] usb usb1: SerialNumber: 0000:00:1a.0
[    0.424441] hub 1-0:1.0: USB hub found
[    0.424457] hub 1-0:1.0: 2 ports detected
[    0.424871] ehci-pci 0000:00:1d.0: EHCI Host Controller
[    0.424883] ehci-pci 0000:00:1d.0: new USB bus registered, assigned 
bus number 2
[    0.424913] ehci-pci 0000:00:1d.0: debug port 2
[    0.428891] ehci-pci 0000:00:1d.0: irq 23, io mem 0xfe526000
[    0.444045] ehci-pci 0000:00:1d.0: USB 2.0 started, EHCI 1.00
[    0.444160] usb usb2: New USB device found, idVendor=1d6b, 
idProduct=0002, bcdDevice= 5.16
[    0.444166] usb usb2: New USB device strings: Mfr=3, Product=2, 
SerialNumber=1
[    0.444169] usb usb2: Product: EHCI Host Controller
[    0.444171] usb usb2: Manufacturer: Linux 5.16.0-rc1+ ehci_hcd
[    0.444174] usb usb2: SerialNumber: 0000:00:1d.0
[    0.444455] hub 2-0:1.0: USB hub found
[    0.444471] hub 2-0:1.0: 2 ports detected
[    0.444712] ehci-platform: EHCI generic platform driver
[    0.444730] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    0.444738] ohci-pci: OHCI PCI platform driver
[    0.444753] ohci-platform: OHCI generic platform driver
[    0.444763] uhci_hcd: USB Universal Host Controller Interface driver
[    0.444845] i8042: PNP: No PS/2 controller found.
[    0.444847] i8042: Probing ports directly.
[    0.448201] serio: i8042 KBD port at 0x60,0x64 irq 1
[    0.448264] serio: i8042 AUX port at 0x60,0x64 irq 12
[    0.448574] mousedev: PS/2 mouse device common for all mice
[    0.449039] rtc_cmos 00:02: RTC can wake from S4
[    0.449597] rtc_cmos 00:02: registered as rtc0
[    0.449690] rtc_cmos 00:02: setting system clock to 
2021-11-23T14:56:55 UTC (1637679415)
[    0.449717] rtc_cmos 00:02: alarms up to one month, y3k, 114 bytes 
nvram, hpet irqs
[    0.449733] i2c_dev: i2c /dev entries driver
[    0.449910] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is 
disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[    0.449954] device-mapper: uevent: version 1.0.3
[    0.450080] device-mapper: ioctl: 4.45.0-ioctl (2021-03-22) 
initialised: dm-devel@redhat.com
[    0.450111] platform eisa.0: Probing EISA bus 0
[    0.450115] platform eisa.0: EISA: Cannot allocate resource for mainboard
[    0.450118] platform eisa.0: Cannot allocate resource for EISA slot 1
[    0.450120] platform eisa.0: Cannot allocate resource for EISA slot 2
[    0.450123] platform eisa.0: Cannot allocate resource for EISA slot 3
[    0.450125] platform eisa.0: Cannot allocate resource for EISA slot 4
[    0.450127] platform eisa.0: Cannot allocate resource for EISA slot 5
[    0.450129] platform eisa.0: Cannot allocate resource for EISA slot 6
[    0.450132] platform eisa.0: Cannot allocate resource for EISA slot 7
[    0.450134] platform eisa.0: Cannot allocate resource for EISA slot 8
[    0.450136] platform eisa.0: EISA: Detected 0 cards
[    0.450143] intel_pstate: Intel P-state driver initializing
[    0.450484] ledtrig-cpu: registered to indicate activity on CPUs
[    0.450514] vesafb: mode is 640x480x32, linelength=2560, pages=0
[    0.450516] vesafb: scrolling: redraw
[    0.450516] vesafb: Truecolor: size=8:8:8:8, shift=24:16:8:0
[    0.450529] vesafb: framebuffer at 0xd0000000, mapped to 
0x(____ptrval____), using 1216k, total 1216k
[    0.450563] fbcon: Deferring console take-over
[    0.450564] fb0: VESA VGA frame buffer device
[    0.450605] drop_monitor: Initializing network drop monitor service
[    0.450747] NET: Registered PF_INET6 protocol family
[    0.680040] usb 1-1: new high-speed USB device number 2 using ehci-pci
[    0.700040] usb 2-1: new high-speed USB device number 2 using ehci-pci
[    0.836379] usb 1-1: New USB device found, idVendor=8087, 
idProduct=0024, bcdDevice= 0.00
[    0.836385] usb 1-1: New USB device strings: Mfr=0, Product=0, 
SerialNumber=0
[    0.836662] hub 1-1:1.0: USB hub found
[    0.836719] hub 1-1:1.0: 6 ports detected
[    0.856395] usb 2-1: New USB device found, idVendor=8087, 
idProduct=0024, bcdDevice= 0.00
[    0.856401] usb 2-1: New USB device strings: Mfr=0, Product=0, 
SerialNumber=0
[    0.856650] hub 2-1:1.0: USB hub found
[    0.856743] hub 2-1:1.0: 6 ports detected
[    0.932922] Freeing initrd memory: 42400K
[    0.937333] Segment Routing with IPv6
[    0.937350] In-situ OAM (IOAM) with IPv6
[    0.937377] NET: Registered PF_PACKET protocol family
[    0.937448] Key type dns_resolver registered
[    0.937844] microcode: sig=0x206a7, pf=0x2, revision=0x2f
[    0.937931] microcode: Microcode Update Driver: v2.2.
[    0.937936] IPI shorthand broadcast: enabled
[    0.937947] sched_clock: Marking stable (961915720, 
-23988345)->(944920686, -6993311)
[    0.938156] registered taskstats version 1
[    0.938277] Loading compiled-in X.509 certificates
[    0.939142] Loaded X.509 cert 'Build time autogenerated kernel key: 
9da99cac0f9af016fbf48ae3fb417491bf6ed6fa'
[    0.939290] zswap: loaded using pool lzo/zbud
[    0.939575] Key type ._fscrypt registered
[    0.939577] Key type .fscrypt registered
[    0.939578] Key type fscrypt-provisioning registered
[    0.941574] Key type encrypted registered
[    0.941578] AppArmor: AppArmor sha1 policy hashing enabled
[    0.941583] ima: No TPM chip found, activating TPM-bypass!
[    0.941587] Loading compiled-in module X.509 certificates
[    0.942348] Loaded X.509 cert 'Build time autogenerated kernel key: 
9da99cac0f9af016fbf48ae3fb417491bf6ed6fa'
[    0.942351] ima: Allocated hash algorithm: sha1
[    0.942360] ima: No architecture policies found
[    0.942370] evm: Initialising EVM extended attributes:
[    0.942370] evm: security.selinux
[    0.942371] evm: security.SMACK64
[    0.942372] evm: security.SMACK64EXEC
[    0.942373] evm: security.SMACK64TRANSMUTE
[    0.942374] evm: security.SMACK64MMAP
[    0.942375] evm: security.apparmor
[    0.942375] evm: security.ima
[    0.942376] evm: security.capability
[    0.942377] evm: HMAC attrs: 0x1
[    0.943484] PM:   Magic number: 13:136:941
[    0.943620] RAS: Correctable Errors collector initialized.
[    0.944888] Freeing unused decrypted memory: 2036K
[    0.945184] Freeing unused kernel image (initmem) memory: 2680K
[    0.964148] Write protecting the kernel read-only data: 24576k
[    0.964750] Freeing unused kernel image (text/rodata gap) memory: 2036K
[    0.964996] Freeing unused kernel image (rodata/data gap) memory: 720K
[    1.011178] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    1.011180] x86/mm: Checking user space page tables
[    1.055579] x86/mm: Checked W+X mappings: passed, no W+X pages found.
[    1.055584] Run /init as init process
[    1.055586]   with arguments:
[    1.055587]     /init
[    1.055588]     splash
[    1.055589]   with environment:
[    1.055590]     HOME=/
[    1.055590]     TERM=linux
[    1.055591]     BOOT_IMAGE=/boot/vmlinuz-5.16.0-rc1+
[    1.130292] e1000e: Intel(R) PRO/1000 Network Driver
[    1.130295] e1000e: Copyright(c) 1999 - 2015 Intel Corporation.
[    1.130535] e1000e 0000:00:19.0: Interrupt Throttling Rate (ints/sec) 
set to dynamic conservative mode
[    1.144027] usb 2-1.4: new high-speed USB device number 3 using ehci-pci
[    1.168609] ahci 0000:00:1f.2: version 3.0
[    1.180219] ahci 0000:00:1f.2: AHCI 0001.0300 32 slots 6 ports 6 Gbps 
0x31 impl SATA mode
[    1.180224] ahci 0000:00:1f.2: flags: 64bit ncq sntf pm led clo pio 
slum part ems sxs apst
[    1.208692] scsi host0: ahci
[    1.208978] scsi host1: ahci
[    1.209150] scsi host2: ahci
[    1.209345] scsi host3: ahci
[    1.209467] scsi host4: ahci
[    1.209724] scsi host5: ahci
[    1.209767] ata1: SATA max UDMA/133 abar m2048@0xfe525000 port 
0xfe525100 irq 26
[    1.209770] ata2: DUMMY
[    1.209771] ata3: DUMMY
[    1.209772] ata4: DUMMY
[    1.209776] ata5: SATA max UDMA/133 abar m2048@0xfe525000 port 
0xfe525300 irq 26
[    1.209780] ata6: SATA max UDMA/133 abar m2048@0xfe525000 port 
0xfe525380 irq 26
[    1.231983] e1000e 0000:00:19.0 0000:00:19.0 (uninitialized): 
registered PHC clock
[    1.256025] tsc: Refined TSC clocksource calibration: 2800.027 MHz
[    1.256032] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 
0x285c5a560aa, max_idle_ns: 440795284040 ns
[    1.256046] clocksource: Switched to clocksource tsc
[    1.260790] usb 2-1.4: New USB device found, idVendor=1605, 
idProduct=f001, bcdDevice=94.15
[    1.260794] usb 2-1.4: New USB device strings: Mfr=1, Product=2, 
SerialNumber=3
[    1.260796] usb 2-1.4: Product: USB-104-HUB
[    1.260797] usb 2-1.4: Manufacturer: ACCES I/O Products, Inc.
[    1.260799] usb 2-1.4: SerialNumber: 0000209C6DB7
[    1.261080] hub 2-1.4:1.0: USB hub found
[    1.261169] hub 2-1.4:1.0: 4 ports detected
[    1.310513] e1000e 0000:00:19.0 eth0: (PCI Express:2.5GT/s:Width x1) 
00:22:4d:56:46:b5
[    1.310522] e1000e 0000:00:19.0 eth0: Intel(R) PRO/1000 Network 
Connection
[    1.310592] e1000e 0000:00:19.0 eth0: MAC: 10, PHY: 11, PBA No: 
FFFFFF-0FF
[    1.311505] e1000e 0000:00:19.0 eno1: renamed from eth0
[    1.367690] ata6: SATA link down (SStatus 0 SControl 300)
[    1.367733] ata5: SATA link down (SStatus 0 SControl 300)
[    1.367774] ata1: SATA link up 6.0 Gbps (SStatus 133 SControl 300)
[    1.367949] ata1.00: ATA-11: PNY CS900 120GB SSD, CS900612, max UDMA/133
[    1.367983] ata1.00: 234441648 sectors, multi 16: LBA48 NCQ (depth 
32), AA
[    1.368293] ata1.00: configured for UDMA/133
[    1.368451] scsi 0:0:0:0: Direct-Access     ATA      PNY CS900 120GB 
  0612 PQ: 0 ANSI: 5
[    1.368672] sd 0:0:0:0: Attached scsi generic sg0 type 0
[    1.368705] sd 0:0:0:0: [sda] 234441648 512-byte logical blocks: (120 
GB/112 GiB)
[    1.368723] sd 0:0:0:0: [sda] Write Protect is off
[    1.368725] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00
[    1.368739] sd 0:0:0:0: [sda] Write cache: enabled, read cache: 
enabled, doesn't support DPO or FUA
[    1.407537]  sda: sda1 sda2 < sda5 >
[    1.420168] sd 0:0:0:0: [sda] Attached SCSI disk
[    1.507604] process '/bin/fstype' started with executable stack
[    1.539364] fbcon: Taking over console
[    1.539444] Console: switching to colour frame buffer device 80x30
[    1.564641] EXT4-fs (sda5): mounted filesystem with ordered data 
mode. Opts: (null). Quota mode: none.
[    1.653437] random: fast init done
[    1.875965] systemd[1]: systemd 237 running in system mode. (+PAM 
+AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP 
+GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN 
-PCRE2 default-hierarchy=hybrid)
[    1.896192] systemd[1]: Detected architecture x86-64.
[    1.918093] systemd[1]: Set hostname to <jdolan-desktop>.
[    2.266193] random: systemd: uninitialized urandom read (16 bytes read)
[    2.266409] systemd[1]: Created slice System Slice.
[    2.266458] random: systemd: uninitialized urandom read (16 bytes read)
[    2.266589] systemd[1]: Created slice User and Session Slice.
[    2.266607] random: systemd: uninitialized urandom read (16 bytes read)
[    2.266673] systemd[1]: Listening on udev Control Socket.
[    2.266692] systemd[1]: Reached target Slices.
[    2.266847] systemd[1]: Set up automount Arbitrary Executable File 
Formats File System Automount Point.
[    2.266926] systemd[1]: Listening on Journal Socket (/dev/log).
[    2.266946] systemd[1]: Reached target Remote File Systems.
[    2.442357] lp: driver loaded but no devices found
[    2.451275] ppdev: user-space parallel port driver
[    2.459763] EXT4-fs (sda5): re-mounted. Opts: errors=remount-ro. 
Quota mode: none.
[    2.485797] systemd-journald[274]: Received request to flush runtime 
journal from PID 1
[    2.486754] Adding 2097148k swap on /swapfile.  Priority:-2 extents:6 
across:2260988k SSFS
[    2.526738] loop0: detected capacity change from 0 to 8
[    2.544238] loop1: detected capacity change from 0 to 126632
[    2.544295] loop2: detected capacity change from 0 to 1912
[    2.568335] loop3: detected capacity change from 0 to 1096
[    2.596118] loop4: detected capacity change from 0 to 66440
[    2.596200] loop5: detected capacity change from 0 to 494312
[    2.596283] loop6: detected capacity change from 0 to 5088
[    2.596359] loop7: detected capacity change from 0 to 4992
[    2.616145] loop8: detected capacity change from 0 to 448512
[    2.616752] loop9: detected capacity change from 0 to 66368
[    2.633795] loop13: detected capacity change from 0 to 113536
[    2.633796] loop11: detected capacity change from 0 to 5192
[    2.634157] loop12: detected capacity change from 0 to 113656
[    2.634391] loop10: detected capacity change from 0 to 133320
[    2.634707] loop15: detected capacity change from 0 to 5192
[    2.634796] loop14: detected capacity change from 0 to 126632
[    2.634919] loop16: detected capacity change from 0 to 1408
[    2.635001] loop17: detected capacity change from 0 to 496320
[    2.635023] loop18: detected capacity change from 0 to 1408
[    2.652414] loop19: detected capacity change from 0 to 523400
[    2.660400] loop20: detected capacity change from 0 to 133552
[    2.865383] audit: type=1400 audit(1637679417.910:2): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="/usr/bin/man" pid=401 comm="apparmor_parser"
[    2.865831] audit: type=1400 audit(1637679417.910:3): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="man_filter" pid=401 comm="apparmor_parser"
[    2.865843] audit: type=1400 audit(1637679417.910:4): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="man_groff" pid=401 comm="apparmor_parser"
[    2.866957] audit: type=1400 audit(1637679417.910:5): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="libreoffice-oopslash" pid=402 comm="apparmor_parser"
[    2.871137] audit: type=1400 audit(1637679417.914:6): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="libreoffice-senddoc" pid=405 comm="apparmor_parser"
[    2.876970] audit: type=1400 audit(1637679417.922:7): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="libreoffice-xpdfimport" pid=407 comm="apparmor_parser"
[    2.878664] audit: type=1400 audit(1637679417.922:8): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="/sbin/dhclient" pid=398 comm="apparmor_parser"
[    2.879103] audit: type=1400 audit(1637679417.922:9): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="/usr/lib/NetworkManager/nm-dhcp-client.action" pid=398 
comm="apparmor_parser"
[    2.879114] audit: type=1400 audit(1637679417.922:10): 
apparmor="STATUS" operation="profile_load" profile="unconfined" 
name="/usr/lib/NetworkManager/nm-dhcp-helper" pid=398 comm="apparmor_parser"
[    2.926192] 8250_base: loading out-of-tree module taints kernel.
[    2.926226] 8250_base: module verification failed: signature and/or 
required key missing - tainting kernel
[    2.927496] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
[    2.927703] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) 
is a 16550A
[    2.979481] 0000:01:00.0: ttyS4 at I/O 0xe000 (irq = 16, base_baud = 
921600) is a 16550A
[    2.979487] 0000:01:00.0: ttyS4 extra baud rates supported: 1843200, 
3686400
[    2.979822] 0000:01:00.0: ttyS5 at I/O 0xe008 (irq = 16, base_baud = 
921600) is a 16550A
[    2.979825] 0000:01:00.0: ttyS5 extra baud rates supported: 1843200, 
3686400
[    2.982020] 0000:01:00.0: ttyS6 at I/O 0xe010 (irq = 16, base_baud = 
921600) is a 16550A
[    2.982025] 0000:01:00.0: ttyS6 extra baud rates supported: 1843200, 
3686400
[    2.982256] 0000:01:00.0: ttyS7 at I/O 0xe038 (irq = 16, base_baud = 
921600) is a 16550A
[    2.982259] 0000:01:00.0: ttyS7 extra baud rates supported: 1843200, 
3686400
[    3.025249] ACPI: bus type drm_connector registered
[    3.077352] RAPL PMU: API unit is 2^-32 Joules, 3 fixed counters, 
163840 ms ovfl timer
[    3.077356] RAPL PMU: hw unit of domain pp0-core 2^-16 Joules
[    3.077358] RAPL PMU: hw unit of domain package 2^-16 Joules
[    3.077359] RAPL PMU: hw unit of domain pp1-gpu 2^-16 Joules
[    3.159644] cryptd: max_cpu_qlen set to 1000
[    3.182831] AVX version of gcm_enc/dec engaged.
[    3.182855] AES CTR mode by8 optimization enabled
[    3.205537] checking generic (d0000000 130000) vs hw (fe000000 400000)
[    3.205542] checking generic (d0000000 130000) vs hw (d0000000 10000000)
[    3.205543] fb0: switching to i915 from VESA VGA
[    3.228102] Console: switching to colour dummy device 80x25
[    3.229925] i915 0000:00:02.0: vgaarb: deactivate vga console
[    3.249265] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on 
minor 0
[    3.261541] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.283083] snd_hda_intel 0000:00:1b.0: bound 0000:00:02.0 (ops 
i915_audio_component_bind_ops [i915])
[    3.286925] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.290206] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.316582] gpio_ich gpio_ich.2.auto: GPIO from 948 to 1023
[    3.335512] snd_hda_codec_realtek hdaudioC0D2: autoconfig for ALC888: 
line_outs=1 (0x14/0x0/0x0/0x0/0x0) type:line
[    3.335519] snd_hda_codec_realtek hdaudioC0D2:    speaker_outs=1 
(0x17/0x0/0x0/0x0/0x0)
[    3.335521] snd_hda_codec_realtek hdaudioC0D2:    hp_outs=1 
(0x1b/0x0/0x0/0x0/0x0)
[    3.335523] snd_hda_codec_realtek hdaudioC0D2:    mono: mono_out=0x0
[    3.335525] snd_hda_codec_realtek hdaudioC0D2:    dig-out=0x1e/0x0
[    3.335526] snd_hda_codec_realtek hdaudioC0D2:    inputs:
[    3.335528] snd_hda_codec_realtek hdaudioC0D2:      Front Mic=0x19
[    3.335530] snd_hda_codec_realtek hdaudioC0D2:      Rear Mic=0x18
[    3.335531] snd_hda_codec_realtek hdaudioC0D2:      Line=0x1a
[    3.355954] input: HDA Intel PCH Front Mic as 
/devices/pci0000:00/0000:00:1b.0/sound/card0/input5
[    3.356006] input: HDA Intel PCH Rear Mic as 
/devices/pci0000:00/0000:00:1b.0/sound/card0/input6
[    3.356070] input: HDA Intel PCH Line as 
/devices/pci0000:00/0000:00:1b.0/sound/card0/input7
[    3.356118] input: HDA Intel PCH Line Out as 
/devices/pci0000:00/0000:00:1b.0/sound/card0/input8
[    3.356163] input: HDA Intel PCH Front Headphone as 
/devices/pci0000:00/0000:00:1b.0/sound/card0/input9
[    3.593655] intel_rapl_common: Found RAPL domain package
[    3.593660] intel_rapl_common: Found RAPL domain core
[    3.593661] intel_rapl_common: Found RAPL domain uncore
[    3.593666] intel_rapl_common: RAPL package-0 domain package locked 
by BIOS
[    4.165346] [J4D] flag present
[    4.165902] [J4D] flag not present(adding)
[    4.166561] [J4D] flag present
[    4.167096] [J4D] flag not present(adding)
[    4.167753] [J4D] flag present
[    4.168298] [J4D] flag not present(adding)
[    4.168953] [J4D] flag present
[    4.169483] [J4D] flag not present(adding)
[    6.357984] loop21: detected capacity change from 0 to 8
[    8.296025] random: crng init done
[    8.296029] random: 7 urandom warning(s) missed due to ratelimiting
[    8.950174] e1000e 0000:00:19.0 eno1: NIC Link is Up 1000 Mbps Full 
Duplex, Flow Control: Rx/Tx
[    8.950227] IPv6: ADDRCONF(NETDEV_CHANGE): eno1: link becomes ready
[   42.730050] 8250_pericom 0000:01:00.0: VPD access failed.  This is 
likely a firmware bug on this device.  Contact the card vendor for a 
firmware update

^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-23 15:02           ` Jay Dolan
@ 2021-11-23 15:38             ` Andy Shevchenko
  2021-11-24  4:29               ` Jay Dolan
  0 siblings, 1 reply; 19+ messages in thread
From: Andy Shevchenko @ 2021-11-23 15:38 UTC (permalink / raw)
  To: Jay Dolan; +Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby

On Tue, Nov 23, 2021 at 07:02:44AM -0800, Jay Dolan wrote:
> On 11/23/21 1:25 AM, Andy Shevchenko wrote:
> > On Mon, Nov 22, 2021 at 09:19:09PM -0800, Jay Dolan wrote:
> > > On 11/22/21 4:48 AM, Andy Shevchenko wrote:
> > > > On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
> > > > > On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
> > > > > > On 11/17/21 6:57 AM, Andy Shevchenko wrote:
> > > > > > > Split Pericom driver to a separate module.
> > > > > > > While at it, re-enable high baud rates.
> > > > > > > 
> > > > > > > Jay, can you, please, test this on as many hardware as you have?
> > > > > 
> > > > > ...
> > > > > 
> > > > > > * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
> > > > > > stick.
> > > > > 
> > > > > Can't find an evidence that this is the case. Can you recheck this (reading
> > > > > flags back via sysfs or so)? So, for v2 I'll leave my approach.
> > > > 
> > > > Otherwise how the other drivers which are using that flag survive? If it's
> > > > indeed an issue, it should be fixed on generic level.
> > > > 
> > > 
> > > I modified pericom_do_startup to log when the UPF_MAGIC_MULTIPLIER flag was
> > > present. Then tried to set the port to 3000000 a few times. The port
> > > stayed at 9600. It looks like pericom_do_startup() is getting called twice
> > > per port on boot, and the flag is gone with the second one.
> > > 
> > > [    4.925577] [J4D] flag present
> > > [    4.926121] [J4D[ flag not present
> > > [    4.926843] [J4D] flag present
> > > [    4.927415] [J4D[ flag not present
> > > [    4.928106] [J4D] flag present
> > > [    4.928673] [J4D[ flag not present
> > > [    4.929419] [J4D] flag present
> > > [    4.930447] [J4D[ flag not present
> > > 
> > > [   49.528504] [J4D[ flag not present
> > > [   51.675240] [J4D[ flag not present
> > > [   59.617954] [J4D[ flag not present
> > > 
> > > Then I modified it to log when it was adding the flag in. The port was set
> > > to 3000000. Also the flag only needed to be added in once. It sticks after
> > > the first time.
> > > 
> > > [    4.647546] [J4D] flag present
> > > [    4.648119] [J4D] flag not present(adding)
> > > [    4.648778] [J4D] flag present
> > > [    4.649330] [J4D] flag not present(adding)
> > > [    4.650001] [J4D] flag present
> > > [    4.650537] [J4D] flag not present(adding)
> > > [    4.651192] [J4D] flag present
> > > [    4.651718] [J4D] flag not present(adding)
> > > 
> > > [   96.025668] [J4D] flag present
> > > [  100.130626] [J4D] flag present
> > > [  116.435436] [J4D] flag present
> > > 
> > > I mostly just guessed at do_startup() being the place to set the magic
> > > multiplier flag after it didn't stick in quirk in 8250_pci.c.
> > 
> > Can you share `dmesg` and output of `lspci -nk -vv` on the machine with the
> > kernel with patches applied and running?

> Provided below.

Thanks!

> Also, I am going to lose the place for my test station to
> the  family Christmas tree after tomorrow. I'm not sure when or where I'm
> going to get it set back up.

Understood, in case you still have time to test one idea below. As far as I
understand current state of affairs the problematic part is the magic
multiplier.

> 01:00.0 0700: 494f:10dc (prog-if 02 [16550])
> 	Subsystem: 0001:0001
> 	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
> Stepping- SERR- FastB2B- DisINTx-
> 	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
> <MAbort- >SERR- <PERR- INTx-
> 	Latency: 0, Cache Line Size: 64 bytes
> 	Interrupt: pin A routed to IRQ 16
> 	Region 0: I/O ports at e000 [size=64]
> 	Region 1: Memory at fe400000 (32-bit, non-prefetchable) [size=4K]

Okay, we are interested so far in IO bar (which is BAR0).
Do you know what is the BAR1 for?

> 	Capabilities: [80] Power Management version 3
> 		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
> PME(D0-,D1-,D2-,D3hot+,D3cold-)
> 		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
> 	Capabilities: [8c] MSI: Enable- Count=1/1 Maskable- 64bit+
> 		Address: 0000000000000000  Data: 0000
> 	Capabilities: [9c] Vital Product Data
> 		Not readable
> 	Capabilities: [a4] Vendor Specific Information: Len=28 <?>
> 	Capabilities: [e0] Express (v1) Legacy Endpoint, MSI 00
> 		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
> 			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
> 		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
> 			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
> 			MaxPayload 128 bytes, MaxReadReq 128 bytes
> 		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
> 		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
> <512ns, L1 <1us
> 			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
> 		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
> 			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
> 		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt-
> ABWMgmt-
> 	Capabilities: [100 v1] Advanced Error Reporting
> 		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
> ECRC- UnsupReq- ACSViol-
> 		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
> ECRC- UnsupReq- ACSViol-
> 		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+
> ECRC- UnsupReq- ACSViol-
> 		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
> 		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
> 		AERCap:	First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
> 	Kernel driver in use: 8250_pericom
> 	Kernel modules: 8250_pci, 8250_pericom

Yep, two drivers matches and only 8250_pericom is in use. All good here.

> [    0.062531] pci 0000:01:00.0: [494f:10dc] type 00 class 0x070002
> [    0.062551] pci 0000:01:00.0: reg 0x10: [io  0xe000-0xe03f]
> [    0.062562] pci 0000:01:00.0: reg 0x14: [mem 0xfe400000-0xfe400fff]
> [    0.062670] pci 0000:01:00.0: supports D1 D2
> [    0.062673] pci 0000:01:00.0: PME# supported from D3hot

Yeah, this interesting layout with 64 bytes and gap in UARTs 3-6.

> [    2.927496] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
> [    2.927703] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a
> 16550A
> [    2.979481] 0000:01:00.0: ttyS4 at I/O 0xe000 (irq = 16, base_baud =
> 921600) is a 16550A
> [    2.979487] 0000:01:00.0: ttyS4 extra baud rates supported: 1843200,
> 3686400
> [    2.979822] 0000:01:00.0: ttyS5 at I/O 0xe008 (irq = 16, base_baud =
> 921600) is a 16550A
> [    2.979825] 0000:01:00.0: ttyS5 extra baud rates supported: 1843200,
> 3686400
> [    2.982020] 0000:01:00.0: ttyS6 at I/O 0xe010 (irq = 16, base_baud =
> 921600) is a 16550A
> [    2.982025] 0000:01:00.0: ttyS6 extra baud rates supported: 1843200,
> 3686400
> [    2.982256] 0000:01:00.0: ttyS7 at I/O 0xe038 (irq = 16, base_baud =
> 921600) is a 16550A
> [    2.982259] 0000:01:00.0: ttyS7 extra baud rates supported: 1843200,
> 3686400

This is most important part. The code autodetects 16550A. Now I'm wondering
if the following change will keep MAGIC multiplier untouched (instead of
current patch):

-   uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
+   uart.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_SHARE_IRQ | UPF_MAGIC_MULTIPLIER;
+   uart.port.type = PORT_16550A;

> [   42.730050] 8250_pericom 0000:01:00.0: VPD access failed.  This is likely
> a firmware bug on this device.  Contact the card vendor for a firmware
> update

Not sure what is this and how it may affect anything.

-- 
With Best Regards,
Andy Shevchenko



^ permalink raw reply	[flat|nested] 19+ messages in thread

* Re: [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver
  2021-11-23 15:38             ` Andy Shevchenko
@ 2021-11-24  4:29               ` Jay Dolan
  0 siblings, 0 replies; 19+ messages in thread
From: Jay Dolan @ 2021-11-24  4:29 UTC (permalink / raw)
  To: Andy Shevchenko
  Cc: Greg Kroah-Hartman, linux-kernel, linux-serial, Jiri Slaby



On 11/23/21 7:38 AM, Andy Shevchenko wrote:
> On Tue, Nov 23, 2021 at 07:02:44AM -0800, Jay Dolan wrote:
>> On 11/23/21 1:25 AM, Andy Shevchenko wrote:
>>> On Mon, Nov 22, 2021 at 09:19:09PM -0800, Jay Dolan wrote:
>>>> On 11/22/21 4:48 AM, Andy Shevchenko wrote:
>>>>> On Mon, Nov 22, 2021 at 02:47:20PM +0200, Andy Shevchenko wrote:
>>>>>> On Thu, Nov 18, 2021 at 10:32:51PM -0800, Jay Dolan wrote:
>>>>>>> On 11/17/21 6:57 AM, Andy Shevchenko wrote:
>>>>>>>> Split Pericom driver to a separate module.
>>>>>>>> While at it, re-enable high baud rates.
>>>>>>>>
>>>>>>>> Jay, can you, please, test this on as many hardware as you have?
>>>>>>
>>>>>> ...
>>>>>>
>>>>>>> * Add in pericom_do_startup() because the UPF_MAGIC_MULTIPLIER doesn't
>>>>>>> stick.
>>>>>>
>>>>>> Can't find an evidence that this is the case. Can you recheck this (reading
>>>>>> flags back via sysfs or so)? So, for v2 I'll leave my approach.
>>>>>
>>>>> Otherwise how the other drivers which are using that flag survive? If it's
>>>>> indeed an issue, it should be fixed on generic level.
>>>>>
>>>>
>>>> I modified pericom_do_startup to log when the UPF_MAGIC_MULTIPLIER flag was
>>>> present. Then tried to set the port to 3000000 a few times. The port
>>>> stayed at 9600. It looks like pericom_do_startup() is getting called twice
>>>> per port on boot, and the flag is gone with the second one.
>>>>
>>>> [    4.925577] [J4D] flag present
>>>> [    4.926121] [J4D[ flag not present
>>>> [    4.926843] [J4D] flag present
>>>> [    4.927415] [J4D[ flag not present
>>>> [    4.928106] [J4D] flag present
>>>> [    4.928673] [J4D[ flag not present
>>>> [    4.929419] [J4D] flag present
>>>> [    4.930447] [J4D[ flag not present
>>>>
>>>> [   49.528504] [J4D[ flag not present
>>>> [   51.675240] [J4D[ flag not present
>>>> [   59.617954] [J4D[ flag not present
>>>>
>>>> Then I modified it to log when it was adding the flag in. The port was set
>>>> to 3000000. Also the flag only needed to be added in once. It sticks after
>>>> the first time.
>>>>
>>>> [    4.647546] [J4D] flag present
>>>> [    4.648119] [J4D] flag not present(adding)
>>>> [    4.648778] [J4D] flag present
>>>> [    4.649330] [J4D] flag not present(adding)
>>>> [    4.650001] [J4D] flag present
>>>> [    4.650537] [J4D] flag not present(adding)
>>>> [    4.651192] [J4D] flag present
>>>> [    4.651718] [J4D] flag not present(adding)
>>>>
>>>> [   96.025668] [J4D] flag present
>>>> [  100.130626] [J4D] flag present
>>>> [  116.435436] [J4D] flag present
>>>>
>>>> I mostly just guessed at do_startup() being the place to set the magic
>>>> multiplier flag after it didn't stick in quirk in 8250_pci.c.
>>>
>>> Can you share `dmesg` and output of `lspci -nk -vv` on the machine with the
>>> kernel with patches applied and running?
> 
>> Provided below.
> 
> Thanks!
> 
>> Also, I am going to lose the place for my test station to
>> the  family Christmas tree after tomorrow. I'm not sure when or where I'm
>> going to get it set back up.
> 
> Understood, in case you still have time to test one idea below. As far as I
> understand current state of affairs the problematic part is the magic
> multiplier.
> 
>> 01:00.0 0700: 494f:10dc (prog-if 02 [16550])
>> 	Subsystem: 0001:0001
>> 	Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr-
>> Stepping- SERR- FastB2B- DisINTx-
>> 	Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort-
>> <MAbort- >SERR- <PERR- INTx-
>> 	Latency: 0, Cache Line Size: 64 bytes
>> 	Interrupt: pin A routed to IRQ 16
>> 	Region 0: I/O ports at e000 [size=64]
>> 	Region 1: Memory at fe400000 (32-bit, non-prefetchable) [size=4K]
> 
> Okay, we are interested so far in IO bar (which is BAR0).
> Do you know what is the BAR1 for?

I found a copy of the chip spec here. 
https://www.diodes.com/assets/Datasheets/PI7C9X7958.pdf BARs are 
described in chapter seven.

The other BAR is MMIO access to the UART registers. Pericom has an out 
of tree driver for this. It doesn't build against current kernels, and I 
have never gotten it stable.


> 
>> 	Capabilities: [80] Power Management version 3
>> 		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=375mA
>> PME(D0-,D1-,D2-,D3hot+,D3cold-)
>> 		Status: D0 NoSoftRst+ PME-Enable- DSel=0 DScale=0 PME-
>> 	Capabilities: [8c] MSI: Enable- Count=1/1 Maskable- 64bit+
>> 		Address: 0000000000000000  Data: 0000
>> 	Capabilities: [9c] Vital Product Data
>> 		Not readable
>> 	Capabilities: [a4] Vendor Specific Information: Len=28 <?>
>> 	Capabilities: [e0] Express (v1) Legacy Endpoint, MSI 00
>> 		DevCap:	MaxPayload 128 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us
>> 			ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset-
>> 		DevCtl:	Report errors: Correctable- Non-Fatal- Fatal- Unsupported-
>> 			RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>> 			MaxPayload 128 bytes, MaxReadReq 128 bytes
>> 		DevSta:	CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr+ TransPend-
>> 		LnkCap:	Port #0, Speed 2.5GT/s, Width x1, ASPM L0s L1, Exit Latency L0s
>> <512ns, L1 <1us
>> 			ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp-
>> 		LnkCtl:	ASPM Disabled; RCB 64 bytes Disabled- CommClk-
>> 			ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>> 		LnkSta:	Speed 2.5GT/s, Width x1, TrErr- Train- SlotClk- DLActive- BWMgmt-
>> ABWMgmt-
>> 	Capabilities: [100 v1] Advanced Error Reporting
>> 		UESta:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
>> ECRC- UnsupReq- ACSViol-
>> 		UEMsk:	DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP-
>> ECRC- UnsupReq- ACSViol-
>> 		UESvrt:	DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+
>> ECRC- UnsupReq- ACSViol-
>> 		CESta:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
>> 		CEMsk:	RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
>> 		AERCap:	First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-
>> 	Kernel driver in use: 8250_pericom
>> 	Kernel modules: 8250_pci, 8250_pericom
> 
> Yep, two drivers matches and only 8250_pericom is in use. All good here.
> 
>> [    0.062531] pci 0000:01:00.0: [494f:10dc] type 00 class 0x070002
>> [    0.062551] pci 0000:01:00.0: reg 0x10: [io  0xe000-0xe03f]
>> [    0.062562] pci 0000:01:00.0: reg 0x14: [mem 0xfe400000-0xfe400fff]
>> [    0.062670] pci 0000:01:00.0: supports D1 D2
>> [    0.062673] pci 0000:01:00.0: PME# supported from D3hot
> 
> Yeah, this interesting layout with 64 bytes and gap in UARTs 3-6.
> 
>> [    2.927496] Serial: 8250/16550 driver, 32 ports, IRQ sharing enabled
>> [    2.927703] 00:04: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a
>> 16550A
>> [    2.979481] 0000:01:00.0: ttyS4 at I/O 0xe000 (irq = 16, base_baud =
>> 921600) is a 16550A
>> [    2.979487] 0000:01:00.0: ttyS4 extra baud rates supported: 1843200,
>> 3686400
>> [    2.979822] 0000:01:00.0: ttyS5 at I/O 0xe008 (irq = 16, base_baud =
>> 921600) is a 16550A
>> [    2.979825] 0000:01:00.0: ttyS5 extra baud rates supported: 1843200,
>> 3686400
>> [    2.982020] 0000:01:00.0: ttyS6 at I/O 0xe010 (irq = 16, base_baud =
>> 921600) is a 16550A
>> [    2.982025] 0000:01:00.0: ttyS6 extra baud rates supported: 1843200,
>> 3686400
>> [    2.982256] 0000:01:00.0: ttyS7 at I/O 0xe038 (irq = 16, base_baud =
>> 921600) is a 16550A
>> [    2.982259] 0000:01:00.0: ttyS7 extra baud rates supported: 1843200,
>> 3686400
> 
> This is most important part. The code autodetects 16550A. Now I'm wondering
> if the following change will keep MAGIC multiplier untouched (instead of
> current patch):
> 
> -   uart.port.flags = UPF_SKIP_TEST | UPF_BOOT_AUTOCONF | UPF_SHARE_IRQ;
> +   uart.port.flags = UPF_FIXED_PORT | UPF_FIXED_TYPE | UPF_SHARE_IRQ | UPF_MAGIC_MULTIPLIER;
> +   uart.port.type = PORT_16550A;

No luck. The behavior of the multiplier flag is the same as before.

> 
>> [   42.730050] 8250_pericom 0000:01:00.0: VPD access failed.  This is likely
>> a firmware bug on this device.  Contact the card vendor for a firmware
>> update
> 
> Not sure what is this and how it may affect anything.
> 

This is produced when running lspci.

^ permalink raw reply	[flat|nested] 19+ messages in thread

end of thread, other threads:[~2021-11-24  4:29 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-17 14:57 [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Andy Shevchenko
2021-11-17 14:57 ` [PATCH v1 1/2] serial: 8250_pci: Split out " Andy Shevchenko
2021-11-18  1:12   ` Jay Dolan
2021-11-18  9:50     ` Andy Shevchenko
2021-11-18 14:45       ` Jay Dolan
2021-11-17 14:57 ` [PATCH v1 2/2] serial: 8250_pericom: Re-enable higher baud rates Andy Shevchenko
2021-11-19  6:32 ` [PATCH v1 0/2] serial: 8250_pci: Split Pericom driver Jay Dolan
2021-11-19  8:23   ` Andy Shevchenko
2021-11-19 14:33     ` Jay Dolan
2021-11-20 21:05       ` Jay Dolan
2021-11-21 10:16         ` Andy Shevchenko
2021-11-21 15:36           ` Jay Dolan
2021-11-22 12:47   ` Andy Shevchenko
2021-11-22 12:48     ` Andy Shevchenko
2021-11-23  5:19       ` Jay Dolan
2021-11-23  9:25         ` Andy Shevchenko
2021-11-23 15:02           ` Jay Dolan
2021-11-23 15:38             ` Andy Shevchenko
2021-11-24  4:29               ` Jay Dolan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).