Many GMs are equipped with an (ISM) idle speed motor. Since there are no chokes on fuel injected engines any more the idle speed motor takes the chokes place and allows the engine to run fast until warm up. The ISM is a small electric motor attached to the throttle body that has a pointy pintle that moves in and out and fits into an air bleed orifice. When the pintle is out the engine races. As the engine warms up the computer sees this by way of information fed from the temp sensor and the pintle moves in and reduces the air bleed which causes the engine to idle down. If the ISM gets stuck or gets a false reading from the temperature sensor telling the computer the engine is still cold when it really is warmed up it will continue to race. The computer will processes the information given it even if it is false. Have a garage hook up a scan tool to see what temperature the computer is seeing. It may be seeing 110 degrees at warm up when the engine really is running at 190 degrees. The ISM pintle can also get a build up of deposits on it which doesn't allow it to seal off the air bleed hole which also can cause a fast idle problem. The ISM can be removed and cleaned with choke carb cleaner if this is the case. There also is a tool that can be hooked to the ISM to center it to the proper operating position.
Also the most obvious check the accelerator linkage and throttle plate for any binding and sticking..
Hope this helps.


