From patchwork Sat Jun 30 05:07:30 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Len Brown X-Patchwork-Id: 1133881 Return-Path: X-Original-To: patchwork-linux-acpi@patchwork.kernel.org Delivered-To: patchwork-process-083081@patchwork1.kernel.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by patchwork1.kernel.org (Postfix) with ESMTP id 5925740ACE for ; Sat, 30 Jun 2012 05:14:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751422Ab2F3FO1 (ORCPT ); Sat, 30 Jun 2012 01:14:27 -0400 Received: from mail-qc0-f174.google.com ([209.85.216.174]:52182 "EHLO mail-qc0-f174.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751412Ab2F3FO0 (ORCPT ); Sat, 30 Jun 2012 01:14:26 -0400 Received: by qcro28 with SMTP id o28so2117424qcr.19 for ; Fri, 29 Jun 2012 22:14:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer:in-reply-to :references:in-reply-to:references:reply-to:organization; bh=ukzLP53GkD5qdSd3g9RDsxXOPCpZ335pBOtxdsQt1SM=; b=AgTVAJL6RfnjJ5WF/kO6nZxrrmcqtNz+fW+gIxfNj0vG5iEHh1lQbty7YkjLcoyAO2 YP05sSYbWB7TZNOqDHHNws4pPIyZNWucldDdcXSuGDS+H4Z9k9eOYaCwNtTKzBL7b8ST Ap0woJ573HP9d7CmPCiYEwlU9B/UdfBAHIgy0SeVmhiVuUFzZrjCI5DFoI+W9Losa+ri 544vDYRIipM9UMnvKP90GivezTOtuZcCW0m2DjbsjLDfC614ROUmqh4/izg9VqlcQEko jmm3C1T2gi3hU6lRZNwYse6KbfQPOGevPymK+8QVhg6CYzZfOHkUnpE1FtSvELCuZ8tw eJuw== Received: by 10.224.181.16 with SMTP id bw16mr8919328qab.18.1341032877201; Fri, 29 Jun 2012 22:07:57 -0700 (PDT) Received: from x980.domain_not_set.invalid (h184-61-124-30.altnnh.dsl.dynamic.tds.net. [184.61.124.30]) by mx.google.com with ESMTPS id fx5sm15104964qab.14.2012.06.29.22.07.55 (version=SSLv3 cipher=OTHER); Fri, 29 Jun 2012 22:07:56 -0700 (PDT) From: Len Brown To: linux-acpi@vger.kernel.org, linux-pm@lists.linux-foundation.org Cc: linux-kernel@vger.kernel.org, Feng Tang , Len Brown Subject: [PATCH 3/8] ACPI: Make acpi_skip_timer_override cover all source_irq==0 cases Date: Sat, 30 Jun 2012 01:07:30 -0400 Message-Id: X-Mailer: git-send-email 1.7.11.1.104.ge7b44f1 In-Reply-To: <1341032855-27139-1-git-send-email-lenb@kernel.org> References: <1341032855-27139-1-git-send-email-lenb@kernel.org> In-Reply-To: <9f132652d94c96476b0b0a8caf0c10e96ab10fa8.1341032550.git.len.brown@intel.com> References: <9f132652d94c96476b0b0a8caf0c10e96ab10fa8.1341032550.git.len.brown@intel.com> Reply-To: Len Brown Organization: Intel Open Source Technology Center Sender: linux-acpi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-acpi@vger.kernel.org From: Feng Tang Currently when acpi_skip_timer_override is set, it only cover the (source_irq == 0 && global_irq == 2) cases. While there is also platform which need use this option and its global_irq is not 2. This patch will extend acpi_skip_timer_override to cover all timer overriding cases as long as the source irq is 0. This is the first part of a fix to kernel bug bugzilla 40002: "IRQ 0 assigned to VGA" https://bugzilla.kernel.org/show_bug.cgi?id=40002 Reported-and-tested-by: Szymon Kowalczyk Signed-off-by: Feng Tang Signed-off-by: Len Brown --- arch/x86/kernel/acpi/boot.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 8afb693..e7c698e 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c @@ -422,12 +422,14 @@ acpi_parse_int_src_ovr(struct acpi_subtable_header * header, return 0; } - if (intsrc->source_irq == 0 && intsrc->global_irq == 2) { + if (intsrc->source_irq == 0) { if (acpi_skip_timer_override) { - printk(PREFIX "BIOS IRQ0 pin2 override ignored.\n"); + printk(PREFIX "BIOS IRQ0 override ignored.\n"); return 0; } - if (acpi_fix_pin2_polarity && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) { + + if ((intsrc->global_irq == 2) && acpi_fix_pin2_polarity + && (intsrc->inti_flags & ACPI_MADT_POLARITY_MASK)) { intsrc->inti_flags &= ~ACPI_MADT_POLARITY_MASK; printk(PREFIX "BIOS IRQ0 pin2 override: forcing polarity to high active.\n"); } @@ -1334,7 +1336,7 @@ static int __init dmi_disable_acpi(const struct dmi_system_id *d) } /* - * Force ignoring BIOS IRQ0 pin2 override + * Force ignoring BIOS IRQ0 override */ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) { @@ -1344,7 +1346,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) */ if (!acpi_skip_timer_override) { WARN(1, KERN_ERR "ati_ixp4x0 quirk not complete.\n"); - pr_notice("%s detected: Ignoring BIOS IRQ0 pin2 override\n", + pr_notice("%s detected: Ignoring BIOS IRQ0 override\n", d->ident); acpi_skip_timer_override = 1; } @@ -1438,7 +1440,7 @@ static struct dmi_system_id __initdata acpi_dmi_table_late[] = { * is enabled. This input is incorrectly designated the * ISA IRQ 0 via an interrupt source override even though * it is wired to the output of the master 8259A and INTIN0 - * is not connected at all. Force ignoring BIOS IRQ0 pin2 + * is not connected at all. Force ignoring BIOS IRQ0 * override in that cases. */ {