On Thu, Nov 25, 2010 at 7:07 AM, Alexander Graf <[email protected]> wrote:
> When we add a device using -drive to the guest, we also need to create a
> new SATA bus to handle the device. This patch adds a function call that
> every machine that likes to have IF_SATA support can call to get full
> device creation by keeping the actual qdev code clean.
>
> Signed-off-by: Alexander Graf <[email protected]>
>
> ---
>
> v2 -> v3:
>
> - redesign
>
> v4 -> v5:
>
> - redesign to only use qdev in generic parts, get rid of
> CONFIG_AHCI
> ---
> blockdev.c | 35 +++++++++++++++++++++++++++++++++++
> blockdev.h | 1 +
> vl.c | 2 ++
> 3 files changed, 38 insertions(+), 0 deletions(-)
>
> diff --git a/blockdev.c b/blockdev.c
> index 5ce90cc..69befb6 100644
> --- a/blockdev.c
> +++ b/blockdev.c
> @@ -499,6 +499,41 @@ DriveInfo *drive_init(QemuOpts *opts, int
> default_to_scsi, int *fatal_error)
> return dinfo;
> }
>
> +static void ahci_post_init(void)
> +{
> + int max_bus;
> + int bus, i;
> + QemuOpts *opts;
> + char name[32];
> +
> + max_bus = drive_get_max_bus(IF_SATA);
> + for (bus = 0; bus <= max_bus; bus++) {
> + sprintf(name, "ahci-%d", bus);
Please use
snprintf(name, sizeof(name), "ahci-%d", bus);
> + opts = qemu_opts_create(qemu_find_opts("device"), name, 1);
> + qemu_opt_set(opts, "driver", "ahci");
> +
> + for (i = 0; i < MAX_SATA_DEVS; i++) {
> + DriveInfo *dinfo = drive_get(IF_SATA, bus, i);
> +
> + if (!dinfo) {
> + continue;
> + }
> +
> + sprintf(name, "ahci-%d.%d", bus, i);
snprintf(name, sizeof(name), "ahci-%d.%d", bus, i);