add: KPrintF( "U DMA %ld\n", iter->m_ChannelBit );
context: UnlockResource( struct ResourceIterator* iter,                struct ResourceContext*  ctx ){  if( ! iter->m_HasLock )  {    return;  }  switch( iter->m_Resource->m_Type )  {    case ISAPNP_NT_IRQ_RESOURCE:    {//      KPrintF( "Unlocked IRQ %ld\n", iter->m_IRQBit );      ctx->m_IRQ[ iter->m_IRQBit ] = NULL;      break;    }    case ISAPNP_NT_DMA_RESOURCE:    {//      KPrintF( "Unlocked DMA %ld\n", iter->m_ChannelBit );      ctx->m_DMA[ iter->m_ChannelBit ] = NULL;      break;    }    case ISAPNP_NT_IO_RESOURCE:    {      struct ResourceIOArea* io;//      KPrintF( "Unlocked IO 0x%04lx, length %ld\n", iter->m_Base, iter->m_Length );      for( io = (struct ResourceIOArea*) ctx->m_IO.mlh_Head;           io->m_MinNode.mln_Succ != NULL;           io = (struct ResourceIOArea*) io->m_MinNode.mln_Succ )      {        if( io->m_Iterator->m_Base == iter->m_Base )        {          Remove( (struct Node*) io );          break;        }      }      break;    }    case ISAPNP_NT_MEMORY_RESOURCE:    default:      break;  }  iter->m_HasLock = FALSE;}