From: "Andreas Färber" <afaerber@suse.de>
To: Peter Maydell <peter.maydell@linaro.org>,
Eduardo Habkost <ehabkost@redhat.com>
Cc: blauwirbel@gmail.com, Igor Mammedov <imammedo@redhat.com>,
riku.voipio@iki.fi, qemu-devel@nongnu.org,
Anthony Liguori <anthony@codemonkey.ws>
Subject: Re: [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c
Date: Sun, 02 Dec 2012 06:44:53 +0100 [thread overview]
Message-ID: <50BAEAD5.8080305@suse.de> (raw)
In-Reply-To: <CAFEAcA-EDuqgCNFE9F4SBKP79H065GByZqaEaJ+mcieYaLi2dA@mail.gmail.com>
Am 01.12.2012 12:26, schrieb Peter Maydell:
> On 30 November 2012 21:38, Eduardo Habkost <ehabkost@redhat.com> wrote:
>> cpu_reset() is not that well-defined, otherwise we wouldn't have this on
>> linux-user:
>>
>> #if defined(TARGET_I386) || defined(TARGET_SPARC) || defined(TARGET_PPC)
>> cpu_reset(ENV_GET_CPU(env));
>> #endif
>>
>> (I have no idea why we have that #ifdef).
>
> I think this is because the different targets disagree about whether
> the CPU should be reset on initial construction or whether it needs
> a specific reset call. (The current setup with #ifdefs is among other
> things a historical effect as a result of various refactorings in
> the past; you can trace the git history if you're interested.)
Peter and me had long IRC discussions about how to fix this in the past:
* On my qom-cpu-copy branch I have a patch queued that drops the
#ifdef above, accepting that CPUs may get reset twice then.
=> Dispels doubt for target authors; doubts about correctness though.
* PMM suggested to move cpu_clone_regs() from target-*/cpu.h to *-user/.
=> Would lead to duplication between linux-user and bsd-user; ABI?
* PMM suggested to replace cpu_copy() with ABI-specific code in *-user/.
Unfortunately I don't quite remember the details of how... ;)
The x86 APIC refactorings that Iguardo have done do bring us very close
to sane cpu_reset() semantics (ignoring the two hands full of
hard/soft/... reset variants that ppc and other architectures feature).
Declaring cpu_reset() inferior to reset handlers due to the linux-user
mess is going into the wrong direction - some targets seem to ignore
reset or fork/clone completely at the moment, so the state we see cannot
be considered fully correct.
In particular the above reset is being performed *after* cpu_copy()
memcpy()'ed random memory contents (which for some targets may contain
pointers), undoing the copying in large parts. Therefore, when all
targets reset as part of cpu_init() (or by moving the cpu_reset() call
into early cpu_copy()?) we could get rid of it in do_fork() and of its
weird conditions.
Andreas
--
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg
next prev parent reply other threads:[~2012-12-02 5:45 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-09 14:56 [Qemu-devel] [PATCH 00/24] CPU DeviceState v7 Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 01/24] user: move *-user/qemu-types.h to main directory Eduardo Habkost
2012-11-12 21:38 ` Andreas Färber
2012-11-17 16:02 ` Blue Swirl
2012-11-09 14:56 ` [Qemu-devel] [PATCH 02/24] user: rename qemu-types.h to qemu-user-types.h Eduardo Habkost
2012-11-12 21:44 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 03/24] qemu-common.h: comment about usage rules Eduardo Habkost
2012-11-12 21:57 ` Andreas Färber
2012-11-12 22:04 ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 04/24] move qemu_irq typedef out of cpu-common.h Eduardo Habkost
2012-11-14 0:03 ` Andreas Färber
2012-11-14 12:30 ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 05/24] qdev: split up header so it can be used in cpu.h Eduardo Habkost
2012-11-14 13:51 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 06/24] move I/O-related definitions from qemu-common.h to a new header (qemu-stdio.h) Eduardo Habkost
2012-11-13 15:30 ` Igor Mammedov
2012-11-13 15:52 ` Eduardo Habkost
2012-11-13 16:43 ` Igor Mammedov
2012-11-13 16:50 ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 07/24] qemu-fsdev-dummy.c: include module.h Eduardo Habkost
2012-11-14 14:03 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 08/24] vnc-palette.h: include <stdbool.h> Eduardo Habkost
2012-11-14 14:35 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 09/24] ui/vnc-pallete.c: include headers it needs Eduardo Habkost
2012-11-09 16:46 ` Peter Maydell
2012-11-14 14:37 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 10/24] qemu-config.h: " Eduardo Habkost
2012-11-14 14:43 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 11/24] qapi/qmp-registry.c: " Eduardo Habkost
2012-11-14 15:47 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 12/24] qga/channel-posix.c: " Eduardo Habkost
2012-11-14 16:14 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 13/24] create qemu-types.h for struct typedefs Eduardo Habkost
2012-11-14 21:52 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 14/24] sysemu.h: include qemu-types.h instead of qemu-common.h Eduardo Habkost
2012-11-14 21:56 ` Andreas Färber
2012-11-14 22:19 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 15/24] qlist.h: do not include qemu-common.h Eduardo Habkost
2012-11-14 22:42 ` Andreas Färber
2012-11-15 1:19 ` [Qemu-devel] [PATCH v2] qga/channel-posix.c: include headers it needs Igor Mammedov
2012-11-15 18:34 ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 16/24] qapi-types.h: don't include qemu-common.h Eduardo Habkost
2012-11-14 22:13 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 17/24] qdev-properties.c: add copyright/license information Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 18/24] qdev: qdev_create(): use error_report() instead of hw_error() Eduardo Habkost
2012-12-04 16:16 ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c Eduardo Habkost
2012-11-15 1:54 ` Andreas Färber
2012-11-15 18:42 ` Eduardo Habkost
2012-11-15 18:45 ` Peter Maydell
2012-11-30 16:56 ` Igor Mammedov
2012-11-30 21:38 ` Eduardo Habkost
2012-12-01 11:26 ` Peter Maydell
2012-12-02 5:44 ` Andreas Färber [this message]
2012-12-02 13:37 ` Peter Maydell
2012-11-09 14:56 ` [Qemu-devel] [PATCH 20/24] qdev: add weak aliases for vmstate handling on qdev.c Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 21/24] qdev: add weak alias to sysbus_get_default() " Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 22/24] qdev-properties.c: separate core from the code used only by qemu-system-* Eduardo Habkost
2012-11-14 17:02 ` [Qemu-devel] [PATCH v5 " Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 23/24] include qdev code into *-user, too Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 24/24] qom: make CPU a child of DeviceState Eduardo Habkost
-- strict thread matches above, loose matches on Subject: below --
2012-11-09 13:08 [Qemu-devel] [PATCH 00/24] CPU DeviceState v6 Eduardo Habkost
2012-11-09 13:08 ` [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c Eduardo Habkost
2012-10-24 3:01 [Qemu-devel] [PATCH v5 00/24] CPU DeviceState, 5th try Eduardo Habkost
2012-10-24 3:02 ` [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c Eduardo Habkost
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=50BAEAD5.8080305@suse.de \
--to=afaerber@suse.de \
--cc=anthony@codemonkey.ws \
--cc=blauwirbel@gmail.com \
--cc=ehabkost@redhat.com \
--cc=imammedo@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=riku.voipio@iki.fi \
/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.