diff options
Diffstat (limited to 'drivers/xen/xen-acpi-processor.c')
| -rw-r--r-- | drivers/xen/xen-acpi-processor.c | 23 | 
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/xen/xen-acpi-processor.c b/drivers/xen/xen-acpi-processor.c index 13bc6c31c06..59fc190f1e9 100644 --- a/drivers/xen/xen-acpi-processor.c +++ b/drivers/xen/xen-acpi-processor.c @@ -27,12 +27,10 @@  #include <linux/init.h>  #include <linux/module.h>  #include <linux/types.h> -#include <linux/syscore_ops.h> -#include <acpi/acpi_bus.h> -#include <acpi/acpi_drivers.h> +#include <linux/acpi.h>  #include <acpi/processor.h> -  #include <xen/xen.h> +#include <xen/xen-ops.h>  #include <xen/interface/platform.h>  #include <asm/xen/hypercall.h> @@ -129,7 +127,7 @@ static int push_cxx_to_hypervisor(struct acpi_processor *_pr)  			pr_debug("     C%d: %s %d uS\n",  				 cx->type, cx->desc, (u32)cx->latency);  		} -	} else if (ret != -EINVAL) +	} else if ((ret != -EINVAL) && (ret != -ENOSYS))  		/* EINVAL means the ACPI ID is incorrect - meaning the ACPI  		 * table is referencing a non-existing CPU - which can happen  		 * with broken ACPI tables. */ @@ -261,7 +259,7 @@ static int push_pxx_to_hypervisor(struct acpi_processor *_pr)  			(u32) perf->states[i].power,  			(u32) perf->states[i].transition_latency);  		} -	} else if (ret != -EINVAL) +	} else if ((ret != -EINVAL) && (ret != -ENOSYS))  		/* EINVAL means the ACPI ID is incorrect - meaning the ACPI  		 * table is referencing a non-existing CPU - which can happen  		 * with broken ACPI tables. */ @@ -497,14 +495,15 @@ static int xen_upload_processor_pm_data(void)  	return rc;  } -static void xen_acpi_processor_resume(void) +static int xen_acpi_processor_resume(struct notifier_block *nb, +				     unsigned long action, void *data)  {  	bitmap_zero(acpi_ids_done, nr_acpi_bits); -	xen_upload_processor_pm_data(); +	return xen_upload_processor_pm_data();  } -static struct syscore_ops xap_syscore_ops = { -	.resume	= xen_acpi_processor_resume, +struct notifier_block xen_acpi_processor_resume_nb = { +	.notifier_call = xen_acpi_processor_resume,  };  static int __init xen_acpi_processor_init(void) @@ -557,7 +556,7 @@ static int __init xen_acpi_processor_init(void)  	if (rc)  		goto err_unregister; -	register_syscore_ops(&xap_syscore_ops); +	xen_resume_notifier_register(&xen_acpi_processor_resume_nb);  	return 0;  err_unregister: @@ -576,7 +575,7 @@ static void __exit xen_acpi_processor_exit(void)  {  	int i; -	unregister_syscore_ops(&xap_syscore_ops); +	xen_resume_notifier_unregister(&xen_acpi_processor_resume_nb);  	kfree(acpi_ids_done);  	kfree(acpi_id_present);  	kfree(acpi_id_cst_present);  | 
