All of lore.kernel.org
 help / color / mirror / Atom feed
From: Igor Mammedov <imammedo@redhat.com>
To: Anthony Liguori <anthony@codemonkey.ws>
Cc: "Jan Kiszka" <jan.kiszka@siemens.com>,
	"qemu-devel@nongnu.org" <qemu-devel@nongnu.org>,
	"Andreas Färber" <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH 1/7] Introduce a new bus "ICC" to connect APIC
Date: Fri, 24 Feb 2012 14:05:49 +0100	[thread overview]
Message-ID: <4F478B2D.9050903@redhat.com> (raw)
In-Reply-To: <4F3E8817.7050001@redhat.com>

On 02/17/2012 06:02 PM, Igor Mammedov wrote:
> On 02/16/2012 01:42 PM, Anthony Liguori wrote:
>> On 02/16/2012 05:25 AM, Jan Kiszka wrote:
>>> On 2012-02-16 00:16, Igor Mammedov wrote:
>>>> Introduce a new structure CPUS as the controller of ICC (INTERRUPT
>>>> CONTROLLER COMMUNICATIONS), and new bus "ICC" to hold APIC,instead
>>>> of sysbus. So we can support APIC hot-plug feature.
>>>>
>>>> This is repost of original patch for qemu-kvm rebased on current qemu:
>>>> http://lists.nongnu.org/archive/html/qemu-devel/2011-11/msg01478.html
>>>> All credits to Liu Ping Fan for writing it.
>>>>
>>>> V2 changes:
>>>> - cpusockets_init: cpu_sockets is not yet initialized, use cpus that
>>>> we got as input param instead for qbus_create, this makes cpus
>>>> apics visible in "info qtree" monitor command
>>>> - fix format error spotted by Jan and missed by checkpatch
>>>> - cpu_has_apic_feature: return bool instead of int
>>>>
>>>
>>> This patch surely no longer applies. And the ICC requires QOM conversion.
>>
>> Also, post-QOM, I don't think having an ICC bus makes a whole lot of sense.
>>
>> The LAPIC can be made a child of the CPU device with a bidirectional link.
>>
>> I would simply create a fixed set of CPU links<> hung off of /devices somewhere and use that as the hotplug mechanism. This matches well the way we
>> model this to the guest (we expose a fixed number of pluggable sockets).
>
> I've just QOM-ified it, but in light of what you just said it may be ignored.
> ICC bus was used on pre Pentium 4 smp systems. And whole thing with introducing
> it was to provide hot-plugable bus for cpus, since hot-plug on sysbus is disabled
> and people argued that sysbus shouldn't be hot-plugable. However it depends on
> what we choose to model, we can use pre P4 ICC bus for inter-apic/ioapic communications
> or use P4 model allowing hot-plug on sysbus and use it for inter-apic/ioapic
> communications if needed.
>
> So I'd rather drop ICC patch and try your approach with CPU links<>, I see no
> point in introducing new bus providing we have an alternative model and existing
> bus for the task.

I've looked at device_add command and qdev_device_add it uses for doing actual work
and in current state it requires (based on Andreas' qom_cpu branch):

For approach where apic and cpu hot-plugged to sysbus.
   1. created object must be descendant of TYPE_DEVICE. So QOM TYPE_CPU should be inherited
      from TYPE_DEVICE at least or TYPE_SYS_BUS_DEVICE.
   2. hot-plug on the bus should be allowed. if we ditch icc bus then we should allow
      hot-plug on sysbus. Can we do this? (i.e. it seems that for P4 and later cpus
      sysbus should be hot-plugable).
   3. should DeviceClass.init be used for cpu initialization or should .instance_init
      do all the job and make DeviceClass.init nop?

Another approach that tries to re-use device_add interface:
   1. allow run-time type detection in qdev_device_add and execute separate branch for
      TYPE_CPU. This way we could easily use links<> on sysbus
   2. device_del will require the same hacking as device_add
   3. apic now is sysbus device, question is what will be lost if it is attached to link and
      won't be sysbus_device_type anymore?
   4. will reset called on sysbus reach apic/cpu if it is on the link?

Any opinions on direction I should look more closely?

  reply	other threads:[~2012-02-24 13:06 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-02-15 23:16 [Qemu-devel] [PATCH 0/7] Add CPU hot-plug to qemu (pc only). v2 Igor Mammedov
2012-02-15 23:16 ` [Qemu-devel] [PATCH 1/7] Introduce a new bus "ICC" to connect APIC Igor Mammedov
2012-02-16 11:25   ` Jan Kiszka
2012-02-16 12:42     ` Anthony Liguori
2012-02-16 12:50       ` Jan Kiszka
2012-02-16 12:59         ` Anthony Liguori
2012-02-16 13:06           ` Jan Kiszka
2012-02-17 17:02       ` Igor Mammedov
2012-02-24 13:05         ` Igor Mammedov [this message]
2012-02-24 13:30           ` Andreas Färber
2012-02-24 13:40             ` Paolo Bonzini
2012-02-24 13:47               ` Anthony Liguori
2012-02-24 13:50                 ` Paolo Bonzini
2012-02-24 14:44                   ` Anthony Liguori
2012-02-15 23:16 ` [Qemu-devel] [PATCH 2/7] Convert pc cpu to qdev Igor Mammedov
2012-02-16 11:27   ` Jan Kiszka
2012-02-16 12:01   ` Jan Kiszka
2012-02-16 12:51     ` Anthony Liguori
2012-02-16 12:54       ` Jan Kiszka
2012-02-16 16:09         ` Anthony Liguori
2012-03-13  9:32       ` Lai Jiangshan
2012-03-13 11:04         ` Andreas Färber
2012-03-14  7:59           ` Lai Jiangshan
2012-03-14  8:37             ` Igor Mammedov
2012-03-14 13:49               ` Vasilis Liaskovitis
2012-03-14 15:23                 ` Gleb Natapov
2012-03-14 15:32                   ` Anthony Liguori
2012-03-14 15:35                     ` Gleb Natapov
2012-03-14 15:42                       ` Anthony Liguori
2012-03-14 15:54                         ` Gleb Natapov
2012-03-14 15:57                           ` Anthony Liguori
2012-03-14 16:27                             ` Gleb Natapov
2012-03-14 19:55                   ` Vasilis Liaskovitis
2012-03-15 12:07                     ` Gleb Natapov
2012-02-16 12:45   ` Anthony Liguori
2012-02-16 16:09   ` Andreas Färber
2012-02-17 17:16     ` Igor Mammedov
2012-02-17 18:07       ` Andreas Färber
2012-02-15 23:16 ` [Qemu-devel] [PATCH 3/7] cleanup: get rid of pc_new_cpu Igor Mammedov
2012-02-15 23:16 ` [Qemu-devel] [PATCH 4/7] cleanup: remove redundant pc_cpu_reset Igor Mammedov
2012-02-16 11:32   ` Jan Kiszka
2012-02-15 23:16 ` [Qemu-devel] [PATCH 5/7] Set default 'model' property if it wasn't specified yet Igor Mammedov
2012-02-16 11:36   ` Jan Kiszka
2012-02-15 23:16 ` [Qemu-devel] [PATCH 6/7] Prepare ACPI infrastructure for cpu hot-plug in acpi_piix4 Igor Mammedov
2012-02-16 11:41   ` Jan Kiszka
2012-02-15 23:16 ` [Qemu-devel] [PATCH 7/7] Implement cpu hot-add using device_add monitor command Igor Mammedov
2012-02-15 23:35   ` Anthony Liguori
2012-02-16  9:33     ` Igor Mammedov
2012-02-16 15:52       ` Andreas Färber
2012-02-16 10:16     ` Jan Kiszka

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=4F478B2D.9050903@redhat.com \
    --to=imammedo@redhat.com \
    --cc=afaerber@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=jan.kiszka@siemens.com \
    --cc=qemu-devel@nongnu.org \
    /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.