mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	ACPICA: AML Parser: ignore all exceptions resulting from incorrect AML during table load
Macros to classify different AML exception codes have been added in order to ignore the exceptions, Signed-off-by: Erik Schmauss <erik.schmauss@intel.com> [ rjw: Fix damaged white space ] Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
This commit is contained in:
		
							parent
							
								
									2c20443ec2
								
							
						
					
					
						commit
						d46b6537f0
					
				
					 2 changed files with 19 additions and 13 deletions
				
			
		| 
						 | 
					@ -709,20 +709,20 @@ acpi_status acpi_ps_parse_loop(struct acpi_walk_state *walk_state)
 | 
				
			||||||
			} else
 | 
								} else
 | 
				
			||||||
			    if ((walk_state->
 | 
								    if ((walk_state->
 | 
				
			||||||
				 parse_flags & ACPI_PARSE_MODULE_LEVEL)
 | 
									 parse_flags & ACPI_PARSE_MODULE_LEVEL)
 | 
				
			||||||
				&& status != AE_CTRL_TRANSFER
 | 
									&& (ACPI_AML_EXCEPTION(status)
 | 
				
			||||||
				&& ACPI_FAILURE(status)) {
 | 
									    || status == AE_ALREADY_EXISTS
 | 
				
			||||||
 | 
									    || status == AE_NOT_FOUND)) {
 | 
				
			||||||
				/*
 | 
									/*
 | 
				
			||||||
				 * ACPI_PARSE_MODULE_LEVEL flag means that we are currently
 | 
									 * ACPI_PARSE_MODULE_LEVEL flag means that we
 | 
				
			||||||
				 * loading a table by executing it as a control method.
 | 
									 * are currently loading a table by executing
 | 
				
			||||||
				 * However, if we encounter an error while loading the table,
 | 
									 * it as a control method. However, if we
 | 
				
			||||||
				 * we need to keep trying to load the table rather than
 | 
									 * encounter an error while loading the table,
 | 
				
			||||||
				 * aborting the table load (setting the status to AE_OK
 | 
									 * we need to keep trying to load the table
 | 
				
			||||||
				 * continues the table load). If we get a failure at this
 | 
									 * rather than aborting the table load (setting
 | 
				
			||||||
				 * point, it means that the dispatcher got an error while
 | 
									 * the status to AE_OK continues the table
 | 
				
			||||||
				 * processing Op (most likely an AML operand error) or a
 | 
									 * load). If we get a failure at this point, it
 | 
				
			||||||
				 * control method was called from module level and the
 | 
									 * means that the dispatcher got an error while
 | 
				
			||||||
				 * dispatcher returned AE_CTRL_TRANSFER. In the latter case,
 | 
									 * trying to execute the Op.
 | 
				
			||||||
				 * leave the status alone, there's nothing wrong with it.
 | 
					 | 
				
			||||||
				 */
 | 
									 */
 | 
				
			||||||
				status = AE_OK;
 | 
									status = AE_OK;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -59,6 +59,12 @@ struct acpi_exception_info {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#define AE_OK                           (acpi_status) 0x0000
 | 
					#define AE_OK                           (acpi_status) 0x0000
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#define ACPI_ENV_EXCEPTION(status)      (status & AE_CODE_ENVIRONMENTAL)
 | 
				
			||||||
 | 
					#define ACPI_AML_EXCEPTION(status)      (status & AE_CODE_AML)
 | 
				
			||||||
 | 
					#define ACPI_PROG_EXCEPTION(status)     (status & AE_CODE_PROGRAMMER)
 | 
				
			||||||
 | 
					#define ACPI_TABLE_EXCEPTION(status)    (status & AE_CODE_ACPI_TABLES)
 | 
				
			||||||
 | 
					#define ACPI_CNTL_EXCEPTION(status)     (status & AE_CODE_CONTROL)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Environmental exceptions
 | 
					 * Environmental exceptions
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue