From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:38558) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1StCIW-0003RJ-EU for qemu-devel@nongnu.org; Mon, 23 Jul 2012 02:39:20 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1StCIQ-0002Mw-5L for qemu-devel@nongnu.org; Mon, 23 Jul 2012 02:39:16 -0400 Received: from mailout4.w1.samsung.com ([210.118.77.14]:30684) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1StCIP-0002Mf-W2 for qemu-devel@nongnu.org; Mon, 23 Jul 2012 02:39:10 -0400 Received: from eusync2.samsung.com (mailout4.w1.samsung.com [210.118.77.14]) by mailout4.w1.samsung.com (Oracle Communications Messaging Server 7u4-24.01(7.0.4.24.0) 64bit (built Nov 17 2011)) with ESMTP id <0M7L00JM0P63FS70@mailout4.w1.samsung.com> for qemu-devel@nongnu.org; Mon, 23 Jul 2012 07:39:39 +0100 (BST) Received: from [106.109.9.187] by eusync2.samsung.com (Oracle Communications Messaging Server 7u4-23.01(7.0.4.23.0) 64bit (built Aug 10 2011)) with ESMTPA id <0M7L008DRP4ZG650@eusync2.samsung.com> for qemu-devel@nongnu.org; Mon, 23 Jul 2012 07:39:00 +0100 (BST) Date: Mon, 23 Jul 2012 10:38:53 +0400 From: Maksim Kozlov In-reply-to: Message-id: <500CF17D.8010908@samsung.com> MIME-version: 1.0 Content-type: text/plain; charset=UTF-8; format=flowed Content-transfer-encoding: QUOTED-PRINTABLE References: <1342112068-23345-1-git-send-email-m.kozlov@samsung.com> <1342112068-23345-5-git-send-email-m.kozlov@samsung.com> Subject: Re: [Qemu-devel] [PATCH v2 4/4] ARM: exynos4210_pmu: Add software reset support List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Maydell Cc: kyungmin.park@samsung.com, qemu-devel@nongnu.org, e.voevodin@samsung.com 20.07.2012 18:32, Peter Maydell =D0=BF=D0=B8=D1=88=D0=B5=D1=82: > On 12 July 2012 17:54, Maksim Kozlov wrote: >> Signed-off-by: Maksim Kozlov >> --- >> hw/exynos4210_pmu.c | 40 +++++++++++++++++++++++++++++++++----= --- >> 1 files changed, 33 insertions(+), 7 deletions(-) >> >> diff --git a/hw/exynos4210_pmu.c b/hw/exynos4210_pmu.c >> index 7f09c79..96588d9 100644 >> --- a/hw/exynos4210_pmu.c >> +++ b/hw/exynos4210_pmu.c >> @@ -18,13 +18,8 @@ >> * with this program; if not, see= . >> */ >> >> -/* >> - * This model implements PMU registers just as a bulk of memory. = Currently, >> - * the only reason this device exists is that secondary CPU boot = loader >> - * uses PMU INFORM5 register as a holding pen. >> - */ >> - >> #include "sysbus.h" >> +#include "sysemu.h" >> >> #ifndef DEBUG_PMU >> #define DEBUG_PMU 0 >> @@ -230,6 +225,8 @@ >> >> #define EXYNOS4210_PMU_REGS_MEM_SIZE 0x3d0c >> >> +#define SWRESET_SYSTEM_MASK 0x00000001 >> + >> typedef struct Exynos4210PmuReg { >> const char *name; /* for debug only */ >> uint32_t offset; >> @@ -458,7 +455,17 @@ static void exynos4210_pmu_write(void *opaque= , target_phys_addr_t offset, >> PRINT_DEBUG_EXTEND("%s [0x%04x]<- 0x%04x\n", >> exynos4210_pmu_regs[index].name, (uint32_t)offset, = (uint32_t)val); >> >> - s->reg[index] =3D val; >> + switch (offset) { >> + case SWRESET: >> + if (val& SWRESET_SYSTEM_MASK) { >> + s->reg[index] =3D val; >> + qemu_system_reset_request(); >> + } >> + break; >> + default: >> + s->reg[index] =3D val; >> + break; >> + } >> } >> >> static const MemoryRegionOps exynos4210_pmu_ops =3D { >> @@ -477,9 +484,28 @@ static void exynos4210_pmu_reset(DeviceState = *dev) >> Exynos4210PmuState *s =3D >> container_of(dev, Exynos4210PmuState, busdev.qdev); >> unsigned i; >> + uint32_t index =3D exynos4210_pmu_get_register_index(s, SWRES= ET); >> + uint32_t swreset =3D s->reg[index]; >> >> /* Set default values for registers */ >> for (i =3D 0; i< PMU_NUM_OF_REGISTERS; i++) { >> + if (swreset) { >> + switch (exynos4210_pmu_regs[i].offset) { >> + case INFORM0: >> + case INFORM1: >> + case INFORM2: >> + case INFORM3: >> + case INFORM4: >> + case INFORM5: >> + case INFORM6: >> + case INFORM7: >> + case PS_HOLD_CONTROL: >> + /* keep these registers during SW reset */ >> + continue; >> + default: >> + break; >> + } >> + } >> s->reg[i] =3D exynos4210_pmu_regs[i].reset_value; >> } >> } > > This patch seems to be trying to make a distinction that QEMU doesn= 't > support, ie between system wide "software reset" and system wide > "hard reset". I'm not convinced about the wisdom of trying to paper > over this lack with a single-device workaround. Ok. Thank for review And I found out that this patch contains a mistake, therefore it shou= ld=20 be rejected in any case > > -- PMM > >