qemu-devel
[Top][All Lists]
Advanced

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

Re: [Qemu-devel] [PATCH] i8259: Do not clear level-triggered lines in IR


From: Gleb Natapov
Subject: Re: [Qemu-devel] [PATCH] i8259: Do not clear level-triggered lines in IRR on init
Date: Tue, 24 Jan 2012 18:11:16 +0200

On Tue, Jan 24, 2012 at 04:29:29PM +0100, Jan Kiszka wrote:
> When an input line is handled as level-triggered, it will immediately
> raise an IRQ on the output of a PIC again that goes through an init
> reset. So only clear the edge-triggered inputs from IRR in that
> scenario.
> 
Looks good to me.

> Signed-off-by: Jan Kiszka <address@hidden>
> ---
>  hw/i8259.c        |    2 +-
>  hw/i8259_common.c |    2 +-
>  hw/kvm/i8259.c    |    2 +-
>  3 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/hw/i8259.c b/hw/i8259.c
> index 3005ce2..264bfc6 100644
> --- a/hw/i8259.c
> +++ b/hw/i8259.c
> @@ -231,8 +231,8 @@ static void pic_reset(DeviceState *dev)
>  {
>      PICCommonState *s = DO_UPCAST(PICCommonState, dev.qdev, dev);
>  
> -    pic_init_reset(s);
>      s->elcr = 0;
> +    pic_init_reset(s);
>  }
>  
>  static void pic_ioport_write(void *opaque, target_phys_addr_t addr64,
> diff --git a/hw/i8259_common.c b/hw/i8259_common.c
> index e515876..37aeee2 100644
> --- a/hw/i8259_common.c
> +++ b/hw/i8259_common.c
> @@ -28,7 +28,7 @@
>  void pic_reset_common(PICCommonState *s)
>  {
>      s->last_irr = 0;
> -    s->irr = 0;
> +    s->irr &= s->elcr;
>      s->imr = 0;
>      s->isr = 0;
>      s->priority_add = 0;
> diff --git a/hw/kvm/i8259.c b/hw/kvm/i8259.c
> index 64bb5c2..298d9ca 100644
> --- a/hw/kvm/i8259.c
> +++ b/hw/kvm/i8259.c
> @@ -84,8 +84,8 @@ static void kvm_pic_reset(DeviceState *dev)
>  {
>      PICCommonState *s = DO_UPCAST(PICCommonState, dev.qdev, dev);
>  
> -    pic_reset_common(s);
>      s->elcr = 0;
> +    pic_reset_common(s);
>  
>      kvm_pic_put(s);
>  }
> -- 
> 1.7.3.4

--
                        Gleb.



reply via email to

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