diff mbox

Replace acpi_gbl_FADT.sci_interrupt with two functions in some places.

Message ID 1304403041.3179.29.camel@lantianyu-ws (mailing list archive)
State New, archived
Headers show

Commit Message

lan,Tianyu May 3, 2011, 6:10 a.m. UTC
Some places use the acpi_gbl_FADT.sci_interrupt directly to get the ACPI SCI.ACPI SCI will not only be stored in the FADT. 
So this patch replaces acpi_gbl_FADT.sci_interrupt with two functions for getting and setting.

Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
---
 arch/x86/kernel/acpi/boot.c                  |    8 ++---
 drivers/acpi/acpica/evgpeinit.c              |    5 +--
 drivers/acpi/acpica/evgpeutil.c              |    4 +-
 drivers/acpi/acpica/evsci.c                  |    4 +-
 drivers/acpi/acpica/evxface.c                |   38 +++++++++++++++++++++++++++
 drivers/acpi/bus.c                           |    4 +-
 drivers/acpi/osl.c                           |    6 ++--
 drivers/acpi/pci_link.c                      |    2 -
 drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c |    2 -
 include/acpi/acpixf.h                        |    4 ++
 10 files changed, 59 insertions(+), 18 deletions(-)


---

--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Comments

Lin Ming May 4, 2011, 1:48 a.m. UTC | #1
On Tue, 2011-05-03 at 14:10 +0800, Lan, Tianyu wrote:
> Some places use the acpi_gbl_FADT.sci_interrupt directly to get the ACPI SCI.ACPI SCI will not only be stored in the FADT. 
> So this patch replaces acpi_gbl_FADT.sci_interrupt with two functions for getting and setting.

Some trivial patch style comments,

We usually add "acpi:" prefix to the subject, like

[PATCH] acpi: xxxxx

And if acpica files are also touched, we add "acpi/acpica:" prefix, like

[PATCH] acpi/acpica: xxxx

Another thing, the change logs seems too long for each line, you'd
better split them short for each line. So that makes logs easy to read.

Thanks,
Lin Ming

> 
> Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> ---
>  arch/x86/kernel/acpi/boot.c                  |    8 ++---
>  drivers/acpi/acpica/evgpeinit.c              |    5 +--
>  drivers/acpi/acpica/evgpeutil.c              |    4 +-
>  drivers/acpi/acpica/evsci.c                  |    4 +-
>  drivers/acpi/acpica/evxface.c                |   38 +++++++++++++++++++++++++++
>  drivers/acpi/bus.c                           |    4 +-
>  drivers/acpi/osl.c                           |    6 ++--
>  drivers/acpi/pci_link.c                      |    2 -
>  drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c |    2 -
>  include/acpi/acpixf.h                        |    4 ++
>  10 files changed, 59 insertions(+), 18 deletions(-)
> 
> Index: linux-2.6/arch/x86/kernel/acpi/boot.c
> ===================================================================
> --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c	2011-05-03 10:19:00.163029998 +0800
> +++ linux-2.6/arch/x86/kernel/acpi/boot.c	2011-05-03 10:20:50.833030004 +0800
> @@ -408,7 +408,7 @@
>  
>  	acpi_table_print_madt_entry(header);
>  
> -	if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
> +	if (intsrc->source_irq == acpi_get_sci_interrupt()) {
>  		acpi_sci_ioapic_setup(intsrc->source_irq,
>  				      intsrc->inti_flags & ACPI_MADT_POLARITY_MASK,
>  				      (intsrc->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2,
> @@ -1100,7 +1100,7 @@
>  		return gsi;
>  
>  	/* Don't set up the ACPI SCI because it's already set up */
> -	if (acpi_gbl_FADT.sci_interrupt == gsi)
> +	if (acpi_get_sci_interrupt() == gsi)
>  		return gsi;
>  
>  	ioapic = mp_find_ioapic(gsi);
> @@ -1184,8 +1184,8 @@
>  	 * pretend we got one so we can set the SCI flags.
>  	 */
>  	if (!acpi_sci_override_gsi)
> -		acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
> -				      acpi_gbl_FADT.sci_interrupt);
> +		acpi_sci_ioapic_setup(acpi_get_sci_interrupt(), 0, 0,
> +				      acpi_get_sci_interrupt());
>  
>  	/* Fill in identity legacy mappings where no override */
>  	mp_config_acpi_legacy_irqs();
> Index: linux-2.6/drivers/acpi/acpica/evgpeinit.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/acpica/evgpeinit.c	2011-05-03 10:19:00.243029997 +0800
> +++ linux-2.6/drivers/acpi/acpica/evgpeinit.c	2011-05-03 10:20:50.833030004 +0800
> @@ -131,7 +131,7 @@
>  		status = acpi_ev_create_gpe_block(acpi_gbl_fadt_gpe_device,
>  						  &acpi_gbl_FADT.xgpe0_block,
>  						  register_count0, 0,
> -						  acpi_gbl_FADT.sci_interrupt,
> +						  acpi_get_sci_interrupt(),
>  						  &acpi_gbl_gpe_fadt_blocks[0]);
>  
>  		if (ACPI_FAILURE(status)) {
> @@ -170,8 +170,7 @@
>  						     &acpi_gbl_FADT.xgpe1_block,
>  						     register_count1,
>  						     acpi_gbl_FADT.gpe1_base,
> -						     acpi_gbl_FADT.
> -						     sci_interrupt,
> +	   					     acpi_get_sci_interrupt(),
>  						     &acpi_gbl_gpe_fadt_blocks
>  						     [1]);
>  
> Index: linux-2.6/drivers/acpi/acpica/evgpeutil.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/acpica/evgpeutil.c	2011-05-03 10:19:00.213030003 +0800
> +++ linux-2.6/drivers/acpi/acpica/evgpeutil.c	2011-05-03 10:20:50.833030004 +0800
> @@ -253,7 +253,7 @@
>  
>  	/* Install new interrupt handler if not SCI_INT */
>  
> -	if (interrupt_number != acpi_gbl_FADT.sci_interrupt) {
> +	if (interrupt_number != acpi_get_sci_interrupt()) {
>  		status = acpi_os_install_interrupt_handler(interrupt_number,
>  							   acpi_ev_gpe_xrupt_handler,
>  							   gpe_xrupt);
> @@ -290,7 +290,7 @@
>  
>  	/* We never want to remove the SCI interrupt handler */
>  
> -	if (gpe_xrupt->interrupt_number == acpi_gbl_FADT.sci_interrupt) {
> +	if (gpe_xrupt->interrupt_number == acpi_get_sci_interrupt()) {
>  		gpe_xrupt->gpe_block_list_head = NULL;
>  		return_ACPI_STATUS(AE_OK);
>  	}
> Index: linux-2.6/drivers/acpi/acpica/evsci.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/acpica/evsci.c	2011-05-03 10:19:00.223030004 +0800
> +++ linux-2.6/drivers/acpi/acpica/evsci.c	2011-05-03 10:20:50.833030004 +0800
> @@ -142,7 +142,7 @@
>  	ACPI_FUNCTION_TRACE(ev_install_sci_handler);
>  
>  	status =
> -	    acpi_os_install_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
> +	    acpi_os_install_interrupt_handler((u32) acpi_get_sci_interrupt(),
>  					      acpi_ev_sci_xrupt_handler,
>  					      acpi_gbl_gpe_xrupt_list_head);
>  	return_ACPI_STATUS(status);
> @@ -176,7 +176,7 @@
>  	/* Just let the OS remove the handler and disable the level */
>  
>  	status =
> -	    acpi_os_remove_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
> +	    acpi_os_remove_interrupt_handler((u32) acpi_get_sci_interrupt(),
>  					     acpi_ev_sci_xrupt_handler);
>  
>  	return_ACPI_STATUS(status);
> Index: linux-2.6/drivers/acpi/acpica/evxface.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/acpica/evxface.c	2011-05-03 10:19:00.213030003 +0800
> +++ linux-2.6/drivers/acpi/acpica/evxface.c	2011-05-03 10:20:50.833030004 +0800
> @@ -983,3 +983,41 @@
>  }
>  
>  ACPI_EXPORT_SYMBOL(acpi_release_global_lock)
> +
> +/*******************************************************************************
> + *
> + * FUNCTION:    acpi_get_sci_interrupt
> + *
> + * PARAMETERS:  none
> + *
> + * RETURN:      SCI Interrupt
> + *
> + * DESCRIPTION: Return the ACPI SCI interrupt
> + *
> + ******************************************************************************/
> +u16 acpi_get_sci_interrupt(void)
> +{
> +	return acpi_gbl_FADT.sci_interrupt;
> +}
> +
> +ACPI_EXPORT_SYMBOL(acpi_get_sci_interrupt)
> +				
> +/*******************************************************************************
> +		*
> +		* FUNCTION:    acpi_set_sci_interrupt
> +		*
> +		* PARAMETERS:  override sci irq
> +		*
> +		* RETURN:      status
> +		*
> +		* DESCRIPTION: Set the ACPI SCI interrupt
> +		*
> + ******************************************************************************/
> +acpi_status acpi_set_sci_interrupt(u16 irq)
> +{
> +	acpi_gbl_FADT.sci_interrupt = irq;
> +	return AE_OK;
> +}
> +
> +ACPI_EXPORT_SYMBOL(acpi_set_sci_interrupt)		
> +
> Index: linux-2.6/drivers/acpi/bus.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/bus.c	2011-05-03 10:19:00.203030002 +0800
> +++ linux-2.6/drivers/acpi/bus.c	2011-05-03 10:20:50.833030004 +0800
> @@ -890,14 +890,14 @@
>  			acpi_sci_flags |= ACPI_MADT_TRIGGER_LEVEL;
>  		}
>  		/* Set PIC-mode SCI trigger type */
> -		acpi_pic_sci_set_trigger(acpi_gbl_FADT.sci_interrupt,
> +		acpi_pic_sci_set_trigger(acpi_get_sci_interrupt(),
>  					 (acpi_sci_flags & ACPI_MADT_TRIGGER_MASK) >> 2);
>  	} else {
>  		/*
>  		 * now that acpi_gbl_FADT is initialized,
>  		 * update it with result from INT_SRC_OVR parsing
>  		 */
> -		acpi_gbl_FADT.sci_interrupt = acpi_sci_override_gsi;
> +		acpi_set_sci_interrupt(acpi_sci_override_gsi);
>  	}
>  #endif
>  
> Index: linux-2.6/drivers/acpi/osl.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/osl.c	2011-05-03 10:19:48.993030009 +0800
> +++ linux-2.6/drivers/acpi/osl.c	2011-05-03 10:20:50.833030004 +0800
> @@ -534,7 +534,7 @@
>  	 * ACPI interrupts different from the SCI in our copy of the FADT are
>  	 * not supported.
>  	 */
> -	if (gsi != acpi_gbl_FADT.sci_interrupt)
> +	if (gsi != acpi_get_sci_interrupt())
>  		return AE_BAD_PARAMETER;
>  
>  	if (acpi_irq_handler)
> @@ -559,7 +559,7 @@
>  
>  acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
>  {
> -	if (irq != acpi_gbl_FADT.sci_interrupt)
> +	if (irq != acpi_get_sci_interrupt())
>  		return AE_BAD_PARAMETER;
>  
>  	free_irq(irq, acpi_irq);
> @@ -1622,7 +1622,7 @@
>  acpi_status acpi_os_terminate(void)
>  {
>  	if (acpi_irq_handler) {
> -		acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
> +		acpi_os_remove_interrupt_handler(acpi_get_sci_interrupt(),
>  						 acpi_irq_handler);
>  	}
>  
> Index: linux-2.6/drivers/acpi/pci_link.c
> ===================================================================
> --- linux-2.6.orig/drivers/acpi/pci_link.c	2011-05-03 10:19:00.203030002 +0800
> +++ linux-2.6/drivers/acpi/pci_link.c	2011-05-03 10:20:50.833030004 +0800
> @@ -508,7 +508,7 @@
>  		}
>  	}
>  	/* Add a penalty for the SCI */
> -	acpi_irq_penalty[acpi_gbl_FADT.sci_interrupt] += PIRQ_PENALTY_PCI_USING;
> +	acpi_irq_penalty[acpi_get_sci_interrupt()] += PIRQ_PENALTY_PCI_USING;
>  	return 0;
>  }
>  
> Index: linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c
> ===================================================================
> --- linux-2.6.orig/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c	2011-05-03 10:19:00.193030001 +0800
> +++ linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c	2011-05-03 10:20:50.833030004 +0800
> @@ -104,7 +104,7 @@
>  	pci_dev_put(pdev);
>  
>  	/* we're sharing the IRQ with ACPI */
> -	irq = acpi_gbl_FADT.sci_interrupt;
> +	irq = acpi_get_sci_interrupt();
>  	if (request_irq(irq, &dcon_interrupt, IRQF_SHARED, "DCON", dcon)) {
>  		printk(KERN_ERR PREFIX "DCON (IRQ%d) allocation failed\n", irq);
>  		return 1;
> Index: linux-2.6/include/acpi/acpixf.h
> ===================================================================
> --- linux-2.6.orig/include/acpi/acpixf.h	2011-05-03 10:19:00.253029998 +0800
> +++ linux-2.6/include/acpi/acpixf.h	2011-05-03 10:20:50.833030004 +0800
> @@ -411,6 +411,10 @@
>  acpi_info(const char *module_name,
>  	  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
>  
> +u16 acpi_get_sci_interrupt(void);
> +
> +acpi_status acpi_set_sci_interrupt(u16 irq);
> +
>  /*
>   * Debug output
>   */
> 
> ---
> 


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
lan,Tianyu May 5, 2011, 12:24 a.m. UTC | #2
OK, Thanks for your advices. I will take them.

Best Regards
Lan Tianyu
? 2011-05-04?? 09:48 +0800?Lin Ming???
> On Tue, 2011-05-03 at 14:10 +0800, Lan, Tianyu wrote:
> > Some places use the acpi_gbl_FADT.sci_interrupt directly to get the ACPI SCI.ACPI SCI will not only be stored in the FADT. 
> > So this patch replaces acpi_gbl_FADT.sci_interrupt with two functions for getting and setting.
> 
> Some trivial patch style comments,
> 
> We usually add "acpi:" prefix to the subject, like
> 
> [PATCH] acpi: xxxxx
> 
> And if acpica files are also touched, we add "acpi/acpica:" prefix, like
> 
> [PATCH] acpi/acpica: xxxx
> 
> Another thing, the change logs seems too long for each line, you'd
> better split them short for each line. So that makes logs easy to read.
> 
> Thanks,
> Lin Ming
> 
> > 
> > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> > ---
> >  arch/x86/kernel/acpi/boot.c                  |    8 ++---
> >  drivers/acpi/acpica/evgpeinit.c              |    5 +--
> >  drivers/acpi/acpica/evgpeutil.c              |    4 +-
> >  drivers/acpi/acpica/evsci.c                  |    4 +-
> >  drivers/acpi/acpica/evxface.c                |   38 +++++++++++++++++++++++++++
> >  drivers/acpi/bus.c                           |    4 +-
> >  drivers/acpi/osl.c                           |    6 ++--
> >  drivers/acpi/pci_link.c                      |    2 -
> >  drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c |    2 -
> >  include/acpi/acpixf.h                        |    4 ++
> >  10 files changed, 59 insertions(+), 18 deletions(-)
> > 
> > Index: linux-2.6/arch/x86/kernel/acpi/boot.c
> > ===================================================================
> > --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c	2011-05-03 10:19:00.163029998 +0800
> > +++ linux-2.6/arch/x86/kernel/acpi/boot.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -408,7 +408,7 @@
> >  
> >  	acpi_table_print_madt_entry(header);
> >  
> > -	if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
> > +	if (intsrc->source_irq == acpi_get_sci_interrupt()) {
> >  		acpi_sci_ioapic_setup(intsrc->source_irq,
> >  				      intsrc->inti_flags & ACPI_MADT_POLARITY_MASK,
> >  				      (intsrc->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2,
> > @@ -1100,7 +1100,7 @@
> >  		return gsi;
> >  
> >  	/* Don't set up the ACPI SCI because it's already set up */
> > -	if (acpi_gbl_FADT.sci_interrupt == gsi)
> > +	if (acpi_get_sci_interrupt() == gsi)
> >  		return gsi;
> >  
> >  	ioapic = mp_find_ioapic(gsi);
> > @@ -1184,8 +1184,8 @@
> >  	 * pretend we got one so we can set the SCI flags.
> >  	 */
> >  	if (!acpi_sci_override_gsi)
> > -		acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
> > -				      acpi_gbl_FADT.sci_interrupt);
> > +		acpi_sci_ioapic_setup(acpi_get_sci_interrupt(), 0, 0,
> > +				      acpi_get_sci_interrupt());
> >  
> >  	/* Fill in identity legacy mappings where no override */
> >  	mp_config_acpi_legacy_irqs();
> > Index: linux-2.6/drivers/acpi/acpica/evgpeinit.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/acpica/evgpeinit.c	2011-05-03 10:19:00.243029997 +0800
> > +++ linux-2.6/drivers/acpi/acpica/evgpeinit.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -131,7 +131,7 @@
> >  		status = acpi_ev_create_gpe_block(acpi_gbl_fadt_gpe_device,
> >  						  &acpi_gbl_FADT.xgpe0_block,
> >  						  register_count0, 0,
> > -						  acpi_gbl_FADT.sci_interrupt,
> > +						  acpi_get_sci_interrupt(),
> >  						  &acpi_gbl_gpe_fadt_blocks[0]);
> >  
> >  		if (ACPI_FAILURE(status)) {
> > @@ -170,8 +170,7 @@
> >  						     &acpi_gbl_FADT.xgpe1_block,
> >  						     register_count1,
> >  						     acpi_gbl_FADT.gpe1_base,
> > -						     acpi_gbl_FADT.
> > -						     sci_interrupt,
> > +	   					     acpi_get_sci_interrupt(),
> >  						     &acpi_gbl_gpe_fadt_blocks
> >  						     [1]);
> >  
> > Index: linux-2.6/drivers/acpi/acpica/evgpeutil.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/acpica/evgpeutil.c	2011-05-03 10:19:00.213030003 +0800
> > +++ linux-2.6/drivers/acpi/acpica/evgpeutil.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -253,7 +253,7 @@
> >  
> >  	/* Install new interrupt handler if not SCI_INT */
> >  
> > -	if (interrupt_number != acpi_gbl_FADT.sci_interrupt) {
> > +	if (interrupt_number != acpi_get_sci_interrupt()) {
> >  		status = acpi_os_install_interrupt_handler(interrupt_number,
> >  							   acpi_ev_gpe_xrupt_handler,
> >  							   gpe_xrupt);
> > @@ -290,7 +290,7 @@
> >  
> >  	/* We never want to remove the SCI interrupt handler */
> >  
> > -	if (gpe_xrupt->interrupt_number == acpi_gbl_FADT.sci_interrupt) {
> > +	if (gpe_xrupt->interrupt_number == acpi_get_sci_interrupt()) {
> >  		gpe_xrupt->gpe_block_list_head = NULL;
> >  		return_ACPI_STATUS(AE_OK);
> >  	}
> > Index: linux-2.6/drivers/acpi/acpica/evsci.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/acpica/evsci.c	2011-05-03 10:19:00.223030004 +0800
> > +++ linux-2.6/drivers/acpi/acpica/evsci.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -142,7 +142,7 @@
> >  	ACPI_FUNCTION_TRACE(ev_install_sci_handler);
> >  
> >  	status =
> > -	    acpi_os_install_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
> > +	    acpi_os_install_interrupt_handler((u32) acpi_get_sci_interrupt(),
> >  					      acpi_ev_sci_xrupt_handler,
> >  					      acpi_gbl_gpe_xrupt_list_head);
> >  	return_ACPI_STATUS(status);
> > @@ -176,7 +176,7 @@
> >  	/* Just let the OS remove the handler and disable the level */
> >  
> >  	status =
> > -	    acpi_os_remove_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
> > +	    acpi_os_remove_interrupt_handler((u32) acpi_get_sci_interrupt(),
> >  					     acpi_ev_sci_xrupt_handler);
> >  
> >  	return_ACPI_STATUS(status);
> > Index: linux-2.6/drivers/acpi/acpica/evxface.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/acpica/evxface.c	2011-05-03 10:19:00.213030003 +0800
> > +++ linux-2.6/drivers/acpi/acpica/evxface.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -983,3 +983,41 @@
> >  }
> >  
> >  ACPI_EXPORT_SYMBOL(acpi_release_global_lock)
> > +
> > +/*******************************************************************************
> > + *
> > + * FUNCTION:    acpi_get_sci_interrupt
> > + *
> > + * PARAMETERS:  none
> > + *
> > + * RETURN:      SCI Interrupt
> > + *
> > + * DESCRIPTION: Return the ACPI SCI interrupt
> > + *
> > + ******************************************************************************/
> > +u16 acpi_get_sci_interrupt(void)
> > +{
> > +	return acpi_gbl_FADT.sci_interrupt;
> > +}
> > +
> > +ACPI_EXPORT_SYMBOL(acpi_get_sci_interrupt)
> > +				
> > +/*******************************************************************************
> > +		*
> > +		* FUNCTION:    acpi_set_sci_interrupt
> > +		*
> > +		* PARAMETERS:  override sci irq
> > +		*
> > +		* RETURN:      status
> > +		*
> > +		* DESCRIPTION: Set the ACPI SCI interrupt
> > +		*
> > + ******************************************************************************/
> > +acpi_status acpi_set_sci_interrupt(u16 irq)
> > +{
> > +	acpi_gbl_FADT.sci_interrupt = irq;
> > +	return AE_OK;
> > +}
> > +
> > +ACPI_EXPORT_SYMBOL(acpi_set_sci_interrupt)		
> > +
> > Index: linux-2.6/drivers/acpi/bus.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/bus.c	2011-05-03 10:19:00.203030002 +0800
> > +++ linux-2.6/drivers/acpi/bus.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -890,14 +890,14 @@
> >  			acpi_sci_flags |= ACPI_MADT_TRIGGER_LEVEL;
> >  		}
> >  		/* Set PIC-mode SCI trigger type */
> > -		acpi_pic_sci_set_trigger(acpi_gbl_FADT.sci_interrupt,
> > +		acpi_pic_sci_set_trigger(acpi_get_sci_interrupt(),
> >  					 (acpi_sci_flags & ACPI_MADT_TRIGGER_MASK) >> 2);
> >  	} else {
> >  		/*
> >  		 * now that acpi_gbl_FADT is initialized,
> >  		 * update it with result from INT_SRC_OVR parsing
> >  		 */
> > -		acpi_gbl_FADT.sci_interrupt = acpi_sci_override_gsi;
> > +		acpi_set_sci_interrupt(acpi_sci_override_gsi);
> >  	}
> >  #endif
> >  
> > Index: linux-2.6/drivers/acpi/osl.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/osl.c	2011-05-03 10:19:48.993030009 +0800
> > +++ linux-2.6/drivers/acpi/osl.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -534,7 +534,7 @@
> >  	 * ACPI interrupts different from the SCI in our copy of the FADT are
> >  	 * not supported.
> >  	 */
> > -	if (gsi != acpi_gbl_FADT.sci_interrupt)
> > +	if (gsi != acpi_get_sci_interrupt())
> >  		return AE_BAD_PARAMETER;
> >  
> >  	if (acpi_irq_handler)
> > @@ -559,7 +559,7 @@
> >  
> >  acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
> >  {
> > -	if (irq != acpi_gbl_FADT.sci_interrupt)
> > +	if (irq != acpi_get_sci_interrupt())
> >  		return AE_BAD_PARAMETER;
> >  
> >  	free_irq(irq, acpi_irq);
> > @@ -1622,7 +1622,7 @@
> >  acpi_status acpi_os_terminate(void)
> >  {
> >  	if (acpi_irq_handler) {
> > -		acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
> > +		acpi_os_remove_interrupt_handler(acpi_get_sci_interrupt(),
> >  						 acpi_irq_handler);
> >  	}
> >  
> > Index: linux-2.6/drivers/acpi/pci_link.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/acpi/pci_link.c	2011-05-03 10:19:00.203030002 +0800
> > +++ linux-2.6/drivers/acpi/pci_link.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -508,7 +508,7 @@
> >  		}
> >  	}
> >  	/* Add a penalty for the SCI */
> > -	acpi_irq_penalty[acpi_gbl_FADT.sci_interrupt] += PIRQ_PENALTY_PCI_USING;
> > +	acpi_irq_penalty[acpi_get_sci_interrupt()] += PIRQ_PENALTY_PCI_USING;
> >  	return 0;
> >  }
> >  
> > Index: linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c	2011-05-03 10:19:00.193030001 +0800
> > +++ linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c	2011-05-03 10:20:50.833030004 +0800
> > @@ -104,7 +104,7 @@
> >  	pci_dev_put(pdev);
> >  
> >  	/* we're sharing the IRQ with ACPI */
> > -	irq = acpi_gbl_FADT.sci_interrupt;
> > +	irq = acpi_get_sci_interrupt();
> >  	if (request_irq(irq, &dcon_interrupt, IRQF_SHARED, "DCON", dcon)) {
> >  		printk(KERN_ERR PREFIX "DCON (IRQ%d) allocation failed\n", irq);
> >  		return 1;
> > Index: linux-2.6/include/acpi/acpixf.h
> > ===================================================================
> > --- linux-2.6.orig/include/acpi/acpixf.h	2011-05-03 10:19:00.253029998 +0800
> > +++ linux-2.6/include/acpi/acpixf.h	2011-05-03 10:20:50.833030004 +0800
> > @@ -411,6 +411,10 @@
> >  acpi_info(const char *module_name,
> >  	  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
> >  
> > +u16 acpi_get_sci_interrupt(void);
> > +
> > +acpi_status acpi_set_sci_interrupt(u16 irq);
> > +
> >  /*
> >   * Debug output
> >   */
> > 
> > ---
> > 
> 
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html


--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjorn Helgaas May 5, 2011, 5:30 p.m. UTC | #3
>> On Tue, 2011-05-03 at 14:10 +0800, Lan, Tianyu wrote:
>> > Some places use the acpi_gbl_FADT.sci_interrupt directly to get the ACPI SCI.ACPI SCI will not only be stored in the FADT.

You need at least one space after a sentence-ending period, e.g., "...
get the ACPI SCI.  ACPI SCI will not ..."

I can't figure out the intent of the patch as a whole.  It seems to be
connected with "ACPI SCI will not only be stored in the FADT," but
that isn't clear enough to tell me what's going on.  Is there a
scenario where we'll want to look somewhere else first, then fall back
to looking at the FADT?  This patch didn't implement anything like
that, but maybe you intend future changes to acpi_get_sci_interrupt()
and acpi_set_sci_interrupt()?

I think the name "acpi_get_sci_interrupt()" is somewhat redundant, or
at least confusing: "SCI" means "system control interrupt," so you're
really saying "acpi_get_system_control_interrupt_interrupt."  I guess
the first "interrupt" refers to the mechanism itself, and the second
to the vector number or GSI.  Maybe "acpi_get_sci_gsi()" would be
better?

There's also an fadt->sci_interrupt reference in
arch/ia64/kernel/acpi.c.  I don't know the intent of your patch or
whether that intent applies to ia64 as well as x86, but it's always
better if you can converge things rather than make x86 and ia64 more
different.

Unless I missed something, this patch makes no functional change.
That's fine, especially if you're getting ready for some future work,
but it's worth mentioning that this patch is reorganization only.

Bjorn

>> > So this patch replaces acpi_gbl_FADT.sci_interrupt with two functions for getting and setting.
>>
>> Some trivial patch style comments,
>>
>> We usually add "acpi:" prefix to the subject, like
>>
>> [PATCH] acpi: xxxxx
>>
>> And if acpica files are also touched, we add "acpi/acpica:" prefix, like
>>
>> [PATCH] acpi/acpica: xxxx
>>
>> Another thing, the change logs seems too long for each line, you'd
>> better split them short for each line. So that makes logs easy to read.
>>
>> Thanks,
>> Lin Ming
>>
>> >
>> > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
>> > ---
>> >  arch/x86/kernel/acpi/boot.c                  |    8 ++---
>> >  drivers/acpi/acpica/evgpeinit.c              |    5 +--
>> >  drivers/acpi/acpica/evgpeutil.c              |    4 +-
>> >  drivers/acpi/acpica/evsci.c                  |    4 +-
>> >  drivers/acpi/acpica/evxface.c                |   38 +++++++++++++++++++++++++++
>> >  drivers/acpi/bus.c                           |    4 +-
>> >  drivers/acpi/osl.c                           |    6 ++--
>> >  drivers/acpi/pci_link.c                      |    2 -
>> >  drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c |    2 -
>> >  include/acpi/acpixf.h                        |    4 ++
>> >  10 files changed, 59 insertions(+), 18 deletions(-)
>> >
>> > Index: linux-2.6/arch/x86/kernel/acpi/boot.c
>> > ===================================================================
>> > --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c      2011-05-03 10:19:00.163029998 +0800
>> > +++ linux-2.6/arch/x86/kernel/acpi/boot.c   2011-05-03 10:20:50.833030004 +0800
>> > @@ -408,7 +408,7 @@
>> >
>> >     acpi_table_print_madt_entry(header);
>> >
>> > -   if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
>> > +   if (intsrc->source_irq == acpi_get_sci_interrupt()) {
>> >             acpi_sci_ioapic_setup(intsrc->source_irq,
>> >                                   intsrc->inti_flags & ACPI_MADT_POLARITY_MASK,
>> >                                   (intsrc->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2,
>> > @@ -1100,7 +1100,7 @@
>> >             return gsi;
>> >
>> >     /* Don't set up the ACPI SCI because it's already set up */
>> > -   if (acpi_gbl_FADT.sci_interrupt == gsi)
>> > +   if (acpi_get_sci_interrupt() == gsi)
>> >             return gsi;
>> >
>> >     ioapic = mp_find_ioapic(gsi);
>> > @@ -1184,8 +1184,8 @@
>> >      * pretend we got one so we can set the SCI flags.
>> >      */
>> >     if (!acpi_sci_override_gsi)
>> > -           acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
>> > -                                 acpi_gbl_FADT.sci_interrupt);
>> > +           acpi_sci_ioapic_setup(acpi_get_sci_interrupt(), 0, 0,
>> > +                                 acpi_get_sci_interrupt());
>> >
>> >     /* Fill in identity legacy mappings where no override */
>> >     mp_config_acpi_legacy_irqs();
>> > Index: linux-2.6/drivers/acpi/acpica/evgpeinit.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/acpica/evgpeinit.c  2011-05-03 10:19:00.243029997 +0800
>> > +++ linux-2.6/drivers/acpi/acpica/evgpeinit.c       2011-05-03 10:20:50.833030004 +0800
>> > @@ -131,7 +131,7 @@
>> >             status = acpi_ev_create_gpe_block(acpi_gbl_fadt_gpe_device,
>> >                                               &acpi_gbl_FADT.xgpe0_block,
>> >                                               register_count0, 0,
>> > -                                             acpi_gbl_FADT.sci_interrupt,
>> > +                                             acpi_get_sci_interrupt(),
>> >                                               &acpi_gbl_gpe_fadt_blocks[0]);
>> >
>> >             if (ACPI_FAILURE(status)) {
>> > @@ -170,8 +170,7 @@
>> >                                                  &acpi_gbl_FADT.xgpe1_block,
>> >                                                  register_count1,
>> >                                                  acpi_gbl_FADT.gpe1_base,
>> > -                                                acpi_gbl_FADT.
>> > -                                                sci_interrupt,
>> > +                                                acpi_get_sci_interrupt(),
>> >                                                  &acpi_gbl_gpe_fadt_blocks
>> >                                                  [1]);
>> >
>> > Index: linux-2.6/drivers/acpi/acpica/evgpeutil.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/acpica/evgpeutil.c  2011-05-03 10:19:00.213030003 +0800
>> > +++ linux-2.6/drivers/acpi/acpica/evgpeutil.c       2011-05-03 10:20:50.833030004 +0800
>> > @@ -253,7 +253,7 @@
>> >
>> >     /* Install new interrupt handler if not SCI_INT */
>> >
>> > -   if (interrupt_number != acpi_gbl_FADT.sci_interrupt) {
>> > +   if (interrupt_number != acpi_get_sci_interrupt()) {
>> >             status = acpi_os_install_interrupt_handler(interrupt_number,
>> >                                                        acpi_ev_gpe_xrupt_handler,
>> >                                                        gpe_xrupt);
>> > @@ -290,7 +290,7 @@
>> >
>> >     /* We never want to remove the SCI interrupt handler */
>> >
>> > -   if (gpe_xrupt->interrupt_number == acpi_gbl_FADT.sci_interrupt) {
>> > +   if (gpe_xrupt->interrupt_number == acpi_get_sci_interrupt()) {
>> >             gpe_xrupt->gpe_block_list_head = NULL;
>> >             return_ACPI_STATUS(AE_OK);
>> >     }
>> > Index: linux-2.6/drivers/acpi/acpica/evsci.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/acpica/evsci.c      2011-05-03 10:19:00.223030004 +0800
>> > +++ linux-2.6/drivers/acpi/acpica/evsci.c   2011-05-03 10:20:50.833030004 +0800
>> > @@ -142,7 +142,7 @@
>> >     ACPI_FUNCTION_TRACE(ev_install_sci_handler);
>> >
>> >     status =
>> > -       acpi_os_install_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
>> > +       acpi_os_install_interrupt_handler((u32) acpi_get_sci_interrupt(),
>> >                                           acpi_ev_sci_xrupt_handler,
>> >                                           acpi_gbl_gpe_xrupt_list_head);
>> >     return_ACPI_STATUS(status);
>> > @@ -176,7 +176,7 @@
>> >     /* Just let the OS remove the handler and disable the level */
>> >
>> >     status =
>> > -       acpi_os_remove_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
>> > +       acpi_os_remove_interrupt_handler((u32) acpi_get_sci_interrupt(),
>> >                                          acpi_ev_sci_xrupt_handler);
>> >
>> >     return_ACPI_STATUS(status);
>> > Index: linux-2.6/drivers/acpi/acpica/evxface.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/acpica/evxface.c    2011-05-03 10:19:00.213030003 +0800
>> > +++ linux-2.6/drivers/acpi/acpica/evxface.c 2011-05-03 10:20:50.833030004 +0800
>> > @@ -983,3 +983,41 @@
>> >  }
>> >
>> >  ACPI_EXPORT_SYMBOL(acpi_release_global_lock)
>> > +
>> > +/*******************************************************************************
>> > + *
>> > + * FUNCTION:    acpi_get_sci_interrupt
>> > + *
>> > + * PARAMETERS:  none
>> > + *
>> > + * RETURN:      SCI Interrupt
>> > + *
>> > + * DESCRIPTION: Return the ACPI SCI interrupt
>> > + *
>> > + ******************************************************************************/
>> > +u16 acpi_get_sci_interrupt(void)
>> > +{
>> > +   return acpi_gbl_FADT.sci_interrupt;
>> > +}
>> > +
>> > +ACPI_EXPORT_SYMBOL(acpi_get_sci_interrupt)
>> > +
>> > +/*******************************************************************************
>> > +           *
>> > +           * FUNCTION:    acpi_set_sci_interrupt
>> > +           *
>> > +           * PARAMETERS:  override sci irq
>> > +           *
>> > +           * RETURN:      status
>> > +           *
>> > +           * DESCRIPTION: Set the ACPI SCI interrupt
>> > +           *
>> > + ******************************************************************************/
>> > +acpi_status acpi_set_sci_interrupt(u16 irq)
>> > +{
>> > +   acpi_gbl_FADT.sci_interrupt = irq;
>> > +   return AE_OK;
>> > +}
>> > +
>> > +ACPI_EXPORT_SYMBOL(acpi_set_sci_interrupt)
>> > +
>> > Index: linux-2.6/drivers/acpi/bus.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/bus.c       2011-05-03 10:19:00.203030002 +0800
>> > +++ linux-2.6/drivers/acpi/bus.c    2011-05-03 10:20:50.833030004 +0800
>> > @@ -890,14 +890,14 @@
>> >                     acpi_sci_flags |= ACPI_MADT_TRIGGER_LEVEL;
>> >             }
>> >             /* Set PIC-mode SCI trigger type */
>> > -           acpi_pic_sci_set_trigger(acpi_gbl_FADT.sci_interrupt,
>> > +           acpi_pic_sci_set_trigger(acpi_get_sci_interrupt(),
>> >                                      (acpi_sci_flags & ACPI_MADT_TRIGGER_MASK) >> 2);
>> >     } else {
>> >             /*
>> >              * now that acpi_gbl_FADT is initialized,
>> >              * update it with result from INT_SRC_OVR parsing
>> >              */
>> > -           acpi_gbl_FADT.sci_interrupt = acpi_sci_override_gsi;
>> > +           acpi_set_sci_interrupt(acpi_sci_override_gsi);
>> >     }
>> >  #endif
>> >
>> > Index: linux-2.6/drivers/acpi/osl.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/osl.c       2011-05-03 10:19:48.993030009 +0800
>> > +++ linux-2.6/drivers/acpi/osl.c    2011-05-03 10:20:50.833030004 +0800
>> > @@ -534,7 +534,7 @@
>> >      * ACPI interrupts different from the SCI in our copy of the FADT are
>> >      * not supported.
>> >      */
>> > -   if (gsi != acpi_gbl_FADT.sci_interrupt)
>> > +   if (gsi != acpi_get_sci_interrupt())
>> >             return AE_BAD_PARAMETER;
>> >
>> >     if (acpi_irq_handler)
>> > @@ -559,7 +559,7 @@
>> >
>> >  acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
>> >  {
>> > -   if (irq != acpi_gbl_FADT.sci_interrupt)
>> > +   if (irq != acpi_get_sci_interrupt())
>> >             return AE_BAD_PARAMETER;
>> >
>> >     free_irq(irq, acpi_irq);
>> > @@ -1622,7 +1622,7 @@
>> >  acpi_status acpi_os_terminate(void)
>> >  {
>> >     if (acpi_irq_handler) {
>> > -           acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
>> > +           acpi_os_remove_interrupt_handler(acpi_get_sci_interrupt(),
>> >                                              acpi_irq_handler);
>> >     }
>> >
>> > Index: linux-2.6/drivers/acpi/pci_link.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/acpi/pci_link.c  2011-05-03 10:19:00.203030002 +0800
>> > +++ linux-2.6/drivers/acpi/pci_link.c       2011-05-03 10:20:50.833030004 +0800
>> > @@ -508,7 +508,7 @@
>> >             }
>> >     }
>> >     /* Add a penalty for the SCI */
>> > -   acpi_irq_penalty[acpi_gbl_FADT.sci_interrupt] += PIRQ_PENALTY_PCI_USING;
>> > +   acpi_irq_penalty[acpi_get_sci_interrupt()] += PIRQ_PENALTY_PCI_USING;
>> >     return 0;
>> >  }
>> >
>> > Index: linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c
>> > ===================================================================
>> > --- linux-2.6.orig/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c     2011-05-03 10:19:00.193030001 +0800
>> > +++ linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c  2011-05-03 10:20:50.833030004 +0800
>> > @@ -104,7 +104,7 @@
>> >     pci_dev_put(pdev);
>> >
>> >     /* we're sharing the IRQ with ACPI */
>> > -   irq = acpi_gbl_FADT.sci_interrupt;
>> > +   irq = acpi_get_sci_interrupt();
>> >     if (request_irq(irq, &dcon_interrupt, IRQF_SHARED, "DCON", dcon)) {
>> >             printk(KERN_ERR PREFIX "DCON (IRQ%d) allocation failed\n", irq);
>> >             return 1;
>> > Index: linux-2.6/include/acpi/acpixf.h
>> > ===================================================================
>> > --- linux-2.6.orig/include/acpi/acpixf.h    2011-05-03 10:19:00.253029998 +0800
>> > +++ linux-2.6/include/acpi/acpixf.h 2011-05-03 10:20:50.833030004 +0800
>> > @@ -411,6 +411,10 @@
>> >  acpi_info(const char *module_name,
>> >       u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
>> >
>> > +u16 acpi_get_sci_interrupt(void);
>> > +
>> > +acpi_status acpi_set_sci_interrupt(u16 irq);
>> > +
>> >  /*
>> >   * Debug output
>> >   */
>> >
>> > ---
>> >
>>
>>
>> --
>> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
>> the body of a message to majordomo@vger.kernel.org
>> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
>
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Moore, Robert May 5, 2011, 5:48 p.m. UTC | #4
Bjorn,

It's an ACPI 5.0 thing.

We are going to hold back this patch until 5.0 stabilizes and we integrate this support into the base ACPICA code first.

Bob


> -----Original Message-----
> From: Bjorn Helgaas [mailto:bhelgaas@google.com]
> Sent: Thursday, May 05, 2011 10:31 AM
> To: Lan, Tianyu
> Cc: Lin, Ming M; lenb@kernel.org; linux-acpi@vger.kernel.org; Moore,
> Robert; Zhang, Rui
> Subject: Re: [PATCH] Replace acpi_gbl_FADT.sci_interrupt with two
> functions in some places.
>
> >> On Tue, 2011-05-03 at 14:10 +0800, Lan, Tianyu wrote:
> >> > Some places use the acpi_gbl_FADT.sci_interrupt directly to get
> the ACPI SCI.ACPI SCI will not only be stored in the FADT.
>
> You need at least one space after a sentence-ending period, e.g., "...
> get the ACPI SCI.  ACPI SCI will not ..."
>
> I can't figure out the intent of the patch as a whole.  It seems to be
> connected with "ACPI SCI will not only be stored in the FADT," but
> that isn't clear enough to tell me what's going on.  Is there a
> scenario where we'll want to look somewhere else first, then fall back
> to looking at the FADT?  This patch didn't implement anything like
> that, but maybe you intend future changes to acpi_get_sci_interrupt()
> and acpi_set_sci_interrupt()?
>
> I think the name "acpi_get_sci_interrupt()" is somewhat redundant, or
> at least confusing: "SCI" means "system control interrupt," so you're
> really saying "acpi_get_system_control_interrupt_interrupt."  I guess
> the first "interrupt" refers to the mechanism itself, and the second
> to the vector number or GSI.  Maybe "acpi_get_sci_gsi()" would be
> better?
>
> There's also an fadt->sci_interrupt reference in
> arch/ia64/kernel/acpi.c.  I don't know the intent of your patch or
> whether that intent applies to ia64 as well as x86, but it's always
> better if you can converge things rather than make x86 and ia64 more
> different.
>
> Unless I missed something, this patch makes no functional change.
> That's fine, especially if you're getting ready for some future work,
> but it's worth mentioning that this patch is reorganization only.
>
> Bjorn
>
> >> > So this patch replaces acpi_gbl_FADT.sci_interrupt with two
> functions for getting and setting.
> >>
> >> Some trivial patch style comments,
> >>
> >> We usually add "acpi:" prefix to the subject, like
> >>
> >> [PATCH] acpi: xxxxx
> >>
> >> And if acpica files are also touched, we add "acpi/acpica:" prefix,
> like
> >>
> >> [PATCH] acpi/acpica: xxxx
> >>
> >> Another thing, the change logs seems too long for each line, you'd
> >> better split them short for each line. So that makes logs easy to
> read.
> >>
> >> Thanks,
> >> Lin Ming
> >>
> >> >
> >> > Signed-off-by: Lan Tianyu <tianyu.lan@intel.com>
> >> > ---
> >> >  arch/x86/kernel/acpi/boot.c                  |    8 ++---
> >> >  drivers/acpi/acpica/evgpeinit.c              |    5 +--
> >> >  drivers/acpi/acpica/evgpeutil.c              |    4 +-
> >> >  drivers/acpi/acpica/evsci.c                  |    4 +-
> >> >  drivers/acpi/acpica/evxface.c                |   38
> +++++++++++++++++++++++++++
> >> >  drivers/acpi/bus.c                           |    4 +-
> >> >  drivers/acpi/osl.c                           |    6 ++--
> >> >  drivers/acpi/pci_link.c                      |    2 -
> >> >  drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c |    2 -
> >> >  include/acpi/acpixf.h                        |    4 ++
> >> >  10 files changed, 59 insertions(+), 18 deletions(-)
> >> >
> >> > Index: linux-2.6/arch/x86/kernel/acpi/boot.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/arch/x86/kernel/acpi/boot.c      2011-05-03
> 10:19:00.163029998 +0800
> >> > +++ linux-2.6/arch/x86/kernel/acpi/boot.c   2011-05-03
> 10:20:50.833030004 +0800
> >> > @@ -408,7 +408,7 @@
> >> >
> >> >     acpi_table_print_madt_entry(header);
> >> >
> >> > -   if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
> >> > +   if (intsrc->source_irq == acpi_get_sci_interrupt()) {
> >> >             acpi_sci_ioapic_setup(intsrc->source_irq,
> >> >                                   intsrc->inti_flags &
> ACPI_MADT_POLARITY_MASK,
> >> >                                   (intsrc->inti_flags &
> ACPI_MADT_TRIGGER_MASK) >> 2,
> >> > @@ -1100,7 +1100,7 @@
> >> >             return gsi;
> >> >
> >> >     /* Don't set up the ACPI SCI because it's already set up */
> >> > -   if (acpi_gbl_FADT.sci_interrupt == gsi)
> >> > +   if (acpi_get_sci_interrupt() == gsi)
> >> >             return gsi;
> >> >
> >> >     ioapic = mp_find_ioapic(gsi);
> >> > @@ -1184,8 +1184,8 @@
> >> >      * pretend we got one so we can set the SCI flags.
> >> >      */
> >> >     if (!acpi_sci_override_gsi)
> >> > -           acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0,
> 0,
> >> > -                                 acpi_gbl_FADT.sci_interrupt);
> >> > +           acpi_sci_ioapic_setup(acpi_get_sci_interrupt(), 0, 0,
> >> > +                                 acpi_get_sci_interrupt());
> >> >
> >> >     /* Fill in identity legacy mappings where no override */
> >> >     mp_config_acpi_legacy_irqs();
> >> > Index: linux-2.6/drivers/acpi/acpica/evgpeinit.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/acpica/evgpeinit.c  2011-05-03
> 10:19:00.243029997 +0800
> >> > +++ linux-2.6/drivers/acpi/acpica/evgpeinit.c       2011-05-03
> 10:20:50.833030004 +0800
> >> > @@ -131,7 +131,7 @@
> >> >             status =
> acpi_ev_create_gpe_block(acpi_gbl_fadt_gpe_device,
> >> >
> &acpi_gbl_FADT.xgpe0_block,
> >> >                                               register_count0, 0,
> >> > -
> acpi_gbl_FADT.sci_interrupt,
> >> > +
> acpi_get_sci_interrupt(),
> >> >
> &acpi_gbl_gpe_fadt_blocks[0]);
> >> >
> >> >             if (ACPI_FAILURE(status)) {
> >> > @@ -170,8 +170,7 @@
> >> >
>  &acpi_gbl_FADT.xgpe1_block,
> >> >                                                  register_count1,
> >> >
>  acpi_gbl_FADT.gpe1_base,
> >> > -                                                acpi_gbl_FADT.
> >> > -                                                sci_interrupt,
> >> > +
>  acpi_get_sci_interrupt(),
> >> >
>  &acpi_gbl_gpe_fadt_blocks
> >> >                                                  [1]);
> >> >
> >> > Index: linux-2.6/drivers/acpi/acpica/evgpeutil.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/acpica/evgpeutil.c  2011-05-03
> 10:19:00.213030003 +0800
> >> > +++ linux-2.6/drivers/acpi/acpica/evgpeutil.c       2011-05-03
> 10:20:50.833030004 +0800
> >> > @@ -253,7 +253,7 @@
> >> >
> >> >     /* Install new interrupt handler if not SCI_INT */
> >> >
> >> > -   if (interrupt_number != acpi_gbl_FADT.sci_interrupt) {
> >> > +   if (interrupt_number != acpi_get_sci_interrupt()) {
> >> >             status =
> acpi_os_install_interrupt_handler(interrupt_number,
> >> >
>  acpi_ev_gpe_xrupt_handler,
> >> >                                                        gpe_xrupt);
> >> > @@ -290,7 +290,7 @@
> >> >
> >> >     /* We never want to remove the SCI interrupt handler */
> >> >
> >> > -   if (gpe_xrupt->interrupt_number ==
> acpi_gbl_FADT.sci_interrupt) {
> >> > +   if (gpe_xrupt->interrupt_number == acpi_get_sci_interrupt()) {
> >> >             gpe_xrupt->gpe_block_list_head = NULL;
> >> >             return_ACPI_STATUS(AE_OK);
> >> >     }
> >> > Index: linux-2.6/drivers/acpi/acpica/evsci.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/acpica/evsci.c      2011-05-03
> 10:19:00.223030004 +0800
> >> > +++ linux-2.6/drivers/acpi/acpica/evsci.c   2011-05-03
> 10:20:50.833030004 +0800
> >> > @@ -142,7 +142,7 @@
> >> >     ACPI_FUNCTION_TRACE(ev_install_sci_handler);
> >> >
> >> >     status =
> >> > -       acpi_os_install_interrupt_handler((u32)
> acpi_gbl_FADT.sci_interrupt,
> >> > +       acpi_os_install_interrupt_handler((u32)
> acpi_get_sci_interrupt(),
> >> >
> acpi_ev_sci_xrupt_handler,
> >> >
> acpi_gbl_gpe_xrupt_list_head);
> >> >     return_ACPI_STATUS(status);
> >> > @@ -176,7 +176,7 @@
> >> >     /* Just let the OS remove the handler and disable the level */
> >> >
> >> >     status =
> >> > -       acpi_os_remove_interrupt_handler((u32)
> acpi_gbl_FADT.sci_interrupt,
> >> > +       acpi_os_remove_interrupt_handler((u32)
> acpi_get_sci_interrupt(),
> >> >
>  acpi_ev_sci_xrupt_handler);
> >> >
> >> >     return_ACPI_STATUS(status);
> >> > Index: linux-2.6/drivers/acpi/acpica/evxface.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/acpica/evxface.c    2011-05-03
> 10:19:00.213030003 +0800
> >> > +++ linux-2.6/drivers/acpi/acpica/evxface.c 2011-05-03
> 10:20:50.833030004 +0800
> >> > @@ -983,3 +983,41 @@
> >> >  }
> >> >
> >> >  ACPI_EXPORT_SYMBOL(acpi_release_global_lock)
> >> > +
> >> >
> +/*********************************************************************
> **********
> >> > + *
> >> > + * FUNCTION:    acpi_get_sci_interrupt
> >> > + *
> >> > + * PARAMETERS:  none
> >> > + *
> >> > + * RETURN:      SCI Interrupt
> >> > + *
> >> > + * DESCRIPTION: Return the ACPI SCI interrupt
> >> > + *
> >> > +
> ***********************************************************************
> *******/
> >> > +u16 acpi_get_sci_interrupt(void)
> >> > +{
> >> > +   return acpi_gbl_FADT.sci_interrupt;
> >> > +}
> >> > +
> >> > +ACPI_EXPORT_SYMBOL(acpi_get_sci_interrupt)
> >> > +
> >> >
> +/*********************************************************************
> **********
> >> > +           *
> >> > +           * FUNCTION:    acpi_set_sci_interrupt
> >> > +           *
> >> > +           * PARAMETERS:  override sci irq
> >> > +           *
> >> > +           * RETURN:      status
> >> > +           *
> >> > +           * DESCRIPTION: Set the ACPI SCI interrupt
> >> > +           *
> >> > +
> ***********************************************************************
> *******/
> >> > +acpi_status acpi_set_sci_interrupt(u16 irq)
> >> > +{
> >> > +   acpi_gbl_FADT.sci_interrupt = irq;
> >> > +   return AE_OK;
> >> > +}
> >> > +
> >> > +ACPI_EXPORT_SYMBOL(acpi_set_sci_interrupt)
> >> > +
> >> > Index: linux-2.6/drivers/acpi/bus.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/bus.c       2011-05-03
> 10:19:00.203030002 +0800
> >> > +++ linux-2.6/drivers/acpi/bus.c    2011-05-03 10:20:50.833030004
> +0800
> >> > @@ -890,14 +890,14 @@
> >> >                     acpi_sci_flags |= ACPI_MADT_TRIGGER_LEVEL;
> >> >             }
> >> >             /* Set PIC-mode SCI trigger type */
> >> > -           acpi_pic_sci_set_trigger(acpi_gbl_FADT.sci_interrupt,
> >> > +           acpi_pic_sci_set_trigger(acpi_get_sci_interrupt(),
> >> >                                      (acpi_sci_flags &
> ACPI_MADT_TRIGGER_MASK) >> 2);
> >> >     } else {
> >> >             /*
> >> >              * now that acpi_gbl_FADT is initialized,
> >> >              * update it with result from INT_SRC_OVR parsing
> >> >              */
> >> > -           acpi_gbl_FADT.sci_interrupt = acpi_sci_override_gsi;
> >> > +           acpi_set_sci_interrupt(acpi_sci_override_gsi);
> >> >     }
> >> >  #endif
> >> >
> >> > Index: linux-2.6/drivers/acpi/osl.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/osl.c       2011-05-03
> 10:19:48.993030009 +0800
> >> > +++ linux-2.6/drivers/acpi/osl.c    2011-05-03 10:20:50.833030004
> +0800
> >> > @@ -534,7 +534,7 @@
> >> >      * ACPI interrupts different from the SCI in our copy of the
> FADT are
> >> >      * not supported.
> >> >      */
> >> > -   if (gsi != acpi_gbl_FADT.sci_interrupt)
> >> > +   if (gsi != acpi_get_sci_interrupt())
> >> >             return AE_BAD_PARAMETER;
> >> >
> >> >     if (acpi_irq_handler)
> >> > @@ -559,7 +559,7 @@
> >> >
> >> >  acpi_status acpi_os_remove_interrupt_handler(u32 irq,
> acpi_osd_handler handler)
> >> >  {
> >> > -   if (irq != acpi_gbl_FADT.sci_interrupt)
> >> > +   if (irq != acpi_get_sci_interrupt())
> >> >             return AE_BAD_PARAMETER;
> >> >
> >> >     free_irq(irq, acpi_irq);
> >> > @@ -1622,7 +1622,7 @@
> >> >  acpi_status acpi_os_terminate(void)
> >> >  {
> >> >     if (acpi_irq_handler) {
> >> > -
> acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
> >> > +
> acpi_os_remove_interrupt_handler(acpi_get_sci_interrupt(),
> >> >                                              acpi_irq_handler);
> >> >     }
> >> >
> >> > Index: linux-2.6/drivers/acpi/pci_link.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/acpi/pci_link.c  2011-05-03
> 10:19:00.203030002 +0800
> >> > +++ linux-2.6/drivers/acpi/pci_link.c       2011-05-03
> 10:20:50.833030004 +0800
> >> > @@ -508,7 +508,7 @@
> >> >             }
> >> >     }
> >> >     /* Add a penalty for the SCI */
> >> > -   acpi_irq_penalty[acpi_gbl_FADT.sci_interrupt] +=
> PIRQ_PENALTY_PCI_USING;
> >> > +   acpi_irq_penalty[acpi_get_sci_interrupt()] +=
> PIRQ_PENALTY_PCI_USING;
> >> >     return 0;
> >> >  }
> >> >
> >> > Index: linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c
>   2011-05-03 10:19:00.193030001 +0800
> >> > +++ linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c  2011-
> 05-03 10:20:50.833030004 +0800
> >> > @@ -104,7 +104,7 @@
> >> >     pci_dev_put(pdev);
> >> >
> >> >     /* we're sharing the IRQ with ACPI */
> >> > -   irq = acpi_gbl_FADT.sci_interrupt;
> >> > +   irq = acpi_get_sci_interrupt();
> >> >     if (request_irq(irq, &dcon_interrupt, IRQF_SHARED, "DCON",
> dcon)) {
> >> >             printk(KERN_ERR PREFIX "DCON (IRQ%d) allocation
> failed\n", irq);
> >> >             return 1;
> >> > Index: linux-2.6/include/acpi/acpixf.h
> >> >
> ===================================================================
> >> > --- linux-2.6.orig/include/acpi/acpixf.h    2011-05-03
> 10:19:00.253029998 +0800
> >> > +++ linux-2.6/include/acpi/acpixf.h 2011-05-03 10:20:50.833030004
> +0800
> >> > @@ -411,6 +411,10 @@
> >> >  acpi_info(const char *module_name,
> >> >       u32 line_number, const char *format, ...)
> ACPI_PRINTF_LIKE(3);
> >> >
> >> > +u16 acpi_get_sci_interrupt(void);
> >> > +
> >> > +acpi_status acpi_set_sci_interrupt(u16 irq);
> >> > +
> >> >  /*
> >> >   * Debug output
> >> >   */
> >> >
> >> > ---
> >> >
> >>
> >>
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe linux-
> acpi" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> >
> > --
> > To unsubscribe from this list: send the line "unsubscribe linux-acpi"
> in
> > the body of a message to majordomo@vger.kernel.org
> > More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

Index: linux-2.6/arch/x86/kernel/acpi/boot.c
===================================================================
--- linux-2.6.orig/arch/x86/kernel/acpi/boot.c	2011-05-03 10:19:00.163029998 +0800
+++ linux-2.6/arch/x86/kernel/acpi/boot.c	2011-05-03 10:20:50.833030004 +0800
@@ -408,7 +408,7 @@ 
 
 	acpi_table_print_madt_entry(header);
 
-	if (intsrc->source_irq == acpi_gbl_FADT.sci_interrupt) {
+	if (intsrc->source_irq == acpi_get_sci_interrupt()) {
 		acpi_sci_ioapic_setup(intsrc->source_irq,
 				      intsrc->inti_flags & ACPI_MADT_POLARITY_MASK,
 				      (intsrc->inti_flags & ACPI_MADT_TRIGGER_MASK) >> 2,
@@ -1100,7 +1100,7 @@ 
 		return gsi;
 
 	/* Don't set up the ACPI SCI because it's already set up */
-	if (acpi_gbl_FADT.sci_interrupt == gsi)
+	if (acpi_get_sci_interrupt() == gsi)
 		return gsi;
 
 	ioapic = mp_find_ioapic(gsi);
@@ -1184,8 +1184,8 @@ 
 	 * pretend we got one so we can set the SCI flags.
 	 */
 	if (!acpi_sci_override_gsi)
-		acpi_sci_ioapic_setup(acpi_gbl_FADT.sci_interrupt, 0, 0,
-				      acpi_gbl_FADT.sci_interrupt);
+		acpi_sci_ioapic_setup(acpi_get_sci_interrupt(), 0, 0,
+				      acpi_get_sci_interrupt());
 
 	/* Fill in identity legacy mappings where no override */
 	mp_config_acpi_legacy_irqs();
Index: linux-2.6/drivers/acpi/acpica/evgpeinit.c
===================================================================
--- linux-2.6.orig/drivers/acpi/acpica/evgpeinit.c	2011-05-03 10:19:00.243029997 +0800
+++ linux-2.6/drivers/acpi/acpica/evgpeinit.c	2011-05-03 10:20:50.833030004 +0800
@@ -131,7 +131,7 @@ 
 		status = acpi_ev_create_gpe_block(acpi_gbl_fadt_gpe_device,
 						  &acpi_gbl_FADT.xgpe0_block,
 						  register_count0, 0,
-						  acpi_gbl_FADT.sci_interrupt,
+						  acpi_get_sci_interrupt(),
 						  &acpi_gbl_gpe_fadt_blocks[0]);
 
 		if (ACPI_FAILURE(status)) {
@@ -170,8 +170,7 @@ 
 						     &acpi_gbl_FADT.xgpe1_block,
 						     register_count1,
 						     acpi_gbl_FADT.gpe1_base,
-						     acpi_gbl_FADT.
-						     sci_interrupt,
+	   					     acpi_get_sci_interrupt(),
 						     &acpi_gbl_gpe_fadt_blocks
 						     [1]);
 
Index: linux-2.6/drivers/acpi/acpica/evgpeutil.c
===================================================================
--- linux-2.6.orig/drivers/acpi/acpica/evgpeutil.c	2011-05-03 10:19:00.213030003 +0800
+++ linux-2.6/drivers/acpi/acpica/evgpeutil.c	2011-05-03 10:20:50.833030004 +0800
@@ -253,7 +253,7 @@ 
 
 	/* Install new interrupt handler if not SCI_INT */
 
-	if (interrupt_number != acpi_gbl_FADT.sci_interrupt) {
+	if (interrupt_number != acpi_get_sci_interrupt()) {
 		status = acpi_os_install_interrupt_handler(interrupt_number,
 							   acpi_ev_gpe_xrupt_handler,
 							   gpe_xrupt);
@@ -290,7 +290,7 @@ 
 
 	/* We never want to remove the SCI interrupt handler */
 
-	if (gpe_xrupt->interrupt_number == acpi_gbl_FADT.sci_interrupt) {
+	if (gpe_xrupt->interrupt_number == acpi_get_sci_interrupt()) {
 		gpe_xrupt->gpe_block_list_head = NULL;
 		return_ACPI_STATUS(AE_OK);
 	}
Index: linux-2.6/drivers/acpi/acpica/evsci.c
===================================================================
--- linux-2.6.orig/drivers/acpi/acpica/evsci.c	2011-05-03 10:19:00.223030004 +0800
+++ linux-2.6/drivers/acpi/acpica/evsci.c	2011-05-03 10:20:50.833030004 +0800
@@ -142,7 +142,7 @@ 
 	ACPI_FUNCTION_TRACE(ev_install_sci_handler);
 
 	status =
-	    acpi_os_install_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
+	    acpi_os_install_interrupt_handler((u32) acpi_get_sci_interrupt(),
 					      acpi_ev_sci_xrupt_handler,
 					      acpi_gbl_gpe_xrupt_list_head);
 	return_ACPI_STATUS(status);
@@ -176,7 +176,7 @@ 
 	/* Just let the OS remove the handler and disable the level */
 
 	status =
-	    acpi_os_remove_interrupt_handler((u32) acpi_gbl_FADT.sci_interrupt,
+	    acpi_os_remove_interrupt_handler((u32) acpi_get_sci_interrupt(),
 					     acpi_ev_sci_xrupt_handler);
 
 	return_ACPI_STATUS(status);
Index: linux-2.6/drivers/acpi/acpica/evxface.c
===================================================================
--- linux-2.6.orig/drivers/acpi/acpica/evxface.c	2011-05-03 10:19:00.213030003 +0800
+++ linux-2.6/drivers/acpi/acpica/evxface.c	2011-05-03 10:20:50.833030004 +0800
@@ -983,3 +983,41 @@ 
 }
 
 ACPI_EXPORT_SYMBOL(acpi_release_global_lock)
+
+/*******************************************************************************
+ *
+ * FUNCTION:    acpi_get_sci_interrupt
+ *
+ * PARAMETERS:  none
+ *
+ * RETURN:      SCI Interrupt
+ *
+ * DESCRIPTION: Return the ACPI SCI interrupt
+ *
+ ******************************************************************************/
+u16 acpi_get_sci_interrupt(void)
+{
+	return acpi_gbl_FADT.sci_interrupt;
+}
+
+ACPI_EXPORT_SYMBOL(acpi_get_sci_interrupt)
+				
+/*******************************************************************************
+		*
+		* FUNCTION:    acpi_set_sci_interrupt
+		*
+		* PARAMETERS:  override sci irq
+		*
+		* RETURN:      status
+		*
+		* DESCRIPTION: Set the ACPI SCI interrupt
+		*
+ ******************************************************************************/
+acpi_status acpi_set_sci_interrupt(u16 irq)
+{
+	acpi_gbl_FADT.sci_interrupt = irq;
+	return AE_OK;
+}
+
+ACPI_EXPORT_SYMBOL(acpi_set_sci_interrupt)		
+
Index: linux-2.6/drivers/acpi/bus.c
===================================================================
--- linux-2.6.orig/drivers/acpi/bus.c	2011-05-03 10:19:00.203030002 +0800
+++ linux-2.6/drivers/acpi/bus.c	2011-05-03 10:20:50.833030004 +0800
@@ -890,14 +890,14 @@ 
 			acpi_sci_flags |= ACPI_MADT_TRIGGER_LEVEL;
 		}
 		/* Set PIC-mode SCI trigger type */
-		acpi_pic_sci_set_trigger(acpi_gbl_FADT.sci_interrupt,
+		acpi_pic_sci_set_trigger(acpi_get_sci_interrupt(),
 					 (acpi_sci_flags & ACPI_MADT_TRIGGER_MASK) >> 2);
 	} else {
 		/*
 		 * now that acpi_gbl_FADT is initialized,
 		 * update it with result from INT_SRC_OVR parsing
 		 */
-		acpi_gbl_FADT.sci_interrupt = acpi_sci_override_gsi;
+		acpi_set_sci_interrupt(acpi_sci_override_gsi);
 	}
 #endif
 
Index: linux-2.6/drivers/acpi/osl.c
===================================================================
--- linux-2.6.orig/drivers/acpi/osl.c	2011-05-03 10:19:48.993030009 +0800
+++ linux-2.6/drivers/acpi/osl.c	2011-05-03 10:20:50.833030004 +0800
@@ -534,7 +534,7 @@ 
 	 * ACPI interrupts different from the SCI in our copy of the FADT are
 	 * not supported.
 	 */
-	if (gsi != acpi_gbl_FADT.sci_interrupt)
+	if (gsi != acpi_get_sci_interrupt())
 		return AE_BAD_PARAMETER;
 
 	if (acpi_irq_handler)
@@ -559,7 +559,7 @@ 
 
 acpi_status acpi_os_remove_interrupt_handler(u32 irq, acpi_osd_handler handler)
 {
-	if (irq != acpi_gbl_FADT.sci_interrupt)
+	if (irq != acpi_get_sci_interrupt())
 		return AE_BAD_PARAMETER;
 
 	free_irq(irq, acpi_irq);
@@ -1622,7 +1622,7 @@ 
 acpi_status acpi_os_terminate(void)
 {
 	if (acpi_irq_handler) {
-		acpi_os_remove_interrupt_handler(acpi_gbl_FADT.sci_interrupt,
+		acpi_os_remove_interrupt_handler(acpi_get_sci_interrupt(),
 						 acpi_irq_handler);
 	}
 
Index: linux-2.6/drivers/acpi/pci_link.c
===================================================================
--- linux-2.6.orig/drivers/acpi/pci_link.c	2011-05-03 10:19:00.203030002 +0800
+++ linux-2.6/drivers/acpi/pci_link.c	2011-05-03 10:20:50.833030004 +0800
@@ -508,7 +508,7 @@ 
 		}
 	}
 	/* Add a penalty for the SCI */
-	acpi_irq_penalty[acpi_gbl_FADT.sci_interrupt] += PIRQ_PENALTY_PCI_USING;
+	acpi_irq_penalty[acpi_get_sci_interrupt()] += PIRQ_PENALTY_PCI_USING;
 	return 0;
 }
 
Index: linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c
===================================================================
--- linux-2.6.orig/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c	2011-05-03 10:19:00.193030001 +0800
+++ linux-2.6/drivers/staging/olpc_dcon/olpc_dcon_xo_1_5.c	2011-05-03 10:20:50.833030004 +0800
@@ -104,7 +104,7 @@ 
 	pci_dev_put(pdev);
 
 	/* we're sharing the IRQ with ACPI */
-	irq = acpi_gbl_FADT.sci_interrupt;
+	irq = acpi_get_sci_interrupt();
 	if (request_irq(irq, &dcon_interrupt, IRQF_SHARED, "DCON", dcon)) {
 		printk(KERN_ERR PREFIX "DCON (IRQ%d) allocation failed\n", irq);
 		return 1;
Index: linux-2.6/include/acpi/acpixf.h
===================================================================
--- linux-2.6.orig/include/acpi/acpixf.h	2011-05-03 10:19:00.253029998 +0800
+++ linux-2.6/include/acpi/acpixf.h	2011-05-03 10:20:50.833030004 +0800
@@ -411,6 +411,10 @@ 
 acpi_info(const char *module_name,
 	  u32 line_number, const char *format, ...) ACPI_PRINTF_LIKE(3);
 
+u16 acpi_get_sci_interrupt(void);
+
+acpi_status acpi_set_sci_interrupt(u16 irq);
+
 /*
  * Debug output
  */