ahci: Limit max size of a bio request

One PRDT entry can contain 4MB buffer at most, we currently only use one
PRDT per AHCI cmd. Limit the size of a bio request to respect it. Larger
bio will be split into smaller bios by multiplex_strategy.

Signed-off-by: Asias He <asias@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
ahci: Align cmd_table tables to 128-byte address

AHCI spec '4.2.2 Command List Structure' says 'Command Table Descriptor
Base Address' must be aligned to 128-byte cache line, indicated by bits
06:00 being reserved.

All the 32 cmd_table are allocated in one linear space. The size of
cmd_table is 144 bytes for now which is larger than 128 bytes. So we pad
cmd_table to 256 byes.

Signed-off-by: Asias He <asias@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
ahci: Assert data buffer address

Assert to make sure the data buffer address satisfies the AHCI spec's data
alignment requirement.

Signed-off-by: Asias He <asias@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>
ahci: Use all the cmd slots

AHCI has 32 cmd slots to issue cmd. Only first slot is used currently
which makes the queue-depth 1.

This patch uses all the cmd slots and makes the cmd completion async.
Now, the queue-depth is 32.

Test with "/tests/misc-bdev-write.so" on VBOX shows improvements:

   Before: ~10MB/s
   After: ~20MB/s

1000 round of "/tests/misc-bdev-rw.so" tests passed on VBOX and QEMU.

Signed-off-by: Asias He <asias@cloudius-systems.com>
Signed-off-by: Pekka Enberg <penberg@cloudius-systems.com>