diff options
Diffstat (limited to 'arch/x86/kernel/microcode.c')
| -rw-r--r-- | arch/x86/kernel/microcode.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/arch/x86/kernel/microcode.c b/arch/x86/kernel/microcode.c index 6994c751590e..652fa5c38ebe 100644 --- a/arch/x86/kernel/microcode.c +++ b/arch/x86/kernel/microcode.c | |||
| @@ -388,7 +388,6 @@ static int do_microcode_update (void) | |||
| 388 | void *new_mc = NULL; | 388 | void *new_mc = NULL; |
| 389 | int cpu; | 389 | int cpu; |
| 390 | cpumask_t old; | 390 | cpumask_t old; |
| 391 | cpumask_of_cpu_ptr_declare(newmask); | ||
| 392 | 391 | ||
| 393 | old = current->cpus_allowed; | 392 | old = current->cpus_allowed; |
| 394 | 393 | ||
| @@ -405,8 +404,7 @@ static int do_microcode_update (void) | |||
| 405 | 404 | ||
| 406 | if (!uci->valid) | 405 | if (!uci->valid) |
| 407 | continue; | 406 | continue; |
| 408 | cpumask_of_cpu_ptr_next(newmask, cpu); | 407 | set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu)); |
| 409 | set_cpus_allowed_ptr(current, newmask); | ||
| 410 | error = get_maching_microcode(new_mc, cpu); | 408 | error = get_maching_microcode(new_mc, cpu); |
| 411 | if (error < 0) | 409 | if (error < 0) |
| 412 | goto out; | 410 | goto out; |
| @@ -576,7 +574,6 @@ static int apply_microcode_check_cpu(int cpu) | |||
| 576 | struct cpuinfo_x86 *c = &cpu_data(cpu); | 574 | struct cpuinfo_x86 *c = &cpu_data(cpu); |
| 577 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; | 575 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; |
| 578 | cpumask_t old; | 576 | cpumask_t old; |
| 579 | cpumask_of_cpu_ptr(newmask, cpu); | ||
| 580 | unsigned int val[2]; | 577 | unsigned int val[2]; |
| 581 | int err = 0; | 578 | int err = 0; |
| 582 | 579 | ||
| @@ -585,7 +582,7 @@ static int apply_microcode_check_cpu(int cpu) | |||
| 585 | return 0; | 582 | return 0; |
| 586 | 583 | ||
| 587 | old = current->cpus_allowed; | 584 | old = current->cpus_allowed; |
| 588 | set_cpus_allowed_ptr(current, newmask); | 585 | set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu)); |
| 589 | 586 | ||
| 590 | /* Check if the microcode we have in memory matches the CPU */ | 587 | /* Check if the microcode we have in memory matches the CPU */ |
| 591 | if (c->x86_vendor != X86_VENDOR_INTEL || c->x86 < 6 || | 588 | if (c->x86_vendor != X86_VENDOR_INTEL || c->x86 < 6 || |
| @@ -623,12 +620,11 @@ static int apply_microcode_check_cpu(int cpu) | |||
| 623 | static void microcode_init_cpu(int cpu, int resume) | 620 | static void microcode_init_cpu(int cpu, int resume) |
| 624 | { | 621 | { |
| 625 | cpumask_t old; | 622 | cpumask_t old; |
| 626 | cpumask_of_cpu_ptr(newmask, cpu); | ||
| 627 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; | 623 | struct ucode_cpu_info *uci = ucode_cpu_info + cpu; |
| 628 | 624 | ||
| 629 | old = current->cpus_allowed; | 625 | old = current->cpus_allowed; |
| 630 | 626 | ||
| 631 | set_cpus_allowed_ptr(current, newmask); | 627 | set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu)); |
| 632 | mutex_lock(µcode_mutex); | 628 | mutex_lock(µcode_mutex); |
| 633 | collect_cpu_info(cpu); | 629 | collect_cpu_info(cpu); |
| 634 | if (uci->valid && system_state == SYSTEM_RUNNING && !resume) | 630 | if (uci->valid && system_state == SYSTEM_RUNNING && !resume) |
| @@ -661,13 +657,10 @@ static ssize_t reload_store(struct sys_device *dev, | |||
| 661 | if (end == buf) | 657 | if (end == buf) |
| 662 | return -EINVAL; | 658 | return -EINVAL; |
| 663 | if (val == 1) { | 659 | if (val == 1) { |
| 664 | cpumask_t old; | 660 | cpumask_t old = current->cpus_allowed; |
| 665 | cpumask_of_cpu_ptr(newmask, cpu); | ||
| 666 | |||
| 667 | old = current->cpus_allowed; | ||
| 668 | 661 | ||
| 669 | get_online_cpus(); | 662 | get_online_cpus(); |
| 670 | set_cpus_allowed_ptr(current, newmask); | 663 | set_cpus_allowed_ptr(current, &cpumask_of_cpu(cpu)); |
| 671 | 664 | ||
| 672 | mutex_lock(µcode_mutex); | 665 | mutex_lock(µcode_mutex); |
| 673 | if (uci->valid) | 666 | if (uci->valid) |
