init: Initialize serial subsystem before init_earlyinitcalls()
Otherwise, the serial sybsystem isn't initialized before the serial drivers attempt to register themselves.
This commit is contained in:
		@@ -33,8 +33,12 @@ struct serial_dev *serial_first_device() {
 | 
				
			|||||||
	return first_serial_dev;
 | 
						return first_serial_dev;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/*
 | 
				
			||||||
 | 
					 * Initialize the serial sybsystem.
 | 
				
			||||||
 | 
					 * Note: this is called directly from the kernel initialization as opposed to
 | 
				
			||||||
 | 
					 * being an initcall because it has to be called before the serial drivers get
 | 
				
			||||||
 | 
					 * initialized in earlyinitcalls.
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
void serial_init() {
 | 
					void serial_init() {
 | 
				
			||||||
	first_serial_dev = 0;
 | 
						first_serial_dev = 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					 | 
				
			||||||
driversubsys_initcall(serial_init);
 | 
					 | 
				
			||||||
 
 | 
				
			|||||||
@@ -64,6 +64,7 @@ void serial_console_init() {
 | 
				
			|||||||
		print_init(sdev->putc);
 | 
							print_init(sdev->putc);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void serial_init();
 | 
				
			||||||
void kmalloc_init();
 | 
					void kmalloc_init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
int main(void) {
 | 
					int main(void) {
 | 
				
			||||||
@@ -73,8 +74,13 @@ int main(void) {
 | 
				
			|||||||
	//setup MMU
 | 
						//setup MMU
 | 
				
			||||||
	mmu_reinit();
 | 
						mmu_reinit();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Initialize the serial subsystem before
 | 
				
			||||||
 | 
						 * init_earlyinitcalls(), because console drivers get
 | 
				
			||||||
 | 
						 * initialized here so as to have an output console as
 | 
				
			||||||
 | 
						 * early as possible, and we don't want those
 | 
				
			||||||
 | 
						 * initializations to fail. */
 | 
				
			||||||
 | 
						serial_init();
 | 
				
			||||||
	init_earlyinitcalls();
 | 
						init_earlyinitcalls();
 | 
				
			||||||
 | 
					 | 
				
			||||||
	serial_console_init();
 | 
						serial_console_init();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	//setup memory
 | 
						//setup memory
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user