#Python 3 - 241 chars
Python 3 - 241 chars
This will work most of the time, if you live long enough to see the result...
It works by randomly reordering a list of all coordinates until it gets the right answer. If it takes more than 9*10^99 loops, it assumes that there is no answer. (It will be right the vast majority of the time, since the probability of getting the right order is roughly 1 in 6*10^63).
N.B. Yes, I know that this is not really a valid answer.
import random
l=[(x%7,x//7)for x in range(49)]
s=eval(input())
v=lambda x:all(abs((x[i][0]-x[i+1][0])*(x[i][1]-x[i+1][1]))==2 for i in range(len(x)-1))
t=0
while not all(v(l),l[0]==s,t<9e99):
random.shuffle(l);t+=1
print(l if t<9e99 else[])