mirror of
				https://github.com/xcat2/xNBA.git
				synced 2025-10-31 11:22:29 +00:00 
			
		
		
		
	[serial] Don't enable serial console without serial support
serial_console_init() would enable serial console support without knowing if the serial driver succeeded or not. As a result, the serial console would interfere with a normal keyboard on a system lacking serial support. Reported-by: Jan ONDREJ (SAL) <ondrejj(at)salstar.sk> Signed-off-by: Shao Miller <sha0.miller@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
		
				
					committed by
					
						 Michael Brown
						Michael Brown
					
				
			
			
				
	
			
			
			
						parent
						
							fcdfe81764
						
					
				
				
					commit
					a712dae709
				
			| @@ -93,6 +93,9 @@ FILE_LICENCE ( GPL2_OR_LATER ); | ||||
| #define uart_writeb(val,addr) outb((val),(addr)) | ||||
| #endif | ||||
|  | ||||
| /* Boolean for the state of serial driver initialization */ | ||||
| int serial_initialized = 0; | ||||
|  | ||||
| /* | ||||
|  * void serial_putc(int ch); | ||||
|  *	Write character `ch' to port UART_BASE. | ||||
| @@ -207,7 +210,6 @@ static void serial_init ( void ) { | ||||
| 	/* Set clear to send, so flow control works... */ | ||||
| 	uart_writeb((1<<1), UART_BASE + UART_MCR); | ||||
|  | ||||
|  | ||||
| 	/* Flush the input buffer. */ | ||||
| 	do { | ||||
| 		/* rx buffer reg | ||||
| @@ -217,6 +219,9 @@ static void serial_init ( void ) { | ||||
| 		/* line status reg */ | ||||
| 		status = uart_readb(UART_BASE + UART_LSR); | ||||
| 	} while(status & UART_LSR_DR); | ||||
|  | ||||
| 	/* Note that serial support has been initialized */ | ||||
| 	serial_initialized = 1; | ||||
|  out: | ||||
| 	return; | ||||
| } | ||||
|   | ||||
| @@ -18,9 +18,12 @@ | ||||
| struct console_driver serial_console __console_driver; | ||||
|  | ||||
| static void serial_console_init ( void ) { | ||||
| 	/* Serial driver initialization should already be done, | ||||
| 	 * time to enable the serial console. */ | ||||
| 	serial_console.disabled = 0; | ||||
| 	/* | ||||
| 	 * Check if serial driver initialization is done. | ||||
| 	 * If so, it's time to enable the serial console. | ||||
| 	 */ | ||||
| 	if ( serial_initialized ) | ||||
| 		serial_console.disabled = 0; | ||||
| } | ||||
|  | ||||
| struct console_driver serial_console __console_driver = { | ||||
|   | ||||
| @@ -12,5 +12,6 @@ FILE_LICENCE ( GPL2_OR_LATER ); | ||||
| extern void serial_putc ( int ch ); | ||||
| extern int serial_getc ( void ); | ||||
| extern int serial_ischar ( void ); | ||||
| extern int serial_initialized; | ||||
|  | ||||
| #endif /* _IPXE_SERIAL_H */ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user