linux-acpi.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yinghai Lu <yinghai@kernel.org>
To: Len Brown <lenb@kernel.org>, Ingo Molnar <mingo@elte.hu>,
	Thomas Gleixner <tglx@linutronix.de>,
	"H. Peter Anvin" <hpa@zytor.com>,
	Jesse Barnes <jbarnes@virtuousgeek.org>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Bjorn Helgaas <bjorn.helgaas@hp.com>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
	ACPI Devel Maling List <linux-acpi@vger.kernel.org>,
	linux-pci@vger.kernel.org
Subject: Re: [PATCH] x86/acpi: calling mp_config_acpi_gsi in mp_register_gsi
Date: Sun, 26 Apr 2009 16:25:40 -0700	[thread overview]
Message-ID: <49F4ED74.1040900@kernel.org> (raw)
In-Reply-To: <49F4D84E.4030401@kernel.org>

it seems it still have some problem. will have -v2.

YH

Yinghai Lu wrote:
> it seems that change about calling mp_config_acpi_gsi in acpi_pci_irq_enable()
> never get into mainline.
> 
> actually we could call that in mp_register_gsi with struct device...
> also could make mp_config_acpi_gsi to be static
> 
> [Impact: make update_mptable working]
> 
> Signed-off-by: Yinghai Lu <yinghai@kernel.org>
> 
> ---
>  arch/x86/include/asm/mpspec.h |    9 ------
>  arch/x86/kernel/acpi/boot.c   |   62 ++++++++++++++++++++++++------------------
>  2 files changed, 36 insertions(+), 35 deletions(-)
> 
> Index: linux-2.6/arch/x86/include/asm/mpspec.h
> ===================================================================
> --- linux-2.6.orig/arch/x86/include/asm/mpspec.h
> +++ linux-2.6/arch/x86/include/asm/mpspec.h
> @@ -77,17 +77,8 @@ extern int mp_register_gsi(struct device
>  				 int active_high_low);
>  extern int acpi_probe_gsi(void);
>  #ifdef CONFIG_X86_IO_APIC
> -extern int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
> -				u32 gsi, int triggering, int polarity);
>  extern int mp_find_ioapic(int gsi);
>  extern int mp_find_ioapic_pin(int ioapic, int gsi);
> -#else
> -static inline int
> -mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
> -		   u32 gsi, int triggering, int polarity)
> -{
> -	return 0;
> -}
>  #endif
>  #else /* !CONFIG_ACPI: */
>  static inline int acpi_probe_gsi(void)
> Index: linux-2.6/arch/x86/kernel/acpi/boot.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c
> +++ linux-2.6/arch/x86/kernel/acpi/boot.c
> @@ -33,6 +33,7 @@
>  #include <linux/irq.h>
>  #include <linux/bootmem.h>
>  #include <linux/ioport.h>
> +#include <linux/pci.h>
>  
>  #include <asm/pgtable.h>
>  #include <asm/io_apic.h>
> @@ -1158,6 +1159,40 @@ void __init mp_config_acpi_legacy_irqs(v
>  	}
>  }
>  
> +static int mp_config_acpi_gsi(struct device *dev, u32 gsi, int triggering,
> +			int polarity)
> +{
> +#ifdef CONFIG_X86_MPPARSE
> +	struct mpc_intsrc mp_irq;
> +	struct pci_dev *pdev;
> +	unsigned char number;
> +	unsigned int devfn;
> +	int ioapic;
> +	u8 pin;
> +
> +	if (!acpi_ioapic)
> +		return 0;
> +
> +	pdev = to_pci_dev(dev);
> +	number = pdev->bus->number;
> +	devfn = pdev->devfn;
> +	pin = pdev->pin;
> +	/* print the entry should happen on mptable identically */
> +	mp_irq.type = MP_INTSRC;
> +	mp_irq.irqtype = mp_INT;
> +	mp_irq.irqflag = (triggering == ACPI_EDGE_SENSITIVE ? 4 : 0x0c) |
> +				(polarity == ACPI_ACTIVE_HIGH ? 1 : 3);
> +	mp_irq.srcbus = number;
> +	mp_irq.srcbusirq = (((devfn >> 3) & 0x1f) << 2) | ((pin - 1) & 3);
> +	ioapic = mp_find_ioapic(gsi);
> +	mp_irq.dstapic = mp_ioapic_routing[ioapic].apic_id;
> +	mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi);
> +
> +	save_mp_irq(&mp_irq);
> +#endif
> +	return 0;
> +}
> +
>  int mp_register_gsi(struct device *dev, u32 gsi, int triggering, int polarity)
>  {
>  	int ioapic;
> @@ -1189,6 +1224,7 @@ int mp_register_gsi(struct device *dev,
>  		       ioapic_pin);
>  		return gsi;
>  	}
> +	mp_config_acpi_gsi(dev, gsi, triggering, polarity);
>  
>  	/*
>  	 * Avoid pin reprogramming.  PRTs typically include entries
> @@ -1208,32 +1244,6 @@ int mp_register_gsi(struct device *dev,
>  	return gsi;
>  }
>  
> -int mp_config_acpi_gsi(unsigned char number, unsigned int devfn, u8 pin,
> -			u32 gsi, int triggering, int polarity)
> -{
> -#ifdef CONFIG_X86_MPPARSE
> -	struct mpc_intsrc mp_irq;
> -	int ioapic;
> -
> -	if (!acpi_ioapic)
> -		return 0;
> -
> -	/* print the entry should happen on mptable identically */
> -	mp_irq.type = MP_INTSRC;
> -	mp_irq.irqtype = mp_INT;
> -	mp_irq.irqflag = (triggering == ACPI_EDGE_SENSITIVE ? 4 : 0x0c) |
> -				(polarity == ACPI_ACTIVE_HIGH ? 1 : 3);
> -	mp_irq.srcbus = number;
> -	mp_irq.srcbusirq = (((devfn >> 3) & 0x1f) << 2) | ((pin - 1) & 3);
> -	ioapic = mp_find_ioapic(gsi);
> -	mp_irq.dstapic = mp_ioapic_routing[ioapic].apic_id;
> -	mp_irq.dstirq = mp_find_ioapic_pin(ioapic, gsi);
> -
> -	save_mp_irq(&mp_irq);
> -#endif
> -	return 0;
> -}
> -
>  /*
>   * Parse IOAPIC related entries in MADT
>   * returns 0 on success, < 0 on error
> 

  reply	other threads:[~2009-04-26 23:25 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <49E68C41.4020801@kernel.org>
     [not found] ` <20090416090315.GF9813@elte.hu>
     [not found]   ` <49E802CE.5030406@kernel.org>
2009-04-17  4:23     ` [PATCH 6/9] irq: make io_apic_set_pci_routing to take device Yinghai Lu
2009-04-23  4:42       ` Len Brown
2009-04-26 21:53         ` [PATCH] x86/acpi: remove compress irq trick for 32bit Yinghai Lu
2009-04-26 21:55           ` [PATCH] x86/acpi: calling mp_config_acpi_gsi in mp_register_gsi Yinghai Lu
2009-04-26 23:25             ` Yinghai Lu [this message]
2009-04-27  1:12             ` [PATCH] x86/acpi: calling mp_config_acpi_gsi in mp_register_gsi -v2 Yinghai Lu
2009-04-27  3:30           ` [PATCH] x86/acpi: remove compress irq trick for 32bit Ingo Molnar
2009-05-14 15:41           ` Len Brown
2009-05-15 13:06             ` Ingo Molnar
2009-04-28  1:01       ` [PATCH 6/9] irq: make io_apic_set_pci_routing to take device Yinghai Lu

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=49F4ED74.1040900@kernel.org \
    --to=yinghai@kernel.org \
    --cc=akpm@linux-foundation.org \
    --cc=bjorn.helgaas@hp.com \
    --cc=hpa@zytor.com \
    --cc=jbarnes@virtuousgeek.org \
    --cc=lenb@kernel.org \
    --cc=linux-acpi@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-pci@vger.kernel.org \
    --cc=mingo@elte.hu \
    --cc=tglx@linutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).