1. A method for providing a flexible host memory buffer, the method comprising: allocating an amount of host memory as a host memory buffer accessible by a solid state drive (SSD) as a cache for SSD data; caching data from the solid state drive in the host memory buffer; monitoring utilization of the host memory buffer; and dynamically increasing or decreasing the amount of host memory allocated for the host memory buffer based on the utilization.