The mesh values should be preserved across firmware updates in most cases. The mesh data is deliberately saved at the end of the EEPROM just to insure that a change in the EEPROM data format doesn't have an impact on it. With a firmware change, you may lose your configuration information for UBL. ie. It may not automatically load a mesh and you may have to reset your Fade Height. But the mesh data should be there under most cases. Just do a G29 L1 T (assuming your mesh is in slot 1) and see if it is there.
(I'm guessing when you say the mesh goes to all zero's is that you typically save the mesh with G29 A (UBL active) and the last used mesh is automatically loaded. If that part of the configuration information is lost... The mesh is probably still there. You can force it to load by doing a G29 L1 T
But... there is a fall back position too. You can save your mesh data to your host computer by doing a G29 S-1 This will generate the GCode to reconstruct the mesh at a future point in time. You just save the output of the G29 S-1 and print it later as a GCode file. If you have a finely tuned mesh... It just makes sense to save a copy of it on your host computer.
(I'm guessing when you say the mesh goes to all zero's is that you typically save the mesh with G29 A (UBL active) and the last used mesh is automatically loaded. If that part of the configuration information is lost... The mesh is probably still there. You can force it to load by doing a G29 L1 T
But... there is a fall back position too. You can save your mesh data to your host computer by doing a G29 S-1 This will generate the GCode to reconstruct the mesh at a future point in time. You just save the output of the G29 S-1 and print it later as a GCode file. If you have a finely tuned mesh... It just makes sense to save a copy of it on your host computer.