How to express trace(AX((A)^H)X) in cvx?

trace(X*A*A'*X) = square_pos(norm(A'*X,'fro'))

However, trace(A*X*A'*X) is neither convex nor concave in 2D or higher, as the two following examples show.

% Example 1 show it's not convex
A=[2 4;5 1];
X1=[4 1;1 1];
X2=[1 1;1 4];
X3=.5*X1+.5*X2;
disp(trace(A*X3*A'*X3))
     4.665000000000000e+02
disp(.5*trace(A*X1*A'*X1)+.5*trace(A*X2*A'*X2))
     3.855000000000000e+02

% Example 2: everything the same, except off-diagonal of X1 are zeros,
% and shows it's not concave
A=[2 4;5 1];
X1=[1 0;0 1];
X2=[1 0;0 4];
X3=.5*X1+.5*X2;
disp(trace(A*X3*A'*X3))
     1.127500000000000e+02
disp(.5*trace(A*X1*A'*X1)+.5*trace(A*X2*A'*X2))
     115