All of lore.kernel.org
 help / color / mirror / Atom feed
From: Cyrill Gorcunov <gorcunov@gmail.com>
To: Jiri Slaby <jirislaby@gmail.com>
Cc: mingo@elte.hu, x86@kernel.org, linux-kernel@vger.kernel.org,
	Ingo Molnar <mingo@redhat.com>,
	Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>
Subject: Re: [PATCH 1/3] x86: apic, restore irqs on fail paths
Date: Fri, 29 May 2009 21:21:38 +0400	[thread overview]
Message-ID: <20090529172138.GC5176@lenovo> (raw)
In-Reply-To: <1243497289-18591-1-git-send-email-jirislaby@gmail.com>

[Jiri Slaby - Thu, May 28, 2009 at 09:54:47AM +0200]
|
| lapic_resume forgets to restore interrupts on fail paths.
| Fix that.

Good catch, Jiri!

Acked-by: Cyrill Gorcunov <gorcunov@openvz.org>

Though I really doubt if the system will be functional after such a fail :)
But it's definitely better then having it irq-locked.

Yinghai CC'ed just to be sure.

| 
| Signed-off-by: Jiri Slaby <jirislaby@gmail.com>
| Cc: Ingo Molnar <mingo@redhat.com>
| Cc: Thomas Gleixner <tglx@linutronix.de>
| Cc: H. Peter Anvin <hpa@zytor.com>
| ---
|  arch/x86/kernel/apic/apic.c |   11 ++++++-----
|  1 files changed, 6 insertions(+), 5 deletions(-)
| 
| diff --git a/arch/x86/kernel/apic/apic.c b/arch/x86/kernel/apic/apic.c
| index 07cffc1..fc65544 100644
| --- a/arch/x86/kernel/apic/apic.c
| +++ b/arch/x86/kernel/apic/apic.c
| @@ -2029,7 +2029,7 @@ static int lapic_resume(struct sys_device *dev)
|  	unsigned int l, h;
|  	unsigned long flags;
|  	int maxlvt;
| -	int ret;
| +	int ret = 0;
|  	struct IO_APIC_route_entry **ioapic_entries = NULL;
|  
|  	if (!apic_pm_state.active)
| @@ -2040,14 +2040,15 @@ static int lapic_resume(struct sys_device *dev)
|  		ioapic_entries = alloc_ioapic_entries();
|  		if (!ioapic_entries) {
|  			WARN(1, "Alloc ioapic_entries in lapic resume failed.");
| -			return -ENOMEM;
| +			ret = -ENOMEM;
| +			goto restore;
|  		}
|  
|  		ret = save_IO_APIC_setup(ioapic_entries);
|  		if (ret) {
|  			WARN(1, "Saving IO-APIC state failed: %d\n", ret);
|  			free_ioapic_entries(ioapic_entries);
| -			return ret;
| +			goto restore;
|  		}
|  
|  		mask_IO_APIC_setup(ioapic_entries);
| @@ -2099,10 +2100,10 @@ static int lapic_resume(struct sys_device *dev)
|  		restore_IO_APIC_setup(ioapic_entries);
|  		free_ioapic_entries(ioapic_entries);
|  	}
| -
| +restore:
|  	local_irq_restore(flags);
|  
| -	return 0;
| +	return ret;
|  }
|  
|  /*
| -- 
| 1.6.3
| 
| 
	-- Cyrill

  parent reply	other threads:[~2009-05-29 17:21 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-28  7:54 [PATCH 1/3] x86: apic, restore irqs on fail paths Jiri Slaby
2009-05-28  7:54 ` [PATCH 2/3] x86: amd_iommu, fix lock imbalance Jiri Slaby
2009-06-03  8:36   ` Joerg Roedel
2009-05-28  7:54 ` [PATCH 3/3] trace: events_filter, fix lock imbalances Jiri Slaby
2009-05-29  1:14   ` Li Zefan
2009-05-29 15:57     ` Jiri Slaby
2009-05-29 17:21 ` Cyrill Gorcunov [this message]
2009-06-02  0:51 ` [tip:irq/numa] x86, apic: Restore irqs on fail paths tip-bot for Jiri Slaby

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=20090529172138.GC5176@lenovo \
    --to=gorcunov@gmail.com \
    --cc=hpa@zytor.com \
    --cc=jirislaby@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=mingo@redhat.com \
    --cc=tglx@linutronix.de \
    --cc=x86@kernel.org \
    /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.