mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-10-31 16:54:21 +00:00 
			
		
		
		
	Revert "serial: 8250_omap: Set the console genpd always on if no console suspend"
This reverts commit68e6939ea9. Kevin reported that this causes a crash during suspend on platforms that dont use PM domains. Link: https://lore.kernel.org/r/7ha5hgpchq.fsf@baylibre.com Cc: Thomas Richard <thomas.richard@bootlin.com> Fixes:68e6939ea9("serial: 8250_omap: Set the console genpd always on if no console suspend") Cc: stable <stable@kernel.org> Reported-by: Kevin Hilman <khilman@kernel.org> Signed-off-by: Griffin Kroah-Hartman <griffin@kroah.com> Link: https://lore.kernel.org/r/20240814111747.82371-1-griffin@kroah.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
		
							parent
							
								
									c9f6613b16
								
							
						
					
					
						commit
						0863bffda1
					
				
					 1 changed files with 5 additions and 28 deletions
				
			
		|  | @ -27,7 +27,6 @@ | ||||||
| #include <linux/pm_wakeirq.h> | #include <linux/pm_wakeirq.h> | ||||||
| #include <linux/dma-mapping.h> | #include <linux/dma-mapping.h> | ||||||
| #include <linux/sys_soc.h> | #include <linux/sys_soc.h> | ||||||
| #include <linux/pm_domain.h> |  | ||||||
| 
 | 
 | ||||||
| #include "8250.h" | #include "8250.h" | ||||||
| 
 | 
 | ||||||
|  | @ -119,12 +118,6 @@ | ||||||
| #define UART_OMAP_TO_L                 0x26 | #define UART_OMAP_TO_L                 0x26 | ||||||
| #define UART_OMAP_TO_H                 0x27 | #define UART_OMAP_TO_H                 0x27 | ||||||
| 
 | 
 | ||||||
| /*
 |  | ||||||
|  * Copy of the genpd flags for the console. |  | ||||||
|  * Only used if console suspend is disabled |  | ||||||
|  */ |  | ||||||
| static unsigned int genpd_flags_console; |  | ||||||
| 
 |  | ||||||
| struct omap8250_priv { | struct omap8250_priv { | ||||||
| 	void __iomem *membase; | 	void __iomem *membase; | ||||||
| 	int line; | 	int line; | ||||||
|  | @ -1655,7 +1648,6 @@ static int omap8250_suspend(struct device *dev) | ||||||
| { | { | ||||||
| 	struct omap8250_priv *priv = dev_get_drvdata(dev); | 	struct omap8250_priv *priv = dev_get_drvdata(dev); | ||||||
| 	struct uart_8250_port *up = serial8250_get_port(priv->line); | 	struct uart_8250_port *up = serial8250_get_port(priv->line); | ||||||
| 	struct generic_pm_domain *genpd = pd_to_genpd(dev->pm_domain); |  | ||||||
| 	int err = 0; | 	int err = 0; | ||||||
| 
 | 
 | ||||||
| 	serial8250_suspend_port(priv->line); | 	serial8250_suspend_port(priv->line); | ||||||
|  | @ -1666,19 +1658,8 @@ static int omap8250_suspend(struct device *dev) | ||||||
| 	if (!device_may_wakeup(dev)) | 	if (!device_may_wakeup(dev)) | ||||||
| 		priv->wer = 0; | 		priv->wer = 0; | ||||||
| 	serial_out(up, UART_OMAP_WER, priv->wer); | 	serial_out(up, UART_OMAP_WER, priv->wer); | ||||||
| 	if (uart_console(&up->port)) { | 	if (uart_console(&up->port) && console_suspend_enabled) | ||||||
| 		if (console_suspend_enabled) |  | ||||||
| 		err = pm_runtime_force_suspend(dev); | 		err = pm_runtime_force_suspend(dev); | ||||||
| 		else { |  | ||||||
| 			/*
 |  | ||||||
| 			 * The pd shall not be powered-off (no console suspend). |  | ||||||
| 			 * Make copy of genpd flags before to set it always on. |  | ||||||
| 			 * The original value is restored during the resume. |  | ||||||
| 			 */ |  | ||||||
| 			genpd_flags_console = genpd->flags; |  | ||||||
| 			genpd->flags |= GENPD_FLAG_ALWAYS_ON; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	flush_work(&priv->qos_work); | 	flush_work(&priv->qos_work); | ||||||
| 
 | 
 | ||||||
| 	return err; | 	return err; | ||||||
|  | @ -1688,16 +1669,12 @@ static int omap8250_resume(struct device *dev) | ||||||
| { | { | ||||||
| 	struct omap8250_priv *priv = dev_get_drvdata(dev); | 	struct omap8250_priv *priv = dev_get_drvdata(dev); | ||||||
| 	struct uart_8250_port *up = serial8250_get_port(priv->line); | 	struct uart_8250_port *up = serial8250_get_port(priv->line); | ||||||
| 	struct generic_pm_domain *genpd = pd_to_genpd(dev->pm_domain); |  | ||||||
| 	int err; | 	int err; | ||||||
| 
 | 
 | ||||||
| 	if (uart_console(&up->port) && console_suspend_enabled) { | 	if (uart_console(&up->port) && console_suspend_enabled) { | ||||||
| 		if (console_suspend_enabled) { |  | ||||||
| 		err = pm_runtime_force_resume(dev); | 		err = pm_runtime_force_resume(dev); | ||||||
| 		if (err) | 		if (err) | ||||||
| 			return err; | 			return err; | ||||||
| 		} else |  | ||||||
| 			genpd->flags = genpd_flags_console; |  | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	serial8250_resume_port(priv->line); | 	serial8250_resume_port(priv->line); | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Griffin Kroah-Hartman
						Griffin Kroah-Hartman