lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <49F4ED74.1040900@kernel.org>
Date:	Sun, 26 Apr 2009 16:25:40 -0700
From:	Yinghai Lu <yinghai@...nel.org>
To:	Len Brown <lenb@...nel.org>, Ingo Molnar <mingo@...e.hu>,
	Thomas Gleixner <tglx@...utronix.de>,
	"H. Peter Anvin" <hpa@...or.com>,
	Jesse Barnes <jbarnes@...tuousgeek.org>
CC:	Andrew Morton <akpm@...ux-foundation.org>,
	Bjorn Helgaas <bjorn.helgaas@...com>,
	"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
	ACPI Devel Maling List <linux-acpi@...r.kernel.org>,
	linux-pci@...r.kernel.org
Subject: Re: [PATCH] x86/acpi: calling mp_config_acpi_gsi in mp_register_gsi

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@...nel.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
> 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ