I was able to get the virtio bus to reset by making it a loadable module. When the module is removed and probed all of the memory gets cleaned up/reallocated. I had to change the Kconfig and Makefile that reside adjacent to virtio_rpmsg_bus to be as follows.
Kconfig:
menu "Rpmsg drivers"
# RPMSG always gets selected by whoever wants it
config RPMSG
tristate
select VIRTIO
select VIRTUALIZATION
config IMX_VIRTIO_RPMSG_BUS
tristate "IMX RPMSG virtio rpmsg bus -- lodable modules only"
default m
depends on RPMSG && m
config IMX_RPMSG_PINGPONG
tristate "IMX RPMSG pingpong driver -- loadable modules only"
default m
depends on RPMSG && m && IMX_VIRTIO_RPMSG_BUS
config IMX_RPMSG_TTY
tristate "IMX RPMSG tty driver -- loadable modules only"
default m
depends on RPMSG && m && IMX_VIRTIO_RPMSG_BUS
endmenu
Makefile:
obj-$(CONFIG_IMX_VIRTIO_RPMSG_BUS) += virtio_rpmsg_bus.o
obj-$(CONFIG_IMX_RPMSG_PINGPONG) += imx_rpmsg_pingpong.o
obj-$(CONFIG_IMX_RPMSG_TTY) += imx_rpmsg_tty.o