On Tue, Nov 26, 2013 at 02:23:41PM +0100, Gerd Hoffmann wrote:
With ahci running in 32bit mode we can also allocate the (ahci private) data structures in high memory. This reduces the real mode memory footprint and also simplifies the realloc as we only need to move struct ahci_port_s (which contains struct drive_s) from high memory to fseg in case the port probe was successful.
Signed-off-by: Gerd Hoffmann email@example.com
src/hw/ahci.c | 27 ++++----------------------- 1 file changed, 4 insertions(+), 23 deletions(-)
diff --git a/src/hw/ahci.c b/src/hw/ahci.c index 5984c1c..5add207 100644 --- a/src/hw/ahci.c +++ b/src/hw/ahci.c @@ -358,9 +358,9 @@ ahci_port_alloc(struct ahci_ctrl_s *ctrl, u32 pnr) } port->pnr = pnr; port->ctrl = ctrl;
- port->list = memalign_tmp(1024, 1024);
- port->fis = memalign_tmp(256, 256);
- port->cmd = memalign_tmp(256, 256);
- port->list = memalign_high(1024, 1024);
- port->fis = memalign_high(256, 256);
- port->cmd = memalign_high(256, 256);
Ideally, one wouldn't allocate in "high" ram and then go on to free it. (Memory fragmentation due to malloc/free could chew up some guest ram.) So, I'm not sure this is an improvement.
Also, if this is done then it wont work for 1Meg guests. That's probably not a concern though.
Otherwise, the other patches look fine to me.