diff options
Diffstat (limited to 'arch/x86/oprofile/nmi_int.c')
-rw-r--r-- | arch/x86/oprofile/nmi_int.c | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/arch/x86/oprofile/nmi_int.c b/arch/x86/oprofile/nmi_int.c index f6b48f6c5951..009b819f48d0 100644 --- a/arch/x86/oprofile/nmi_int.c +++ b/arch/x86/oprofile/nmi_int.c | |||
@@ -568,8 +568,13 @@ static int __init init_sysfs(void) | |||
568 | int error; | 568 | int error; |
569 | 569 | ||
570 | error = sysdev_class_register(&oprofile_sysclass); | 570 | error = sysdev_class_register(&oprofile_sysclass); |
571 | if (!error) | 571 | if (error) |
572 | error = sysdev_register(&device_oprofile); | 572 | return error; |
573 | |||
574 | error = sysdev_register(&device_oprofile); | ||
575 | if (error) | ||
576 | sysdev_class_unregister(&oprofile_sysclass); | ||
577 | |||
573 | return error; | 578 | return error; |
574 | } | 579 | } |
575 | 580 | ||
@@ -580,8 +585,10 @@ static void exit_sysfs(void) | |||
580 | } | 585 | } |
581 | 586 | ||
582 | #else | 587 | #else |
583 | #define init_sysfs() do { } while (0) | 588 | |
584 | #define exit_sysfs() do { } while (0) | 589 | static inline int init_sysfs(void) { return 0; } |
590 | static inline void exit_sysfs(void) { } | ||
591 | |||
585 | #endif /* CONFIG_PM */ | 592 | #endif /* CONFIG_PM */ |
586 | 593 | ||
587 | static int __init p4_init(char **cpu_type) | 594 | static int __init p4_init(char **cpu_type) |
@@ -664,7 +671,9 @@ static int __init ppro_init(char **cpu_type) | |||
664 | case 14: | 671 | case 14: |
665 | *cpu_type = "i386/core"; | 672 | *cpu_type = "i386/core"; |
666 | break; | 673 | break; |
667 | case 15: case 23: | 674 | case 0x0f: |
675 | case 0x16: | ||
676 | case 0x17: | ||
668 | *cpu_type = "i386/core_2"; | 677 | *cpu_type = "i386/core_2"; |
669 | break; | 678 | break; |
670 | case 0x1a: | 679 | case 0x1a: |
@@ -695,6 +704,8 @@ int __init op_nmi_init(struct oprofile_operations *ops) | |||
695 | char *cpu_type = NULL; | 704 | char *cpu_type = NULL; |
696 | int ret = 0; | 705 | int ret = 0; |
697 | 706 | ||
707 | using_nmi = 0; | ||
708 | |||
698 | if (!cpu_has_apic) | 709 | if (!cpu_has_apic) |
699 | return -ENODEV; | 710 | return -ENODEV; |
700 | 711 | ||
@@ -774,7 +785,10 @@ int __init op_nmi_init(struct oprofile_operations *ops) | |||
774 | 785 | ||
775 | mux_init(ops); | 786 | mux_init(ops); |
776 | 787 | ||
777 | init_sysfs(); | 788 | ret = init_sysfs(); |
789 | if (ret) | ||
790 | return ret; | ||
791 | |||
778 | using_nmi = 1; | 792 | using_nmi = 1; |
779 | printk(KERN_INFO "oprofile: using NMI interrupt.\n"); | 793 | printk(KERN_INFO "oprofile: using NMI interrupt.\n"); |
780 | return 0; | 794 | return 0; |