I've restarted the instances that I'm using to test but no luck.

I have the setting set on just the highest compute node; I tried setting it on one of my older gen compute nodes as well but because there is production load on it, I am anxious about restarting services; I did restart the nova-compute service after making the change and there was no change in behavior. Should the setting also be set on the controllers?

When I look at virsh capabilities there is certainly a difference between the two
7c7
<       <model>Opteron_G5</model>
---
>       <model>Opteron_G4</model>
9c9
<       <microcode version='100665426'/>
---
>       <microcode version='100664894'/>
15d14
<       <feature name='bmi1'/>
25c24
<       <feature name='tce'/>
---
>       <feature name='lwp'/>


I look at the test instance on the compute node with the G5 opteron and this is in the XML
  <cpu mode='custom' match='exact' check='full'>
   <model fallback='forbid'>Opteron_G4</model>
   <topology sockets='1' cores='1' threads='1'/>
   <feature policy='require' name='vme'/>
   <feature policy='require' name='x2apic'/>
   <feature policy='require' name='hypervisor'/>
   <feature policy='disable' name='rdtscp'/>
 </cpu>

This looks like it is correctly taking the CPU model that I have specified in nova.conf, yet it does not want to migrate to the Opteron_G4 node.