Commit 18640989 authored by Peter Maydell's avatar Peter Maydell
Browse files

Merge remote-tracking branch 'remotes/afaerber/tags/qom-devices-for-peter' into staging



QOM infrastructure fixes and device conversions

* QOM API error handling fixes
* Performance improvements for device GPIO property creation
* Remaining conversion of QEMUMachine to QOM

# gpg: Signature made Sat 19 Sep 2015 15:40:44 BST using RSA key ID 3E7E013F
# gpg: Good signature from "Andreas Färber <afaerber@suse.de>"
# gpg:                 aka "Andreas Färber <afaerber@suse.com>"

* remotes/afaerber/tags/qom-devices-for-peter: (21 commits)
  machine: Eliminate QEMUMachine and qemu_register_machine()
  Revert use of DEFINE_MACHINE() for registrations of multiple machines
  Use DEFINE_MACHINE() to register all machines
  mac_world: Break long line
  machine: DEFINE_MACHINE() macro
  exynos4: Declare each QEMUMachine as a separate variable
  exynos4: Use MachineClass instead of exynos4_machines array
  exynos4: Use EXYNOS4210_NCPUS instead of max_cpus on error message
  machine: Set MachineClass::name automatically
  machine: Ensure all TYPE_MACHINE subclasses have the right suffix
  mac99: Use MACHINE_TYPE_NAME to encode class name
  s390: Rename s390-ccw-virtio-2.4 class name to use MACHINE_TYPE_NAME
  s390-virtio: Rename machine class name to use MACHINE_TYPE_NAME
  pseries: Rename machine class names to use MACHINE_TYPE_NAME
  arm: Rename virt machine class to use MACHINE_TYPE_NAME
  vexpress: Rename machine classes to use MACHINE_TYPE_NAME
  vexpress: Don't set name on abstract class
  machine: MACHINE_TYPE_NAME macro
  qdev: Do not use slow [*] expansion for GPIO creation
  qom: Fix invalid error check in property_get_str()
  ...

Signed-off-by: default avatarPeter Maydell <peter.maydell@linaro.org>
parents b12a84ce 3b53e45f
Loading
Loading
Loading
Loading
+6 −11
Original line number Diff line number Diff line
@@ -168,17 +168,12 @@ static void clipper_init(MachineState *machine)
    }
}

static QEMUMachine clipper_machine = {
    .name = "clipper",
    .desc = "Alpha DP264/CLIPPER",
    .init = clipper_init,
    .max_cpus = 4,
    .is_default = 1,
};

static void clipper_machine_init(void)
static void clipper_machine_init(MachineClass *mc)
{
    qemu_register_machine(&clipper_machine);
    mc->desc = "Alpha DP264/CLIPPER";
    mc->init = clipper_init;
    mc->max_cpus = 4;
    mc->is_default = 1;
}

machine_init(clipper_machine_init);
DEFINE_MACHINE("clipper", clipper_machine_init)
+4 −9
Original line number Diff line number Diff line
@@ -58,15 +58,10 @@ static void collie_init(MachineState *machine)
    arm_load_kernel(s->cpu, &collie_binfo);
}

static QEMUMachine collie_machine = {
    .name = "collie",
    .desc = "Collie PDA (SA-1110)",
    .init = collie_init,
};

static void collie_machine_init(void)
static void collie_machine_init(MachineClass *mc)
{
    qemu_register_machine(&collie_machine);
    mc->desc = "Collie PDA (SA-1110)";
    mc->init = collie_init;
}

machine_init(collie_machine_init)
DEFINE_MACHINE("collie", collie_machine_init)
+4 −10
Original line number Diff line number Diff line
@@ -74,16 +74,10 @@ static void cubieboard_init(MachineState *machine)
    arm_load_kernel(&s->a10->cpu, &cubieboard_binfo);
}

static QEMUMachine cubieboard_machine = {
    .name = "cubieboard",
    .desc = "cubietech cubieboard",
    .init = cubieboard_init,
};


static void cubieboard_machine_init(void)
static void cubieboard_machine_init(MachineClass *mc)
{
    qemu_register_machine(&cubieboard_machine);
    mc->desc = "cubietech cubieboard";
    mc->init = cubieboard_init;
}

machine_init(cubieboard_machine_init)
DEFINE_MACHINE("cubieboard", cubieboard_machine_init)
+4 −9
Original line number Diff line number Diff line
@@ -148,15 +148,10 @@ static void canon_a1100_init(MachineState *machine)
    digic4_board_init(&digic4_board_canon_a1100);
}

static QEMUMachine canon_a1100 = {
    .name = "canon-a1100",
    .desc = "Canon PowerShot A1100 IS",
    .init = &canon_a1100_init,
};

static void digic_register_machines(void)
static void canon_a1100_machine_init(MachineClass *mc)
{
    qemu_register_machine(&canon_a1100);
    mc->desc = "Canon PowerShot A1100 IS";
    mc->init = &canon_a1100_init;
}

machine_init(digic_register_machines)
DEFINE_MACHINE("canon-a1100", canon_a1100_machine_init)
+35 −21
Original line number Diff line number Diff line
@@ -74,8 +74,6 @@ static struct arm_boot_info exynos4_board_binfo = {
    .write_secondary_boot = exynos4210_write_secondary,
};

static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS];

static void lan9215_init(uint32_t base, qemu_irq irq)
{
    DeviceState *dev;
@@ -97,11 +95,12 @@ static void lan9215_init(uint32_t base, qemu_irq irq)
static Exynos4210State *exynos4_boards_init_common(MachineState *machine,
                                                   Exynos4BoardType board_type)
{
    MachineClass *mc = MACHINE_GET_CLASS(machine);

    if (smp_cpus != EXYNOS4210_NCPUS && !qtest_enabled()) {
        fprintf(stderr, "%s board supports only %d CPU cores. Ignoring smp_cpus"
                " value.\n",
                exynos4_machines[board_type].name,
                exynos4_machines[board_type].max_cpus);
                mc->name, EXYNOS4210_NCPUS);
    }

    exynos4_board_binfo.ram_size = exynos4_board_ram_size[board_type];
@@ -145,25 +144,40 @@ static void smdkc210_init(MachineState *machine)
    arm_load_kernel(ARM_CPU(first_cpu), &exynos4_board_binfo);
}

static QEMUMachine exynos4_machines[EXYNOS4_NUM_OF_BOARDS] = {
    [EXYNOS4_BOARD_NURI] = {
        .name = "nuri",
        .desc = "Samsung NURI board (Exynos4210)",
        .init = nuri_init,
        .max_cpus = EXYNOS4210_NCPUS,
    },
    [EXYNOS4_BOARD_SMDKC210] = {
        .name = "smdkc210",
        .desc = "Samsung SMDKC210 board (Exynos4210)",
        .init = smdkc210_init,
        .max_cpus = EXYNOS4210_NCPUS,
    },
static void nuri_class_init(ObjectClass *oc, void *data)
{
    MachineClass *mc = MACHINE_CLASS(oc);

    mc->desc = "Samsung NURI board (Exynos4210)";
    mc->init = nuri_init;
    mc->max_cpus = EXYNOS4210_NCPUS;
}

static const TypeInfo nuri_type = {
    .name = MACHINE_TYPE_NAME("nuri"),
    .parent = TYPE_MACHINE,
    .class_init = nuri_class_init,
};

static void smdkc210_class_init(ObjectClass *oc, void *data)
{
    MachineClass *mc = MACHINE_CLASS(oc);

    mc->desc = "Samsung SMDKC210 board (Exynos4210)";
    mc->init = smdkc210_init;
    mc->max_cpus = EXYNOS4210_NCPUS;
}

static const TypeInfo smdkc210_type = {
    .name = MACHINE_TYPE_NAME("smdkc210"),
    .parent = TYPE_MACHINE,
    .class_init = smdkc210_class_init,
};

static void exynos4_machine_init(void)
static void exynos4_machines_init(void)
{
    qemu_register_machine(&exynos4_machines[EXYNOS4_BOARD_NURI]);
    qemu_register_machine(&exynos4_machines[EXYNOS4_BOARD_SMDKC210]);
    type_register_static(&nuri_type);
    type_register_static(&smdkc210_type);
}

machine_init(exynos4_machine_init);
machine_init(exynos4_machines_init)
Loading