[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class
From: |
Anthony Liguori |
Subject: |
Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class |
Date: |
Thu, 04 Oct 2012 08:46:46 -0500 |
User-agent: |
Notmuch/0.13.2+93~ged93d79 (http://notmuchmail.org) Emacs/23.3.1 (x86_64-pc-linux-gnu) |
Eduardo Habkost <address@hidden> writes:
> We can make it a child of a generic "machine" class later, but right now
> a "PC" class is needed to allow global-properties to control some
> details of CPU creation on the PC code.
>
> Signed-off-by: Eduardo Habkost <address@hidden>
> ---
> hw/pc.c | 18 ++++++++++++++++++
> hw/pc.h | 6 ++++++
> 2 files changed, 24 insertions(+)
>
> diff --git a/hw/pc.c b/hw/pc.c
> index 7e7e0e2..9b68282 100644
> --- a/hw/pc.c
> +++ b/hw/pc.c
> @@ -550,6 +550,24 @@ static void bochs_bios_write(void *opaque, uint32_t
> addr, uint32_t val)
> }
> }
>
> +typedef struct PC {
> + DeviceState parent_obj;
> +} PC;
So the general problem with this approach is that it strays from
modeling hardware.
I guess I'm confused why we're not just adding an apic_id property to
the CPU objects and setting that via the normal QOM accessors.
Wouldn't that solve the problem?
Regards,
Anthony Liguori
> +
> +static const TypeInfo pc_type_info = {
> + .name = TYPE_PC_MACHINE,
> + .parent = TYPE_DEVICE,
> + .instance_size = sizeof(PC),
> + .class_size = sizeof(DeviceClass),
> +};
> +
> +static void pc_register_type(void)
> +{
> + type_register_static(&pc_type_info);
> +}
> +
> +type_init(pc_register_type);
> +
> int e820_add_entry(uint64_t address, uint64_t length, uint32_t type)
> {
> int index = le32_to_cpu(e820_table.count);
> diff --git a/hw/pc.h b/hw/pc.h
> index e4db071..77e898f 100644
> --- a/hw/pc.h
> +++ b/hw/pc.h
> @@ -102,6 +102,12 @@ void i8042_setup_a20_line(ISADevice *dev, qemu_irq
> *a20_out);
> /* pc.c */
> extern int fd_bootchk;
>
> +#define TYPE_PC_MACHINE "PC"
> +#define PC(obj) \
> + OBJECT_CHECK(PC, (obj), TYPE_PC_MACHINE)
> +struct PC;
> +typedef struct PC PC;
> +
> void pc_register_ferr_irq(qemu_irq irq);
> void pc_acpi_smi_interrupt(void *opaque, int irq, int level);
>
> --
> 1.7.11.4
- [Qemu-devel] [RFC v2 00/18] Fix APIC-ID-based CPU topology, Eduardo Habkost, 2012/10/03
- [Qemu-devel] [RFC 09/18] target-i386: cpu: move cpuid_apic_id initialization to cpu_x86_register(), Eduardo Habkost, 2012/10/03
- [Qemu-devel] [RFC 12/18] fw_cfg: remove FW_CFG_MAX_CPUS from fw_cfg_init(), Eduardo Habkost, 2012/10/03
- [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Eduardo Habkost, 2012/10/03
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class,
Anthony Liguori <=
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Paolo Bonzini, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Andreas Färber, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Anthony Liguori, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Eduardo Habkost, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Anthony Liguori, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Eduardo Habkost, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Anthony Liguori, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Eduardo Habkost, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Eduardo Habkost, 2012/10/04
- Re: [Qemu-devel] [RFC 01/18] pc: create "PC" device class, Anthony Liguori, 2012/10/04