@@ -739,6 +739,7 @@ static struct platform_driver ehv_bc_tty_driver = {
.driver = {
.name = "ehv-bc",
.of_match_table = ehv_bc_tty_of_ids,
+ .probe_no_timeout = true,
.suppress_bind_attrs = true,
},
.probe = ehv_bc_tty_probe,
@@ -474,6 +474,7 @@ static struct platform_driver goldfish_tty_platform_driver = {
.driver = {
.name = "goldfish_tty",
.of_match_table = goldfish_tty_of_match,
+ .probe_no_timeout = true,
}
};
@@ -253,6 +253,7 @@ static struct platform_driver hvc_opal_driver = {
.driver = {
.name = hvc_opal_name,
.of_match_table = hvc_opal_match,
+ .probe_no_timeout = true,
}
};
@@ -114,7 +114,6 @@ static const struct ecard_id serial_cids[] = {
static struct ecard_driver serial_card_driver = {
.probe = serial_card_probe,
.remove = serial_card_remove,
- .id_table = serial_cids,
.drv = {
.name = "8250_acorn",
},
@@ -592,6 +592,7 @@ static struct platform_driver aspeed_vuart_driver = {
.driver = {
.name = "aspeed-vuart",
.of_match_table = aspeed_vuart_table,
+ .probe_no_timeout = true,
},
.probe = aspeed_vuart_probe,
.remove = aspeed_vuart_remove,
@@ -223,6 +223,7 @@ static struct platform_driver bcm2835aux_serial_driver = {
.name = "bcm2835-aux-uart",
.of_match_table = bcm2835aux_serial_match,
.acpi_match_table = bcm2835aux_serial_acpi_match,
+ .probe_no_timeout = true,
},
.probe = bcm2835aux_serial_probe,
.remove = bcm2835aux_serial_remove,
@@ -1193,6 +1193,7 @@ static struct platform_driver brcmuart_platform_driver = {
.name = "bcm7271-uart",
.pm = &brcmuart_dev_pm_ops,
.of_match_table = brcmuart_dt_ids,
+ .probe_no_timeout = true,
},
.probe = brcmuart_probe,
.remove = brcmuart_remove,
@@ -795,6 +795,7 @@ static struct platform_driver dw8250_platform_driver = {
.pm = &dw8250_pm_ops,
.of_match_table = dw8250_of_match,
.acpi_match_table = dw8250_acpi_match,
+ .probe_no_timeout = true,
},
.probe = dw8250_probe,
.remove = dw8250_remove,
@@ -151,6 +151,7 @@ static struct platform_driver serial8250_em_platform_driver = {
.driver = {
.name = "serial8250-em",
.of_match_table = serial8250_em_dt_ids,
+ .probe_no_timeout = true,
},
.probe = serial8250_em_probe,
.remove = serial8250_em_remove,
@@ -341,6 +341,7 @@ static struct platform_driver ingenic_uart_platform_driver = {
.driver = {
.name = "ingenic-uart",
.of_match_table = of_match,
+ .probe_no_timeout = true,
},
.probe = ingenic_uart_probe,
.remove = ingenic_uart_remove,
@@ -215,6 +215,7 @@ static struct platform_driver lpc18xx_serial_driver = {
.driver = {
.name = "lpc18xx-uart",
.of_match_table = lpc18xx_serial_match,
+ .probe_no_timeout = true,
},
};
module_platform_driver(lpc18xx_serial_driver);
@@ -671,6 +671,7 @@ static struct platform_driver mtk8250_platform_driver = {
.name = "mt6577-uart",
.pm = &mtk8250_pm_ops,
.of_match_table = mtk8250_of_match,
+ .probe_no_timeout = true,
},
.probe = mtk8250_probe,
.remove = mtk8250_remove,
@@ -343,6 +343,7 @@ static struct platform_driver of_platform_serial_driver = {
.driver = {
.name = "of_serial",
.of_match_table = of_platform_serial_table,
+ .probe_no_timeout = true,
.pm = &of_serial_pm_ops,
},
.probe = of_platform_serial_probe,
@@ -1694,6 +1694,7 @@ static struct platform_driver omap8250_platform_driver = {
.name = "omap8250",
.pm = &omap8250_dev_pm_ops,
.of_match_table = omap8250_dt_ids,
+ .probe_no_timeout = true,
},
.probe = omap8250_probe,
.remove = omap8250_remove,
@@ -165,6 +165,7 @@ static struct platform_driver serial_pxa_driver = {
.name = "pxa2xx-uart",
.pm = &serial_pxa_pm_ops,
.of_match_table = serial_pxa_dt_ids,
+ .probe_no_timeout = true,
},
};
@@ -187,6 +187,7 @@ static struct platform_driver tegra_uart_driver = {
.pm = &tegra_uart_pm_ops,
.of_match_table = tegra_uart_of_match,
.acpi_match_table = ACPI_PTR(tegra_uart_acpi_match),
+ .probe_no_timeout = true,
},
.probe = tegra_uart_probe,
.remove = tegra_uart_remove,
@@ -297,6 +297,7 @@ static struct platform_driver uniphier_uart_platform_driver = {
.driver = {
.name = "uniphier-uart",
.of_match_table = uniphier_uart_match,
+ .probe_no_timeout = true,
.pm = &uniphier_uart_pm_ops,
},
};
@@ -493,6 +493,7 @@ static struct platform_driver altera_jtaguart_platform_driver = {
.driver = {
.name = DRV_NAME,
.of_match_table = of_match_ptr(altera_jtaguart_match),
+ .probe_no_timeout = true,
},
};
@@ -645,6 +645,7 @@ static struct platform_driver altera_uart_platform_driver = {
.driver = {
.name = DRV_NAME,
.of_match_table = of_match_ptr(altera_uart_match),
+ .probe_no_timeout = true,
},
};
@@ -2912,6 +2912,7 @@ static struct platform_driver arm_sbsa_uart_platform_driver = {
.pm = &pl011_dev_pm_ops,
.of_match_table = of_match_ptr(sbsa_uart_of_match),
.acpi_match_table = ACPI_PTR(sbsa_uart_acpi_match),
+ .probe_no_timeout = true,
.suppress_bind_attrs = IS_BUILTIN(CONFIG_SERIAL_AMBA_PL011),
},
};
@@ -583,6 +583,7 @@ static struct platform_driver grlib_apbuart_of_driver = {
.driver = {
.name = "grlib-apbuart",
.of_match_table = apbuart_match,
+ .probe_no_timeout = true,
},
};
@@ -842,6 +842,7 @@ static struct platform_driver ar933x_uart_platform_driver = {
.driver = {
.name = DRIVER_NAME,
.of_match_table = of_match_ptr(ar933x_uart_of_ids),
+ .probe_no_timeout = true,
},
};
@@ -650,6 +650,7 @@ static struct platform_driver arc_platform_driver = {
.driver = {
.name = DRIVER_NAME,
.of_match_table = arc_uart_dt_ids,
+ .probe_no_timeout = true,
},
};
@@ -3020,6 +3020,7 @@ static struct platform_driver atmel_serial_driver = {
.driver = {
.name = "atmel_usart_serial",
.of_match_table = of_match_ptr(atmel_serial_dt_ids),
+ .probe_no_timeout = true,
},
};
@@ -890,6 +890,7 @@ static struct platform_driver bcm_uart_platform_driver = {
.driver = {
.name = "bcm63xx_uart",
.of_match_table = bcm63xx_of_match,
+ .probe_no_timeout = true,
},
};
@@ -528,6 +528,7 @@ static struct platform_driver clps711x_uart_platform = {
.driver = {
.name = "clps711x-uart",
.of_match_table = of_match_ptr(clps711x_uart_dt_ids),
+ .probe_no_timeout = true,
},
.probe = uart_clps711x_probe,
.remove = uart_clps711x_remove,
@@ -1470,6 +1470,7 @@ static struct platform_driver cpm_uart_driver = {
.driver = {
.name = "cpm_uart",
.of_match_table = cpm_uart_match,
+ .probe_no_timeout = true,
},
.probe = cpm_uart_probe,
.remove = cpm_uart_remove,
@@ -524,6 +524,7 @@ static struct platform_driver digicolor_uart_platform = {
.driver = {
.name = "digicolor-usart",
.of_match_table = of_match_ptr(digicolor_uart_dt_ids),
+ .probe_no_timeout = true,
},
.probe = digicolor_uart_probe,
.remove = digicolor_uart_remove,
@@ -889,6 +889,7 @@ static struct platform_driver linflex_driver = {
.driver = {
.name = DRIVER_NAME,
.of_match_table = linflex_dt_ids,
+ .probe_no_timeout = true,
.pm = &linflex_pm_ops,
},
};
@@ -2857,6 +2857,7 @@ static struct platform_driver lpuart_driver = {
.driver = {
.name = "fsl-lpuart",
.of_match_table = lpuart_dt_ids,
+ .probe_no_timeout = true,
.pm = &lpuart_pm_ops,
},
};
@@ -2604,6 +2604,7 @@ static struct platform_driver imx_uart_platform_driver = {
.driver = {
.name = "imx-uart",
.of_match_table = imx_uart_dt_ids,
+ .probe_no_timeout = true,
.pm = &imx_uart_pm_ops,
},
};
@@ -942,6 +942,7 @@ static struct platform_driver lqasc_driver = {
.driver = {
.name = DRVNAME,
.of_match_table = ltq_asc_match,
+ .probe_no_timeout = true,
},
};
@@ -324,6 +324,7 @@ static struct platform_driver liteuart_platform_driver = {
.driver = {
.name = "liteuart",
.of_match_table = liteuart_of_match,
+ .probe_no_timeout = true,
},
};
@@ -727,6 +727,7 @@ static struct platform_driver serial_hs_lpc32xx_driver = {
.driver = {
.name = MODNAME,
.of_match_table = serial_hs_lpc32xx_dt_ids,
+ .probe_no_timeout = true,
},
};
@@ -1504,6 +1504,7 @@ static struct spi_driver max310x_spi_driver = {
.driver = {
.name = MAX310X_NAME,
.of_match_table = max310x_dt_ids,
+ .probe_no_timeout = true,
.pm = &max310x_pm_ops,
},
.probe = max310x_spi_probe,
@@ -826,6 +826,7 @@ static struct platform_driver meson_uart_platform_driver = {
.driver = {
.name = "meson_uart",
.of_match_table = meson_uart_dt_match,
+ .probe_no_timeout = true,
},
};
@@ -576,6 +576,7 @@ static struct platform_driver mlb_usio_driver = {
.driver = {
.name = USIO_NAME,
.of_match_table = mlb_usio_dt_ids,
+ .probe_no_timeout = true,
},
};
@@ -1885,6 +1885,7 @@ static struct platform_driver mpc52xx_uart_of_driver = {
.driver = {
.name = "mpc52xx-psc-uart",
.of_match_table = mpc52xx_uart_of_match,
+ .probe_no_timeout = true,
},
};
@@ -634,6 +634,7 @@ static struct platform_driver mps2_serial_driver = {
.driver = {
.name = DRIVER_NAME,
.of_match_table = of_match_ptr(mps2_match),
+ .probe_no_timeout = true,
.suppress_bind_attrs = true,
},
};
@@ -1890,6 +1890,7 @@ static struct platform_driver msm_platform_driver = {
.name = "msm_serial",
.pm = &msm_serial_dev_pm_ops,
.of_match_table = msm_match_table,
+ .probe_no_timeout = true,
},
};
@@ -1049,6 +1049,7 @@ static struct platform_driver mvebu_uart_platform_driver = {
.driver = {
.name = "mvebu-uart",
.of_match_table = of_match_ptr(mvebu_uart_of_match),
+ .probe_no_timeout = true,
.suppress_bind_attrs = true,
#if defined(CONFIG_PM)
.pm = &mvebu_uart_pm_ops,
@@ -1725,6 +1725,7 @@ static struct platform_driver mxs_auart_driver = {
.driver = {
.name = "mxs-auart",
.of_match_table = mxs_auart_dt_ids,
+ .probe_no_timeout = true,
},
};
@@ -1834,6 +1834,7 @@ static struct platform_driver serial_omap_driver = {
.name = OMAP_SERIAL_DRIVER_NAME,
.pm = &serial_omap_dev_pm_ops,
.of_match_table = of_match_ptr(omap_serial_of_match),
+ .probe_no_timeout = true,
},
};
@@ -766,6 +766,7 @@ static struct platform_driver owl_uart_platform_driver = {
.driver = {
.name = "owl-uart",
.of_match_table = owl_uart_dt_matches,
+ .probe_no_timeout = true,
},
};
@@ -986,6 +986,7 @@ static struct platform_driver pic32_uart_platform_driver = {
.driver = {
.name = PIC32_DEV_NAME,
.of_match_table = of_match_ptr(pic32_serial_dt_ids),
+ .probe_no_timeout = true,
.suppress_bind_attrs = IS_BUILTIN(CONFIG_SERIAL_PIC32),
},
};
@@ -1790,6 +1790,7 @@ static struct macio_driver pmz_driver = {
.name = "pmac_zilog",
.owner = THIS_MODULE,
.of_match_table = pmz_match,
+ .probe_no_timeout = true,
},
.probe = pmz_attach,
.remove = pmz_detach,
@@ -910,6 +910,7 @@ static struct platform_driver serial_pxa_driver = {
#endif
.suppress_bind_attrs = true,
.of_match_table = serial_pxa_dt_ids,
+ .probe_no_timeout = true,
},
};
@@ -1541,6 +1541,7 @@ static struct platform_driver qcom_geni_serial_platform_driver = {
.driver = {
.name = "qcom_geni_serial",
.of_match_table = qcom_geni_serial_match_table,
+ .probe_no_timeout = true,
.pm = &qcom_geni_serial_pm_ops,
},
};
@@ -797,6 +797,7 @@ static struct platform_driver rda_uart_platform_driver = {
.driver = {
.name = "rda-uart",
.of_match_table = rda_uart_dt_matches,
+ .probe_no_timeout = true,
},
};
@@ -2939,6 +2939,7 @@ static struct platform_driver samsung_serial_driver = {
.name = "samsung-uart",
.pm = SERIAL_SAMSUNG_PM_OPS,
.of_match_table = of_match_ptr(s3c24xx_uart_dt_match),
+ .probe_no_timeout = true,
},
};
@@ -1652,6 +1652,7 @@ static struct spi_driver sc16is7xx_spi_uart_driver = {
.driver = {
.name = SC16IS7XX_NAME,
.of_match_table = sc16is7xx_dt_ids,
+ .probe_no_timeout = true,
},
.probe = sc16is7xx_spi_probe,
.remove = sc16is7xx_spi_remove,
@@ -1653,6 +1653,7 @@ static struct platform_driver tegra_uart_platform_driver = {
.driver = {
.name = "serial-tegra",
.of_match_table = tegra_uart_of_match,
+ .probe_no_timeout = true,
.pm = &tegra_uart_pm_ops,
},
};
@@ -3396,6 +3396,7 @@ static struct platform_driver sci_driver = {
.name = "sh-sci",
.pm = &sci_dev_pm_ops,
.of_match_table = of_match_ptr(of_sci_match),
+ .probe_no_timeout = true,
},
};
@@ -1066,6 +1066,7 @@ static struct platform_driver sifive_serial_platform_driver = {
.driver = {
.name = SIFIVE_SERIAL_NAME,
.of_match_table = of_match_ptr(sifive_serial_of_match),
+ .probe_no_timeout = true,
},
};
@@ -1278,6 +1278,7 @@ static struct platform_driver sprd_platform_driver = {
.driver = {
.name = "sprd_serial",
.of_match_table = of_match_ptr(serial_ids),
+ .probe_no_timeout = true,
.pm = &sprd_pm_ops,
},
};
@@ -973,6 +973,7 @@ static struct platform_driver asc_serial_driver = {
.name = DRIVER_NAME,
.pm = &asc_serial_pm_ops,
.of_match_table = of_match_ptr(asc_match),
+ .probe_no_timeout = true,
},
};
@@ -2019,6 +2019,7 @@ static struct platform_driver stm32_serial_driver = {
.name = DRIVER_NAME,
.pm = &stm32_serial_pm_ops,
.of_match_table = of_match_ptr(stm32_match),
+ .probe_no_timeout = true,
},
};
@@ -630,6 +630,7 @@ static struct platform_driver hv_driver = {
.driver = {
.name = "hv",
.of_match_table = hv_match,
+ .probe_no_timeout = true,
},
.probe = hv_probe,
.remove = hv_remove,
@@ -709,6 +709,7 @@ static struct platform_driver sunplus_uart_platform_driver = {
.driver = {
.name = "sunplus_uart",
.of_match_table = sp_uart_of_match,
+ .probe_no_timeout = true,
.pm = &sunplus_uart_pm_ops,
}
};
@@ -1103,6 +1103,7 @@ static struct platform_driver sab_driver = {
.driver = {
.name = "sab",
.of_match_table = sab_match,
+ .probe_no_timeout = true,
},
.probe = sab_probe,
.remove = sab_remove,
@@ -1566,6 +1566,7 @@ static struct platform_driver su_driver = {
.driver = {
.name = "su",
.of_match_table = su_match,
+ .probe_no_timeout = true,
},
.probe = su_probe,
.remove = su_remove,
@@ -1541,6 +1541,7 @@ static struct platform_driver zs_driver = {
.driver = {
.name = "zs",
.of_match_table = zs_match,
+ .probe_no_timeout = true,
},
.probe = zs_probe,
.remove = zs_remove,
@@ -292,6 +292,7 @@ static struct platform_driver tegra_tcu_driver = {
.driver = {
.name = "tegra-tcu",
.of_match_table = tegra_tcu_match,
+ .probe_no_timeout = true,
},
.probe = tegra_tcu_probe,
.remove = tegra_tcu_remove,
@@ -919,6 +919,7 @@ static struct platform_driver ulite_platform_driver = {
.driver = {
.name = "uartlite",
.of_match_table = of_match_ptr(ulite_of_match),
+ .probe_no_timeout = true,
.pm = &ulite_pm_ops,
},
};
@@ -1500,6 +1500,7 @@ static struct platform_driver ucc_uart_of_driver = {
.driver = {
.name = "ucc_uart",
.of_match_table = ucc_uart_match,
+ .probe_no_timeout = true,
},
.probe = ucc_uart_probe,
.remove = ucc_uart_remove,
@@ -722,6 +722,7 @@ static struct platform_driver vt8500_platform_driver = {
.driver = {
.name = "vt8500_serial",
.of_match_table = wmt_dt_ids,
+ .probe_no_timeout = true,
.suppress_bind_attrs = true,
},
};
@@ -1656,6 +1656,7 @@ static struct platform_driver cdns_uart_platform_driver = {
.driver = {
.name = CDNS_UART_NAME,
.of_match_table = cdns_uart_of_match,
+ .probe_no_timeout = true,
.pm = &cdns_uart_dev_pm_ops,
.suppress_bind_attrs = IS_BUILTIN(CONFIG_SERIAL_XILINX_PS_UART),
},
With commit 71066545b48e ("driver core: Set fw_devlink.strict=1 by default") the probing of TTY consoles could get delayed if they have optional suppliers that are listed in DT, but those suppliers don't probe by the time kernel boot finishes. The console devices will probe eventually after driver_probe_timeout expires. However, since consoles are often used for debugging kernel issues, it does not make sense to delay their probe. So, set the newly added probe_no_timeout flag for all serial drivers that at DT based. This way, fw_devlink will know not to delay the probing of the consoles past kernel boot. Fixes: 71066545b48e ("driver core: Set fw_devlink.strict=1 by default") Reported-by: Sascha Hauer <sha@pengutronix.de> Reported-by: Peng Fan <peng.fan@nxp.com> Reported-by: Fabio Estevam <festevam@gmail.com> Reported-by: Ahmad Fatoum <a.fatoum@pengutronix.de> Signed-off-by: Saravana Kannan <saravanak@google.com> --- drivers/tty/ehv_bytechan.c | 1 + drivers/tty/goldfish.c | 1 + drivers/tty/hvc/hvc_opal.c | 1 + drivers/tty/serial/8250/8250_acorn.c | 1 - drivers/tty/serial/8250/8250_aspeed_vuart.c | 1 + drivers/tty/serial/8250/8250_bcm2835aux.c | 1 + drivers/tty/serial/8250/8250_bcm7271.c | 1 + drivers/tty/serial/8250/8250_dw.c | 1 + drivers/tty/serial/8250/8250_em.c | 1 + drivers/tty/serial/8250/8250_ingenic.c | 1 + drivers/tty/serial/8250/8250_lpc18xx.c | 1 + drivers/tty/serial/8250/8250_mtk.c | 1 + drivers/tty/serial/8250/8250_of.c | 1 + drivers/tty/serial/8250/8250_omap.c | 1 + drivers/tty/serial/8250/8250_pxa.c | 1 + drivers/tty/serial/8250/8250_tegra.c | 1 + drivers/tty/serial/8250/8250_uniphier.c | 1 + drivers/tty/serial/altera_jtaguart.c | 1 + drivers/tty/serial/altera_uart.c | 1 + drivers/tty/serial/amba-pl011.c | 1 + drivers/tty/serial/apbuart.c | 1 + drivers/tty/serial/ar933x_uart.c | 1 + drivers/tty/serial/arc_uart.c | 1 + drivers/tty/serial/atmel_serial.c | 1 + drivers/tty/serial/bcm63xx_uart.c | 1 + drivers/tty/serial/clps711x.c | 1 + drivers/tty/serial/cpm_uart/cpm_uart_core.c | 1 + drivers/tty/serial/digicolor-usart.c | 1 + drivers/tty/serial/fsl_linflexuart.c | 1 + drivers/tty/serial/fsl_lpuart.c | 1 + drivers/tty/serial/imx.c | 1 + drivers/tty/serial/lantiq.c | 1 + drivers/tty/serial/liteuart.c | 1 + drivers/tty/serial/lpc32xx_hs.c | 1 + drivers/tty/serial/max310x.c | 1 + drivers/tty/serial/meson_uart.c | 1 + drivers/tty/serial/milbeaut_usio.c | 1 + drivers/tty/serial/mpc52xx_uart.c | 1 + drivers/tty/serial/mps2-uart.c | 1 + drivers/tty/serial/msm_serial.c | 1 + drivers/tty/serial/mvebu-uart.c | 1 + drivers/tty/serial/mxs-auart.c | 1 + drivers/tty/serial/omap-serial.c | 1 + drivers/tty/serial/owl-uart.c | 1 + drivers/tty/serial/pic32_uart.c | 1 + drivers/tty/serial/pmac_zilog.c | 1 + drivers/tty/serial/pxa.c | 1 + drivers/tty/serial/qcom_geni_serial.c | 1 + drivers/tty/serial/rda-uart.c | 1 + drivers/tty/serial/samsung_tty.c | 1 + drivers/tty/serial/sc16is7xx.c | 1 + drivers/tty/serial/serial-tegra.c | 1 + drivers/tty/serial/sh-sci.c | 1 + drivers/tty/serial/sifive.c | 1 + drivers/tty/serial/sprd_serial.c | 1 + drivers/tty/serial/st-asc.c | 1 + drivers/tty/serial/stm32-usart.c | 1 + drivers/tty/serial/sunhv.c | 1 + drivers/tty/serial/sunplus-uart.c | 1 + drivers/tty/serial/sunsab.c | 1 + drivers/tty/serial/sunsu.c | 1 + drivers/tty/serial/sunzilog.c | 1 + drivers/tty/serial/tegra-tcu.c | 1 + drivers/tty/serial/uartlite.c | 1 + drivers/tty/serial/ucc_uart.c | 1 + drivers/tty/serial/vt8500_serial.c | 1 + drivers/tty/serial/xilinx_uartps.c | 1 + 67 files changed, 66 insertions(+), 1 deletion(-)