Am 24.05.2012 15:10, schrieb Igor Mammedov: > On 05/23/2012 11:26 PM, Peter Maydell wrote: >> On 23 May 2012 22:09, Igor Mammedov<imamm...@redhat.com> wrote: >>> For cpu-hotplug it was suggested to use device_add/del >>> interface for it. To do so in a generalized way hot-plugged cpu >>> should follow general QOM object creation sequence, i.e. >>> - create new cpu instance >>> - set properties >>> - realize instance >>> without creating precedent of special case for cpus in device_add/del >>> if possible. So goal is to have a self-sufficient cpu object that >>> doesn't require external hooks to create/initialize it. It looks >>> possible do so for target-i386 at least. >> >> I think your self-sufficient CPU object should probably be a >> container QOM object which contains the CPU core itself and >> the APIC device. Then the container object's initialisation >> can map the APIC device. > > For x86 it would be artificial thing without a real hardware to > model after, that would needlessly complicate code and interface. > I'd rather avoid this. > > Meanwhile I've found only two devices that do mapping inside > device's initfn :( > > hw/lm32_sys.c > hw/bonito.c > > and lm32_sys has comment: > /* Note: This device is not created in the board initialization, > * instead it has to be added with the -device parameter. Therefore, > * the device maps itself. */ > > So for some devices it's possible to do so.
Simply put: Doing the mmio_map after qdev init is historical and no reason to keep doing so. It breaks the desired late-realize model. I believe Anthony's controversial series on GitHub with the "boilerplate" accessors that Peter so disliked tried to fix this? Andreas -- SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg