Deleted Added
full compact
nspredef.c (249112) nspredef.c (249663)
1/******************************************************************************
2 *
3 * Module Name: nspredef - Validation of ACPI predefined methods and objects
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2013, Intel Corp.

--- 49 unchanged lines hidden (view full) ---

58 * This module validates predefined ACPI objects that appear in the namespace,
59 * at the time they are evaluated (via AcpiEvaluateObject). The purpose of this
60 * validation is to detect problems with BIOS-exposed predefined ACPI objects
61 * before the results are returned to the ACPI-related drivers.
62 *
63 * There are several areas that are validated:
64 *
65 * 1) The number of input arguments as defined by the method/object in the
1/******************************************************************************
2 *
3 * Module Name: nspredef - Validation of ACPI predefined methods and objects
4 *
5 *****************************************************************************/
6
7/*
8 * Copyright (C) 2000 - 2013, Intel Corp.

--- 49 unchanged lines hidden (view full) ---

58 * This module validates predefined ACPI objects that appear in the namespace,
59 * at the time they are evaluated (via AcpiEvaluateObject). The purpose of this
60 * validation is to detect problems with BIOS-exposed predefined ACPI objects
61 * before the results are returned to the ACPI-related drivers.
62 *
63 * There are several areas that are validated:
64 *
65 * 1) The number of input arguments as defined by the method/object in the
66 * ASL is validated against the ACPI specification.
66 * ASL is validated against the ACPI specification.
67 * 2) The type of the return object (if any) is validated against the ACPI
67 * 2) The type of the return object (if any) is validated against the ACPI
68 * specification.
68 * specification.
69 * 3) For returned package objects, the count of package elements is
69 * 3) For returned package objects, the count of package elements is
70 * validated, as well as the type of each package element. Nested
71 * packages are supported.
70 * validated, as well as the type of each package element. Nested
71 * packages are supported.
72 *
73 * For any problems found, a warning message is issued.
74 *
75 ******************************************************************************/
76
77
78/* Local prototypes */
79
80static ACPI_STATUS
81AcpiNsCheckReference (
72 *
73 * For any problems found, a warning message is issued.
74 *
75 ******************************************************************************/
76
77
78/* Local prototypes */
79
80static ACPI_STATUS
81AcpiNsCheckReference (
82 ACPI_PREDEFINED_DATA *Data,
82 ACPI_EVALUATE_INFO *Info,
83 ACPI_OPERAND_OBJECT *ReturnObject);
84
85static UINT32
86AcpiNsGetBitmappedType (
87 ACPI_OPERAND_OBJECT *ReturnObject);
88
89
90/*******************************************************************************
91 *
83 ACPI_OPERAND_OBJECT *ReturnObject);
84
85static UINT32
86AcpiNsGetBitmappedType (
87 ACPI_OPERAND_OBJECT *ReturnObject);
88
89
90/*******************************************************************************
91 *
92 * FUNCTION: AcpiNsCheckPredefinedNames
92 * FUNCTION: AcpiNsCheckReturnValue
93 *
94 * PARAMETERS: Node - Namespace node for the method/object
93 *
94 * PARAMETERS: Node - Namespace node for the method/object
95 * Info - Method execution information block
95 * UserParamCount - Number of parameters actually passed
96 * ReturnStatus - Status from the object evaluation
97 * ReturnObjectPtr - Pointer to the object returned from the
98 * evaluation of a method or object
99 *
100 * RETURN: Status
101 *
96 * UserParamCount - Number of parameters actually passed
97 * ReturnStatus - Status from the object evaluation
98 * ReturnObjectPtr - Pointer to the object returned from the
99 * evaluation of a method or object
100 *
101 * RETURN: Status
102 *
102 * DESCRIPTION: Check an ACPI name for a match in the predefined name list.
103 * DESCRIPTION: Check the value returned from a predefined name.
103 *
104 ******************************************************************************/
105
106ACPI_STATUS
104 *
105 ******************************************************************************/
106
107ACPI_STATUS
107AcpiNsCheckPredefinedNames (
108AcpiNsCheckReturnValue (
108 ACPI_NAMESPACE_NODE *Node,
109 ACPI_NAMESPACE_NODE *Node,
110 ACPI_EVALUATE_INFO *Info,
109 UINT32 UserParamCount,
110 ACPI_STATUS ReturnStatus,
111 ACPI_OPERAND_OBJECT **ReturnObjectPtr)
112{
111 UINT32 UserParamCount,
112 ACPI_STATUS ReturnStatus,
113 ACPI_OPERAND_OBJECT **ReturnObjectPtr)
114{
113 ACPI_STATUS Status = AE_OK;
115 ACPI_STATUS Status;
114 const ACPI_PREDEFINED_INFO *Predefined;
116 const ACPI_PREDEFINED_INFO *Predefined;
115 char *Pathname;
116 ACPI_PREDEFINED_DATA *Data;
117
118
117
118
119 /* Match the name for this method/object against the predefined list */
120
121 Predefined = AcpiUtMatchPredefinedMethod (Node->Name.Ascii);
122
123 /* Get the full pathname to the object, for use in warning messages */
124
125 Pathname = AcpiNsGetExternalPathname (Node);
126 if (!Pathname)
127 {
128 return (AE_OK); /* Could not get pathname, ignore */
129 }
130
131 /*
132 * Check that the parameter count for this method matches the ASL
133 * definition. For predefined names, ensure that both the caller and
134 * the method itself are in accordance with the ACPI specification.
135 */
136 AcpiNsCheckParameterCount (Pathname, Node, UserParamCount, Predefined);
137
138 /* If not a predefined name, we cannot validate the return object */
139
119 /* If not a predefined name, we cannot validate the return object */
120
121 Predefined = Info->Predefined;
140 if (!Predefined)
141 {
122 if (!Predefined)
123 {
142 goto Cleanup;
124 return (AE_OK);
143 }
144
145 /*
146 * If the method failed or did not actually return an object, we cannot
147 * validate the return object
148 */
125 }
126
127 /*
128 * If the method failed or did not actually return an object, we cannot
129 * validate the return object
130 */
149 if ((ReturnStatus != AE_OK) && (ReturnStatus != AE_CTRL_RETURN_VALUE))
131 if ((ReturnStatus != AE_OK) &&
132 (ReturnStatus != AE_CTRL_RETURN_VALUE))
150 {
133 {
151 goto Cleanup;
134 return (AE_OK);
152 }
153
154 /*
155 * Return value validation and possible repair.
156 *
157 * 1) Don't perform return value validation/repair if this feature
158 * has been disabled via a global option.
159 *
160 * 2) We have a return value, but if one wasn't expected, just exit,
161 * this is not a problem. For example, if the "Implicit Return"
162 * feature is enabled, methods will always return a value.
163 *
164 * 3) If the return value can be of any type, then we cannot perform
165 * any validation, just exit.
166 */
167 if (AcpiGbl_DisableAutoRepair ||
168 (!Predefined->Info.ExpectedBtypes) ||
169 (Predefined->Info.ExpectedBtypes == ACPI_RTYPE_ALL))
170 {
135 }
136
137 /*
138 * Return value validation and possible repair.
139 *
140 * 1) Don't perform return value validation/repair if this feature
141 * has been disabled via a global option.
142 *
143 * 2) We have a return value, but if one wasn't expected, just exit,
144 * this is not a problem. For example, if the "Implicit Return"
145 * feature is enabled, methods will always return a value.
146 *
147 * 3) If the return value can be of any type, then we cannot perform
148 * any validation, just exit.
149 */
150 if (AcpiGbl_DisableAutoRepair ||
151 (!Predefined->Info.ExpectedBtypes) ||
152 (Predefined->Info.ExpectedBtypes == ACPI_RTYPE_ALL))
153 {
171 goto Cleanup;
154 return (AE_OK);
172 }
173
155 }
156
174 /* Create the parameter data block for object validation */
175
176 Data = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PREDEFINED_DATA));
177 if (!Data)
178 {
179 goto Cleanup;
180 }
181 Data->Predefined = Predefined;
182 Data->Node = Node;
183 Data->NodeFlags = Node->Flags;
184 Data->Pathname = Pathname;
185
186 /*
187 * Check that the type of the main return object is what is expected
188 * for this predefined name
189 */
157 /*
158 * Check that the type of the main return object is what is expected
159 * for this predefined name
160 */
190 Status = AcpiNsCheckObjectType (Data, ReturnObjectPtr,
191 Predefined->Info.ExpectedBtypes, ACPI_NOT_PACKAGE_ELEMENT);
161 Status = AcpiNsCheckObjectType (Info, ReturnObjectPtr,
162 Predefined->Info.ExpectedBtypes, ACPI_NOT_PACKAGE_ELEMENT);
192 if (ACPI_FAILURE (Status))
193 {
194 goto Exit;
195 }
196
197 /*
198 * For returned Package objects, check the type of all sub-objects.
199 * Note: Package may have been newly created by call above.
200 */
201 if ((*ReturnObjectPtr)->Common.Type == ACPI_TYPE_PACKAGE)
202 {
163 if (ACPI_FAILURE (Status))
164 {
165 goto Exit;
166 }
167
168 /*
169 * For returned Package objects, check the type of all sub-objects.
170 * Note: Package may have been newly created by call above.
171 */
172 if ((*ReturnObjectPtr)->Common.Type == ACPI_TYPE_PACKAGE)
173 {
203 Data->ParentPackage = *ReturnObjectPtr;
204 Status = AcpiNsCheckPackage (Data, ReturnObjectPtr);
174 Info->ParentPackage = *ReturnObjectPtr;
175 Status = AcpiNsCheckPackage (Info, ReturnObjectPtr);
205 if (ACPI_FAILURE (Status))
206 {
207 goto Exit;
208 }
209 }
210
211 /*
212 * The return object was OK, or it was successfully repaired above.
213 * Now make some additional checks such as verifying that package
214 * objects are sorted correctly (if required) or buffer objects have
215 * the correct data width (bytes vs. dwords). These repairs are
216 * performed on a per-name basis, i.e., the code is specific to
217 * particular predefined names.
218 */
176 if (ACPI_FAILURE (Status))
177 {
178 goto Exit;
179 }
180 }
181
182 /*
183 * The return object was OK, or it was successfully repaired above.
184 * Now make some additional checks such as verifying that package
185 * objects are sorted correctly (if required) or buffer objects have
186 * the correct data width (bytes vs. dwords). These repairs are
187 * performed on a per-name basis, i.e., the code is specific to
188 * particular predefined names.
189 */
219 Status = AcpiNsComplexRepairs (Data, Node, Status, ReturnObjectPtr);
190 Status = AcpiNsComplexRepairs (Info, Node, Status, ReturnObjectPtr);
220
221Exit:
222 /*
223 * If the object validation failed or if we successfully repaired one
224 * or more objects, mark the parent node to suppress further warning
225 * messages during the next evaluation of the same method/object.
226 */
191
192Exit:
193 /*
194 * If the object validation failed or if we successfully repaired one
195 * or more objects, mark the parent node to suppress further warning
196 * messages during the next evaluation of the same method/object.
197 */
227 if (ACPI_FAILURE (Status) || (Data->Flags & ACPI_OBJECT_REPAIRED))
198 if (ACPI_FAILURE (Status) ||
199 (Info->ReturnFlags & ACPI_OBJECT_REPAIRED))
228 {
229 Node->Flags |= ANOBJ_EVALUATED;
230 }
200 {
201 Node->Flags |= ANOBJ_EVALUATED;
202 }
231 ACPI_FREE (Data);
232
203
233Cleanup:
234 ACPI_FREE (Pathname);
235 return (Status);
236}
237
238
239/*******************************************************************************
240 *
204 return (Status);
205}
206
207
208/*******************************************************************************
209 *
241 * FUNCTION: AcpiNsCheckParameterCount
242 *
243 * PARAMETERS: Pathname - Full pathname to the node (for error msgs)
244 * Node - Namespace node for the method/object
245 * UserParamCount - Number of args passed in by the caller
246 * Predefined - Pointer to entry in predefined name table
247 *
248 * RETURN: None
249 *
250 * DESCRIPTION: Check that the declared (in ASL/AML) parameter count for a
251 * predefined name is what is expected (i.e., what is defined in
252 * the ACPI specification for this predefined name.)
253 *
254 ******************************************************************************/
255
256void
257AcpiNsCheckParameterCount (
258 char *Pathname,
259 ACPI_NAMESPACE_NODE *Node,
260 UINT32 UserParamCount,
261 const ACPI_PREDEFINED_INFO *Predefined)
262{
263 UINT32 ParamCount;
264 UINT32 RequiredParamsCurrent;
265 UINT32 RequiredParamsOld;
266
267
268 /* Methods have 0-7 parameters. All other types have zero. */
269
270 ParamCount = 0;
271 if (Node->Type == ACPI_TYPE_METHOD)
272 {
273 ParamCount = Node->Object->Method.ParamCount;
274 }
275
276 if (!Predefined)
277 {
278 /*
279 * Check the parameter count for non-predefined methods/objects.
280 *
281 * Warning if too few or too many arguments have been passed by the
282 * caller. An incorrect number of arguments may not cause the method
283 * to fail. However, the method will fail if there are too few
284 * arguments and the method attempts to use one of the missing ones.
285 */
286 if (UserParamCount < ParamCount)
287 {
288 ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS,
289 "Insufficient arguments - needs %u, found %u",
290 ParamCount, UserParamCount));
291 }
292 else if (UserParamCount > ParamCount)
293 {
294 ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS,
295 "Excess arguments - needs %u, found %u",
296 ParamCount, UserParamCount));
297 }
298 return;
299 }
300
301 /*
302 * Validate the user-supplied parameter count.
303 * Allow two different legal argument counts (_SCP, etc.)
304 */
305 RequiredParamsCurrent = Predefined->Info.ArgumentList & METHOD_ARG_MASK;
306 RequiredParamsOld = Predefined->Info.ArgumentList >> METHOD_ARG_BIT_WIDTH;
307
308 if (UserParamCount != ACPI_UINT32_MAX)
309 {
310 if ((UserParamCount != RequiredParamsCurrent) &&
311 (UserParamCount != RequiredParamsOld))
312 {
313 ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, ACPI_WARN_ALWAYS,
314 "Parameter count mismatch - "
315 "caller passed %u, ACPI requires %u",
316 UserParamCount, RequiredParamsCurrent));
317 }
318 }
319
320 /*
321 * Check that the ASL-defined parameter count is what is expected for
322 * this predefined name (parameter count as defined by the ACPI
323 * specification)
324 */
325 if ((ParamCount != RequiredParamsCurrent) &&
326 (ParamCount != RequiredParamsOld))
327 {
328 ACPI_WARN_PREDEFINED ((AE_INFO, Pathname, Node->Flags,
329 "Parameter count mismatch - ASL declared %u, ACPI requires %u",
330 ParamCount, RequiredParamsCurrent));
331 }
332}
333
334
335/*******************************************************************************
336 *
337 * FUNCTION: AcpiNsCheckObjectType
338 *
210 * FUNCTION: AcpiNsCheckObjectType
211 *
339 * PARAMETERS: Data - Pointer to validation data structure
212 * PARAMETERS: Info - Method execution information block
340 * ReturnObjectPtr - Pointer to the object returned from the
341 * evaluation of a method or object
342 * ExpectedBtypes - Bitmap of expected return type(s)
343 * PackageIndex - Index of object within parent package (if
344 * applicable - ACPI_NOT_PACKAGE_ELEMENT
345 * otherwise)
346 *
347 * RETURN: Status
348 *
349 * DESCRIPTION: Check the type of the return object against the expected object
350 * type(s). Use of Btype allows multiple expected object types.
351 *
352 ******************************************************************************/
353
354ACPI_STATUS
355AcpiNsCheckObjectType (
213 * ReturnObjectPtr - Pointer to the object returned from the
214 * evaluation of a method or object
215 * ExpectedBtypes - Bitmap of expected return type(s)
216 * PackageIndex - Index of object within parent package (if
217 * applicable - ACPI_NOT_PACKAGE_ELEMENT
218 * otherwise)
219 *
220 * RETURN: Status
221 *
222 * DESCRIPTION: Check the type of the return object against the expected object
223 * type(s). Use of Btype allows multiple expected object types.
224 *
225 ******************************************************************************/
226
227ACPI_STATUS
228AcpiNsCheckObjectType (
356 ACPI_PREDEFINED_DATA *Data,
229 ACPI_EVALUATE_INFO *Info,
357 ACPI_OPERAND_OBJECT **ReturnObjectPtr,
358 UINT32 ExpectedBtypes,
359 UINT32 PackageIndex)
360{
361 ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
362 ACPI_STATUS Status = AE_OK;
363 char TypeBuffer[48]; /* Room for 5 types */
364
365
366 /* A Namespace node should not get here, but make sure */
367
368 if (ReturnObject &&
369 ACPI_GET_DESCRIPTOR_TYPE (ReturnObject) == ACPI_DESC_TYPE_NAMED)
370 {
230 ACPI_OPERAND_OBJECT **ReturnObjectPtr,
231 UINT32 ExpectedBtypes,
232 UINT32 PackageIndex)
233{
234 ACPI_OPERAND_OBJECT *ReturnObject = *ReturnObjectPtr;
235 ACPI_STATUS Status = AE_OK;
236 char TypeBuffer[48]; /* Room for 5 types */
237
238
239 /* A Namespace node should not get here, but make sure */
240
241 if (ReturnObject &&
242 ACPI_GET_DESCRIPTOR_TYPE (ReturnObject) == ACPI_DESC_TYPE_NAMED)
243 {
371 ACPI_WARN_PREDEFINED ((AE_INFO, Data->Pathname, Data->NodeFlags,
244 ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
372 "Invalid return type - Found a Namespace node [%4.4s] type %s",
373 ReturnObject->Node.Name.Ascii,
374 AcpiUtGetTypeName (ReturnObject->Node.Type)));
375 return (AE_AML_OPERAND_TYPE);
376 }
377
378 /*
379 * Convert the object type (ACPI_TYPE_xxx) to a bitmapped object type.
380 * The bitmapped type allows multiple possible return types.
381 *
382 * Note, the cases below must handle all of the possible types returned
383 * from all of the predefined names (including elements of returned
384 * packages)
385 */
245 "Invalid return type - Found a Namespace node [%4.4s] type %s",
246 ReturnObject->Node.Name.Ascii,
247 AcpiUtGetTypeName (ReturnObject->Node.Type)));
248 return (AE_AML_OPERAND_TYPE);
249 }
250
251 /*
252 * Convert the object type (ACPI_TYPE_xxx) to a bitmapped object type.
253 * The bitmapped type allows multiple possible return types.
254 *
255 * Note, the cases below must handle all of the possible types returned
256 * from all of the predefined names (including elements of returned
257 * packages)
258 */
386 Data->ReturnBtype = AcpiNsGetBitmappedType (ReturnObject);
387 if (Data->ReturnBtype == ACPI_RTYPE_ANY)
259 Info->ReturnBtype = AcpiNsGetBitmappedType (ReturnObject);
260 if (Info->ReturnBtype == ACPI_RTYPE_ANY)
388 {
389 /* Not one of the supported objects, must be incorrect */
390 goto TypeErrorExit;
391 }
392
393 /* For reference objects, check that the reference type is correct */
394
261 {
262 /* Not one of the supported objects, must be incorrect */
263 goto TypeErrorExit;
264 }
265
266 /* For reference objects, check that the reference type is correct */
267
395 if ((Data->ReturnBtype & ExpectedBtypes) == ACPI_RTYPE_REFERENCE)
268 if ((Info->ReturnBtype & ExpectedBtypes) == ACPI_RTYPE_REFERENCE)
396 {
269 {
397 Status = AcpiNsCheckReference (Data, ReturnObject);
270 Status = AcpiNsCheckReference (Info, ReturnObject);
398 return (Status);
399 }
400
401 /* Attempt simple repair of the returned object if necessary */
402
271 return (Status);
272 }
273
274 /* Attempt simple repair of the returned object if necessary */
275
403 Status = AcpiNsSimpleRepair (Data, ExpectedBtypes,
404 PackageIndex, ReturnObjectPtr);
405 return (Status);
276 Status = AcpiNsSimpleRepair (Info, ExpectedBtypes,
277 PackageIndex, ReturnObjectPtr);
278 if (ACPI_SUCCESS (Status))
279 {
280 return (AE_OK); /* Successful repair */
281 }
406
407
408TypeErrorExit:
409
410 /* Create a string with all expected types for this predefined object */
411
412 AcpiUtGetExpectedReturnTypes (TypeBuffer, ExpectedBtypes);
413
414 if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT)
415 {
282
283
284TypeErrorExit:
285
286 /* Create a string with all expected types for this predefined object */
287
288 AcpiUtGetExpectedReturnTypes (TypeBuffer, ExpectedBtypes);
289
290 if (PackageIndex == ACPI_NOT_PACKAGE_ELEMENT)
291 {
416 ACPI_WARN_PREDEFINED ((AE_INFO, Data->Pathname, Data->NodeFlags,
292 ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
417 "Return type mismatch - found %s, expected %s",
418 AcpiUtGetObjectTypeName (ReturnObject), TypeBuffer));
419 }
420 else
421 {
293 "Return type mismatch - found %s, expected %s",
294 AcpiUtGetObjectTypeName (ReturnObject), TypeBuffer));
295 }
296 else
297 {
422 ACPI_WARN_PREDEFINED ((AE_INFO, Data->Pathname, Data->NodeFlags,
298 ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
423 "Return Package type mismatch at index %u - "
424 "found %s, expected %s", PackageIndex,
425 AcpiUtGetObjectTypeName (ReturnObject), TypeBuffer));
426 }
427
428 return (AE_AML_OPERAND_TYPE);
429}
430
431
432/*******************************************************************************
433 *
434 * FUNCTION: AcpiNsCheckReference
435 *
299 "Return Package type mismatch at index %u - "
300 "found %s, expected %s", PackageIndex,
301 AcpiUtGetObjectTypeName (ReturnObject), TypeBuffer));
302 }
303
304 return (AE_AML_OPERAND_TYPE);
305}
306
307
308/*******************************************************************************
309 *
310 * FUNCTION: AcpiNsCheckReference
311 *
436 * PARAMETERS: Data - Pointer to validation data structure
312 * PARAMETERS: Info - Method execution information block
437 * ReturnObject - Object returned from the evaluation of a
438 * method or object
439 *
440 * RETURN: Status
441 *
442 * DESCRIPTION: Check a returned reference object for the correct reference
443 * type. The only reference type that can be returned from a
444 * predefined method is a named reference. All others are invalid.
445 *
446 ******************************************************************************/
447
448static ACPI_STATUS
449AcpiNsCheckReference (
313 * ReturnObject - Object returned from the evaluation of a
314 * method or object
315 *
316 * RETURN: Status
317 *
318 * DESCRIPTION: Check a returned reference object for the correct reference
319 * type. The only reference type that can be returned from a
320 * predefined method is a named reference. All others are invalid.
321 *
322 ******************************************************************************/
323
324static ACPI_STATUS
325AcpiNsCheckReference (
450 ACPI_PREDEFINED_DATA *Data,
326 ACPI_EVALUATE_INFO *Info,
451 ACPI_OPERAND_OBJECT *ReturnObject)
452{
453
454 /*
455 * Check the reference object for the correct reference type (opcode).
456 * The only type of reference that can be converted to an ACPI_OBJECT is
457 * a reference to a named object (reference class: NAME)
458 */
459 if (ReturnObject->Reference.Class == ACPI_REFCLASS_NAME)
460 {
461 return (AE_OK);
462 }
463
327 ACPI_OPERAND_OBJECT *ReturnObject)
328{
329
330 /*
331 * Check the reference object for the correct reference type (opcode).
332 * The only type of reference that can be converted to an ACPI_OBJECT is
333 * a reference to a named object (reference class: NAME)
334 */
335 if (ReturnObject->Reference.Class == ACPI_REFCLASS_NAME)
336 {
337 return (AE_OK);
338 }
339
464 ACPI_WARN_PREDEFINED ((AE_INFO, Data->Pathname, Data->NodeFlags,
340 ACPI_WARN_PREDEFINED ((AE_INFO, Info->FullPathname, Info->NodeFlags,
465 "Return type mismatch - unexpected reference object type [%s] %2.2X",
466 AcpiUtGetReferenceName (ReturnObject),
467 ReturnObject->Reference.Class));
468
469 return (AE_AML_OPERAND_TYPE);
470}
471
472

--- 59 unchanged lines hidden ---
341 "Return type mismatch - unexpected reference object type [%s] %2.2X",
342 AcpiUtGetReferenceName (ReturnObject),
343 ReturnObject->Reference.Class));
344
345 return (AE_AML_OPERAND_TYPE);
346}
347
348

--- 59 unchanged lines hidden ---