acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_ISR); 
acpi_os_release_lock (acpi_gbl_gpe_lock, flags); 
acpi_ev_gpe_detect (	struct acpi_gpe_xrupt_info      *gpe_xrupt_list){	u32                             int_status = ACPI_INTERRUPT_NOT_HANDLED;	u8                              enabled_status_byte;	struct acpi_gpe_register_info   *gpe_register_info;	u32                             status_reg;	u32                             enable_reg;	acpi_status                     status;	struct acpi_gpe_block_info      *gpe_block;	acpi_native_uint                i;	acpi_native_uint                j;	ACPI_FUNCTION_NAME ("ev_gpe_detect");	/* Check for the case where there are no GPEs */	if (!gpe_xrupt_list) {		return (int_status);	}	/* Examine all GPE blocks attached to this interrupt level */	acpi_os_acquire_lock (acpi_gbl_gpe_lock, ACPI_ISR);	gpe_block = gpe_xrupt_list->gpe_block_list_head;	while (gpe_block) {		/*		 * Read all of the 8-bit GPE status and enable registers		 * in this GPE block, saving all of them.		 * Find all currently active GP events.		 */		for (i = 0; i < gpe_block->register_count; i++) {			/* Get the next status/enable pair */			gpe_register_info = &gpe_block->register_info[i];			/* Read the Status Register */			status = acpi_hw_low_level_read (ACPI_GPE_REGISTER_WIDTH, &status_reg,					 &gpe_register_info->status_address);			if (ACPI_FAILURE (status)) {				goto unlock_and_exit;			}			/* Read the Enable Register */			status = acpi_hw_low_level_read (ACPI_GPE_REGISTER_WIDTH, &enable_reg,					 &gpe_register_info->enable_address);			if (ACPI_FAILURE (status)) {				goto unlock_and_exit;			}			ACPI_DEBUG_PRINT ((ACPI_DB_INTERRUPTS,				"Read GPE Register at GPE%X: Status=%02X, Enable=%02X\n",				gpe_register_info->base_gpe_number, status_reg, enable_reg));			/* Check if there is anything active at all in this register */			enabled_status_byte = (u8) (status_reg & enable_reg);			if (!enabled_status_byte) {				/* No active GPEs in this register, move on */				continue;			}			/* Now look at the individual GPEs in this byte register */			for (j = 0; j < ACPI_GPE_REGISTER_WIDTH; j++) {				/* Examine one GPE bit */				if (enabled_status_byte & acpi_gbl_decode_to8bit[j]) {					/*					 * Found an active GPE. Dispatch the event to a handler					 * or method.					 */					int_status |= acpi_ev_gpe_dispatch (						&gpe_block->event_info[(i * ACPI_GPE_REGISTER_WIDTH) + j],						(u32) j + gpe_register_info->base_gpe_number);				}			}		}		gpe_block = gpe_block->next;	}unlock_and_exit:	acpi_os_release_lock (acpi_gbl_gpe_lock, ACPI_ISR);	return (int_status);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/73459f73e5d1602c59ebec114fc45185521353c1/evgpe.c/buggy/drivers/acpi/events/evgpe.c