define "not so good". If it's under a 3.0 you'll probably have to show some suitable work experience that demonstrates that you apply yourself well, even with the high test scores.
My general gpa is 2. 9 because I took over 250 units. I took hard classes in philosophy, math, cs, and physics, because I active search for hard classes to see what I am made of. Never had much interest after the first 3 weeks, and retreat back to my interest, and reading philosophy.
My specific gpa( math) is 3. 13, I took beyond the minimum course load. After the first 3 weeks, I study my own interest, and read philosophy.
I score pretty high in tests, because I like to self-study. It realize the best way to find a job where people give me money to study is by becoming a research prof. This is what I will do.
What can I do to get into to top phd programs? Should I go for some masters degree first, and jump to a top school for PHD?