All of lore.kernel.org
 help / color / mirror / Atom feed
From: Gu Zheng <guz.fnst@cn.fujitsu.com>
To: Igor Mammedov <imammedo@redhat.com>
Cc: chen.fan.fnst@cn.fujitsu.com, isimatu.yasuaki@jp.fujitsu.com,
	tangchen@cn.fujitsu.com, qemu-devel@nongnu.org, afaerber@suse.de
Subject: Re: [Qemu-devel] [PATCH V3 5/7] pc: Update rtc_cmos in pc_cpu_plug
Date: Mon, 29 Sep 2014 11:12:31 +0800	[thread overview]
Message-ID: <5428CE1F.1000700@cn.fujitsu.com> (raw)
In-Reply-To: <20140926152331.1ed900dd@nial.usersys.redhat.com>

Hi Igor,
On 09/26/2014 09:23 PM, Igor Mammedov wrote:

> On Wed, 17 Sep 2014 09:24:01 +0800
> Gu Zheng <guz.fnst@cn.fujitsu.com> wrote:
> 
>> Update rtc_cmos in pc_cpu_plug directly instead of the notifier, with
>> this change, there will no user of CPU hot-plug notifier any more, so
>> remove it.
>>
>> Signed-off-by: Gu Zheng <guz.fnst@cn.fujitsu.com>
>> ---
>>  hw/i386/pc.c            |   25 ++++++-------------------
>>  include/sysemu/sysemu.h |    3 ---
>>  qom/cpu.c               |   10 ----------
>>  3 files changed, 6 insertions(+), 32 deletions(-)
>>
>> diff --git a/hw/i386/pc.c b/hw/i386/pc.c
>> index e25e71b..8b887c7 100644
>> --- a/hw/i386/pc.c
>> +++ b/hw/i386/pc.c
>> @@ -353,20 +353,7 @@ static void pc_cmos_init_late(void *opaque)
>>      qemu_unregister_reset(pc_cmos_init_late, opaque);
>>  }
>>  
>> -typedef struct RTCCPUHotplugArg {
>> -    Notifier cpu_added_notifier;
>> -    ISADevice *rtc_state;
>> -} RTCCPUHotplugArg;
>> -
>> -static void rtc_notify_cpu_added(Notifier *notifier, void *data)
>> -{
>> -    RTCCPUHotplugArg *arg = container_of(notifier, RTCCPUHotplugArg,
>> -                                         cpu_added_notifier);
>> -    ISADevice *s = arg->rtc_state;
>> -
>> -    /* increment the number of CPUs */
>> -    rtc_set_memory(s, 0x5f, rtc_get_memory(s, 0x5f) + 1);
>> -}
>> +static ISADevice *rtc_state;
> It's not recommended to use global variables.
> 
> Instead of make link<rtc> property in PCMachine and use it pretty much like acpi_dev
> is used in 4/7.

Right, this way is more reasonable and neat.

> 
>>  
>>  void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
>>                    const char *boot_device,
>> @@ -376,7 +363,6 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
>>      int val, nb, i;
>>      FDriveType fd_type[2] = { FDRIVE_DRV_NONE, FDRIVE_DRV_NONE };
>>      static pc_cmos_init_late_arg arg;
>> -    static RTCCPUHotplugArg cpu_hotplug_cb;
>>  
>>      /* various important CMOS locations needed by PC/Bochs bios */
>>  
>> @@ -415,10 +401,8 @@ void pc_cmos_init(ram_addr_t ram_size, ram_addr_t above_4g_mem_size,
>>  
>>      /* set the number of CPU */
>>      rtc_set_memory(s, 0x5f, smp_cpus - 1);
>> -    /* init CPU hotplug notifier */
>> -    cpu_hotplug_cb.rtc_state = s;
>> -    cpu_hotplug_cb.cpu_added_notifier.notify = rtc_notify_cpu_added;
>> -    qemu_register_cpu_added_notifier(&cpu_hotplug_cb.cpu_added_notifier);
>> +
>> +    rtc_state = s;
>>  
>>      if (set_boot_dev(s, boot_device)) {
>>          exit(1);
>> @@ -1630,6 +1614,9 @@ static void pc_cpu_plug(HotplugHandler *hotplug_dev,
>>  
>>      hhc = HOTPLUG_HANDLER_GET_CLASS(pcms->acpi_dev);
>>      hhc->plug(HOTPLUG_HANDLER(pcms->acpi_dev), dev, &local_err);
>> +
>> +    /* increment the number of CPUs */
>> +    rtc_set_memory(rtc_state, 0x5f, rtc_get_memory(rtc_state, 0x5f) + 1);
> looks wrong, what if error happens in plug() handler???

Ah, yes, we need to confirm the plug cb result before update rtc_state.

Thanks,
Gu

> 
>>  out:
>>      error_propagate(errp, local_err);
>>  }
>> diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
>> index d8539fd..acfe494 100644
>> --- a/include/sysemu/sysemu.h
>> +++ b/include/sysemu/sysemu.h
>> @@ -183,9 +183,6 @@ void do_pci_device_hot_remove(Monitor *mon, const QDict *qdict);
>>  /* generic hotplug */
>>  void drive_hot_add(Monitor *mon, const QDict *qdict);
>>  
>> -/* CPU hotplug */
>> -void qemu_register_cpu_added_notifier(Notifier *notifier);
>> -
>>  /* pcie aer error injection */
>>  void pcie_aer_inject_error_print(Monitor *mon, const QObject *data);
>>  int do_pcie_aer_inject_error(Monitor *mon,
>> diff --git a/qom/cpu.c b/qom/cpu.c
>> index b32dd0a..19c5de5 100644
>> --- a/qom/cpu.c
>> +++ b/qom/cpu.c
>> @@ -107,15 +107,6 @@ static void cpu_common_get_memory_mapping(CPUState *cpu,
>>      error_setg(errp, "Obtaining memory mappings is unsupported on this CPU.");
>>  }
>>  
>> -/* CPU hot-plug notifiers */
>> -static NotifierList cpu_added_notifiers =
>> -    NOTIFIER_LIST_INITIALIZER(cpu_add_notifiers);
>> -
>> -void qemu_register_cpu_added_notifier(Notifier *notifier)
>> -{
>> -    notifier_list_add(&cpu_added_notifiers, notifier);
>> -}
>> -
>>  void cpu_reset_interrupt(CPUState *cpu, int mask)
>>  {
>>      cpu->interrupt_request &= ~mask;
>> @@ -303,7 +294,6 @@ static void cpu_common_realizefn(DeviceState *dev, Error **errp)
>>  
>>      if (dev->hotplugged) {
>>          cpu_synchronize_post_init(cpu);
>> -        notifier_list_notify(&cpu_added_notifiers, dev);
>>          cpu_resume(cpu);
>>      }
>>  }
> 
> .
> 

  reply	other threads:[~2014-09-29  3:26 UTC|newest]

Thread overview: 22+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-09-17  1:23 [Qemu-devel] [PATCH V3 0/7] cpu/acpi: convert cpu hot plug to hotplug_handler API Gu Zheng
2014-09-17  1:23 ` [Qemu-devel] [PATCH V3 1/7] acpi/cpu: add cpu hotplug callback function to match " Gu Zheng
2014-09-26 13:08   ` Igor Mammedov
2014-09-17  1:23 ` [Qemu-devel] [PATCH V3 2/7] acpi:ich9: convert cpu hotplug handle to " Gu Zheng
2014-09-17  1:23 ` [Qemu-devel] [PATCH V3 3/7] acpi:piix4: " Gu Zheng
2014-09-17  1:24 ` [Qemu-devel] [PATCH V3 4/7] pc: add cpu hotplug handler to PC_MACHINE Gu Zheng
2014-09-26 13:06   ` Igor Mammedov
2014-09-29  2:58     ` Gu Zheng
2014-09-29  8:58       ` Igor Mammedov
2014-09-17  1:24 ` [Qemu-devel] [PATCH V3 5/7] pc: Update rtc_cmos in pc_cpu_plug Gu Zheng
2014-09-26 13:23   ` Igor Mammedov
2014-09-29  3:12     ` Gu Zheng [this message]
2014-09-26 13:29   ` Igor Mammedov
2014-09-17  1:24 ` [Qemu-devel] [PATCH V3 6/7] cpu-hotplug: rename function for better readability Gu Zheng
2014-09-17  1:24 ` [Qemu-devel] [PATCH V3 7/7] acpi/cpu-hotplug: introduce help function to keep bit setting in one place Gu Zheng
2014-09-26 13:37   ` Igor Mammedov
2014-09-29  9:22     ` Gu Zheng
2014-09-29  9:47       ` Igor Mammedov
2014-09-29  9:44         ` Gu Zheng
2014-09-29 10:19           ` Igor Mammedov
2014-09-18  9:55 ` [Qemu-devel] [PATCH V3 0/7] cpu/acpi: convert cpu hot plug to hotplug_handler API Gu Zheng
2014-09-24  2:23 ` Gu Zheng

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=5428CE1F.1000700@cn.fujitsu.com \
    --to=guz.fnst@cn.fujitsu.com \
    --cc=afaerber@suse.de \
    --cc=chen.fan.fnst@cn.fujitsu.com \
    --cc=imammedo@redhat.com \
    --cc=isimatu.yasuaki@jp.fujitsu.com \
    --cc=qemu-devel@nongnu.org \
    --cc=tangchen@cn.fujitsu.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.