From: Zhao Liu <zhao1.liu@intel.com>
To: Bernhard Beschow <shentey@gmail.com>
Cc: qemu-devel@nongnu.org, "Ani Sinha" <anisinha@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Eduardo Habkost" <eduardo@habkost.net>,
"Marcel Apfelbaum" <marcel.apfelbaum@gmail.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Paul Durrant" <paul@xen.org>,
"Igor Mammedov" <imammedo@redhat.com>,
"Jason Wang" <jasowang@redhat.com>,
"David Woodhouse" <dwmw2@infradead.org>,
"Sergio Lopez" <slp@redhat.com>
Subject: Re: [PATCH v2 5/6] hw/i386/pc: Populate RTC attribute directly
Date: Mon, 26 Feb 2024 17:11:41 +0800 [thread overview]
Message-ID: <ZdxVzaa5gp8wS/gz@intel.com> (raw)
In-Reply-To: <20240224135851.100361-6-shentey@gmail.com>
On Sat, Feb 24, 2024 at 02:58:50PM +0100, Bernhard Beschow wrote:
> Date: Sat, 24 Feb 2024 14:58:50 +0100
> From: Bernhard Beschow <shentey@gmail.com>
> Subject: [PATCH v2 5/6] hw/i386/pc: Populate RTC attribute directly
> X-Mailer: git-send-email 2.44.0
>
> Both the piix and the q35 machines introduce an rtc_state variable and defer the
> initialization of the X86MachineState::rtc attribute to pc_cmos_init(). Resolve
> this complication which makes pc_cmos_init() do what it says on the tin.
>
> Signed-off-by: Bernhard Beschow <shentey@gmail.com>
> Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> hw/i386/pc.c | 8 --------
> hw/i386/pc_piix.c | 15 +++++++--------
> hw/i386/pc_q35.c | 7 +++----
> 3 files changed, 10 insertions(+), 20 deletions(-)
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
>
> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
> index a80f809b83..880e95de26 100644
> --- a/hw/i386/pc.c
> +++ b/hw/i386/pc.c
> @@ -611,14 +611,6 @@ void pc_cmos_init(PCMachineState *pcms,
> mc146818rtc_set_cmos_data(s, 0x5c, val >> 8);
> mc146818rtc_set_cmos_data(s, 0x5d, val >> 16);
>
> - object_property_add_link(OBJECT(pcms), "rtc_state",
> - TYPE_ISA_DEVICE,
> - (Object **)&x86ms->rtc,
> - object_property_allow_set_link,
> - OBJ_PROP_LINK_STRONG);
> - object_property_set_link(OBJECT(pcms), "rtc_state", OBJECT(s),
> - &error_abort);
> -
> set_boot_dev(s, MACHINE(pcms)->boot_config.order, &error_fatal);
>
> val = 0;
> diff --git a/hw/i386/pc_piix.c b/hw/i386/pc_piix.c
> index 49d5d48db9..ce6aad758d 100644
> --- a/hw/i386/pc_piix.c
> +++ b/hw/i386/pc_piix.c
> @@ -112,7 +112,6 @@ static void pc_init1(MachineState *machine,
> Object *piix4_pm = NULL;
> qemu_irq smi_irq;
> GSIState *gsi_state;
> - ISADevice *rtc_state;
> MemoryRegion *ram_memory;
> MemoryRegion *pci_memory = NULL;
> MemoryRegion *rom_memory = system_memory;
> @@ -276,8 +275,8 @@ static void pc_init1(MachineState *machine,
> }
>
> isa_bus = ISA_BUS(qdev_get_child_bus(DEVICE(pci_dev), "isa.0"));
> - rtc_state = ISA_DEVICE(object_resolve_path_component(OBJECT(pci_dev),
> - "rtc"));
> + x86ms->rtc = ISA_DEVICE(object_resolve_path_component(OBJECT(pci_dev),
> + "rtc"));
> piix4_pm = object_resolve_path_component(OBJECT(pci_dev), "pm");
> dev = DEVICE(object_resolve_path_component(OBJECT(pci_dev), "ide"));
> pci_ide_create_devs(PCI_DEVICE(dev));
> @@ -288,9 +287,9 @@ static void pc_init1(MachineState *machine,
> &error_abort);
> isa_bus_register_input_irqs(isa_bus, x86ms->gsi);
>
> - rtc_state = isa_new(TYPE_MC146818_RTC);
> - qdev_prop_set_int32(DEVICE(rtc_state), "base_year", 2000);
> - isa_realize_and_unref(rtc_state, isa_bus, &error_fatal);
> + x86ms->rtc = isa_new(TYPE_MC146818_RTC);
> + qdev_prop_set_int32(DEVICE(x86ms->rtc), "base_year", 2000);
> + isa_realize_and_unref(x86ms->rtc, isa_bus, &error_fatal);
>
> i8257_dma_init(OBJECT(machine), isa_bus, 0);
> pcms->hpet_enabled = false;
> @@ -316,7 +315,7 @@ static void pc_init1(MachineState *machine,
> }
>
> /* init basic PC hardware */
> - pc_basic_device_init(pcms, isa_bus, x86ms->gsi, rtc_state, true,
> + pc_basic_device_init(pcms, isa_bus, x86ms->gsi, x86ms->rtc, true,
> 0x4);
>
> pc_nic_init(pcmc, isa_bus, pcms->pcibus);
> @@ -343,7 +342,7 @@ static void pc_init1(MachineState *machine,
> }
> #endif
>
> - pc_cmos_init(pcms, rtc_state);
> + pc_cmos_init(pcms, x86ms->rtc);
>
> if (piix4_pm) {
> smi_irq = qemu_allocate_irq(pc_acpi_smi_interrupt, first_cpu, 0);
> diff --git a/hw/i386/pc_q35.c b/hw/i386/pc_q35.c
> index 2fa4efb52f..e0b3f55a02 100644
> --- a/hw/i386/pc_q35.c
> +++ b/hw/i386/pc_q35.c
> @@ -124,7 +124,6 @@ static void pc_q35_init(MachineState *machine)
> Object *phb;
> PCIDevice *lpc;
> DeviceState *lpc_dev;
> - ISADevice *rtc_state;
> MemoryRegion *system_memory = get_system_memory();
> MemoryRegion *system_io = get_system_io();
> MemoryRegion *pci_memory = g_new(MemoryRegion, 1);
> @@ -231,7 +230,7 @@ static void pc_q35_init(MachineState *machine)
> }
> pci_realize_and_unref(lpc, pcms->pcibus, &error_fatal);
>
> - rtc_state = ISA_DEVICE(object_resolve_path_component(OBJECT(lpc), "rtc"));
> + x86ms->rtc = ISA_DEVICE(object_resolve_path_component(OBJECT(lpc), "rtc"));
>
> object_property_add_link(OBJECT(machine), PC_MACHINE_ACPI_DEVICE_PROP,
> TYPE_HOTPLUG_HANDLER,
> @@ -273,7 +272,7 @@ static void pc_q35_init(MachineState *machine)
> }
>
> /* init basic PC hardware */
> - pc_basic_device_init(pcms, isa_bus, x86ms->gsi, rtc_state, !mc->no_floppy,
> + pc_basic_device_init(pcms, isa_bus, x86ms->gsi, x86ms->rtc, !mc->no_floppy,
> 0xff0104);
>
> if (pcms->sata_enabled) {
> @@ -311,7 +310,7 @@ static void pc_q35_init(MachineState *machine)
> smbus_eeprom_init(pcms->smbus, 8, NULL, 0);
> }
>
> - pc_cmos_init(pcms, rtc_state);
> + pc_cmos_init(pcms, x86ms->rtc);
>
> /* the rest devices to which pci devfn is automatically assigned */
> pc_vga_init(isa_bus, pcms->pcibus);
> --
> 2.44.0
>
>
next prev parent reply other threads:[~2024-02-26 8:58 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-02-24 13:58 [PATCH v2 0/6] Simplify initialization of PC machines Bernhard Beschow
2024-02-24 13:58 ` [PATCH v2 1/6] hw/i386/x86: Let ioapic_init_gsi() take parent as pointer Bernhard Beschow
2024-02-26 8:27 ` Philippe Mathieu-Daudé
2024-02-26 8:54 ` Zhao Liu
2024-02-24 13:58 ` [PATCH v2 2/6] hw/i386/pc: Rename "bus" attribute to "pcibus" Bernhard Beschow
2024-02-26 8:26 ` Philippe Mathieu-Daudé
2024-02-26 8:56 ` Zhao Liu
2024-02-24 13:58 ` [PATCH v2 3/6] hw/i386/pc_{piix, q35}: Eliminate local pci_bus/pci_host variables Bernhard Beschow
2024-02-26 9:00 ` Zhao Liu
2024-02-24 13:58 ` [PATCH v2 4/6] hw/i386/pc: Remove unneeded class attribute "kvmclock_enabled" Bernhard Beschow
2024-02-25 16:32 ` Philippe Mathieu-Daudé
2024-02-26 6:14 ` Thomas Huth
2024-02-26 9:07 ` Zhao Liu
2024-02-24 13:58 ` [PATCH v2 5/6] hw/i386/pc: Populate RTC attribute directly Bernhard Beschow
2024-02-26 9:11 ` Zhao Liu [this message]
2024-02-24 13:58 ` [PATCH v2 6/6] hw/i386/pc: Inline pc_cmos_init() into pc_cmos_init_late() and remove it Bernhard Beschow
2024-02-24 14:15 ` [PATCH v2 0/6] Simplify initialization of PC machines Bernhard Beschow
2024-02-26 17:42 ` Philippe Mathieu-Daudé
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZdxVzaa5gp8wS/gz@intel.com \
--to=zhao1.liu@intel.com \
--cc=anisinha@redhat.com \
--cc=dwmw2@infradead.org \
--cc=eduardo@habkost.net \
--cc=imammedo@redhat.com \
--cc=jasowang@redhat.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=mst@redhat.com \
--cc=paul@xen.org \
--cc=pbonzini@redhat.com \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=shentey@gmail.com \
--cc=slp@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.