Suspend vs. Hibernate in Linux
Before you attempt to do any debugging, it's best to understand what suspend and hibernate do and how they effect Linux. I will begin by saying that both suspend and hibernate are iffy at best with Linux. One of the reasons why this is so is, due to the nature of both systems, they are very much dependent upon hardware configurations which can run the gamut. Because of this, some laptops will suspend or hibernate with Linux and some will not. Why is this? Image this: For either to work, the suspend or hibernate system has to take a snapshot of your running state, freeze it, and store it to either RAM or disk. Once you are ready to bring your laptop back to life, the suspend system must be able to reach the image and restore it. Add to this the numerous systems that are effected by this system (X Windows, wireless networking, etc) and the task becomes even more complex.
Here is the gist of each. Suspend, also known as ACPI State S3, is also known as Suspend to RAM. This state is the trickiest to get working with Linux (In fact there are few laptops that will actually suspend with Linux.) because the image must be stored to RAM which is yet another variable in the equation. Suspend does use a very small amount of power because it has to keep the image on RAM in a retreivable state. Hibernate, also known as ACPI State S4, does the same thing as Suspend only it stores the image on the swap partition of the laptop hard drive. This is easier to handle because the swap partition is a much more standardized variable in the equation. Hibernate uses no power because the image is stored on a non-volitale state (on the actually hard drive.)
Of course the above doesn't even take into account other hardware variables such as button configuration, display, etc. But the end results should be the same: Save your laptop in a state that can be stored with little to no power usage.