qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] Re: [PATCH] lsi: Properly initialize controller state on re


From: Jan Kiszka
Subject: [Qemu-devel] Re: [PATCH] lsi: Properly initialize controller state on reset
Date: Fri, 30 Apr 2010 12:57:30 +0200
User-agent: Mozilla/5.0 (X11; U; Linux i686 (x86_64); de; rv:1.8.1.12) Gecko/20080226 SUSE/2.0.0.12-1.1 Thunderbird/2.0.0.12 Mnenhy/0.7.5.666

Jan Kiszka wrote:
> The LSI controller was lacking any system reset handler. This is an
> attempt to fix it.
> 
> Signed-off-by: Jan Kiszka <address@hidden>
> ---
>  hw/lsi53c895a.c |   11 +++++++++++
>  1 files changed, 11 insertions(+), 0 deletions(-)
> 
> diff --git a/hw/lsi53c895a.c b/hw/lsi53c895a.c
> index 98b7f54..f328057 100644
> --- a/hw/lsi53c895a.c
> +++ b/hw/lsi53c895a.c
> @@ -1996,6 +1996,16 @@ static void lsi_mmio_mapfunc(PCIDevice *pci_dev, int 
> region_num,
>      cpu_register_physical_memory(addr + 0, 0x400, s->mmio_io_addr);
>  }
>  
> +static void lsi_scsi_reset(DeviceState *dev)
> +{
> +    LSIState *s = DO_UPCAST(LSIState, dev.qdev, dev);
> +
> +    s->dma_buf = NULL;
> +    s->current_dma_len = 0;
> +    s->active_commands = 0;

OK, this 0.12 patch obviously no longer applies. And purging the command
queue should not only be done on hard reset, but also when software
triggered it (ie. move it to lsi_soft_reset). Reworking...

Jan

> +    lsi_soft_reset(s);
> +}
> +
>  static void lsi_pre_save(void *opaque)
>  {
>      LSIState *s = opaque;
> @@ -2149,6 +2159,7 @@ static PCIDeviceInfo lsi_info = {
>      .qdev.name  = "lsi53c895a",
>      .qdev.alias = "lsi",
>      .qdev.size  = sizeof(LSIState),
> +    .qdev.reset = lsi_scsi_reset,
>      .qdev.vmsd  = &vmstate_lsi_scsi,
>      .init       = lsi_scsi_init,
>      .exit       = lsi_scsi_uninit,
> 
> 
> 

-- 
Siemens AG, Corporate Technology, CT T DE IT 1
Corporate Competence Center Embedded Linux




reply via email to

[Prev in Thread] Current Thread [Next in Thread]