x86_64 move_pages_smp_handler: rework initialisation

- add missing break statement
- remove duplicate memset for mpsr->status

Change-Id: I1fd1a8b2bb7bbabb32db9e7d3fc84102d9b0ff82
This commit is contained in:
Dominique Martinet
2018-06-12 09:32:17 +09:00
committed by Dominique Martinet
parent ad2cb6375a
commit 97273adcc5

View File

@@ -2366,8 +2366,6 @@ int move_pages_smp_handler(int cpu_index, int nr_cpus, void *arg)
case 0: case 0:
memcpy(mpsr->virt_addr, mpsr->user_virt_addr, memcpy(mpsr->virt_addr, mpsr->user_virt_addr,
sizeof(void *) * count); sizeof(void *) * count);
memcpy(mpsr->status, mpsr->user_status,
sizeof(int) * count);
memcpy(mpsr->nodes, mpsr->user_nodes, memcpy(mpsr->nodes, mpsr->user_nodes,
sizeof(int) * count); sizeof(int) * count);
memset(mpsr->ptep, 0, sizeof(pte_t) * count); memset(mpsr->ptep, 0, sizeof(pte_t) * count);
@@ -2387,41 +2385,38 @@ int move_pages_smp_handler(int cpu_index, int nr_cpus, void *arg)
case 0: case 0:
memcpy(mpsr->virt_addr, mpsr->user_virt_addr, memcpy(mpsr->virt_addr, mpsr->user_virt_addr,
sizeof(void *) * count); sizeof(void *) * count);
memcpy(mpsr->status, mpsr->user_status,
sizeof(int) * count);
case 1:
memcpy(mpsr->nodes, mpsr->user_nodes, memcpy(mpsr->nodes, mpsr->user_nodes,
sizeof(int) * count); sizeof(int) * count);
mpsr->nodes_ready = 1;
break;
case 1:
memset(mpsr->ptep, 0, sizeof(pte_t) * count); memset(mpsr->ptep, 0, sizeof(pte_t) * count);
memset(mpsr->status, 0, sizeof(int) * count); memset(mpsr->status, 0, sizeof(int) * count);
memset(mpsr->nr_pages, 0, sizeof(int) * count); memset(mpsr->nr_pages, 0, sizeof(int) * count);
memset(mpsr->dst_phys, 0, memset(mpsr->dst_phys, 0,
sizeof(unsigned long) * count); sizeof(unsigned long) * count);
mpsr->nodes_ready = 1;
break; break;
default: default:
break; break;
} }
} }
else if (nr_cpus >= 4 && nr_cpus < 8) { else if (nr_cpus >= 4 && nr_cpus < 7) {
switch (cpu_index) { switch (cpu_index) {
case 0: case 0:
memcpy(mpsr->virt_addr, mpsr->user_virt_addr, memcpy(mpsr->virt_addr, mpsr->user_virt_addr,
sizeof(void *) * count); sizeof(void *) * count);
break; break;
case 1: case 1:
memcpy(mpsr->status, mpsr->user_status,
sizeof(int) * count);
break;
case 2:
memcpy(mpsr->nodes, mpsr->user_nodes, memcpy(mpsr->nodes, mpsr->user_nodes,
sizeof(int) * count); sizeof(int) * count);
mpsr->nodes_ready = 1; mpsr->nodes_ready = 1;
break; break;
case 3: case 2:
memset(mpsr->ptep, 0, sizeof(pte_t) * count); memset(mpsr->ptep, 0, sizeof(pte_t) * count);
memset(mpsr->status, 0, sizeof(int) * count); memset(mpsr->status, 0, sizeof(int) * count);
break;
case 3:
memset(mpsr->nr_pages, 0, sizeof(int) * count); memset(mpsr->nr_pages, 0, sizeof(int) * count);
memset(mpsr->dst_phys, 0, memset(mpsr->dst_phys, 0,
sizeof(unsigned long) * count); sizeof(unsigned long) * count);
@@ -2431,7 +2426,7 @@ int move_pages_smp_handler(int cpu_index, int nr_cpus, void *arg)
break; break;
} }
} }
else if (nr_cpus >= 8) { else {
switch (cpu_index) { switch (cpu_index) {
case 0: case 0:
memcpy(mpsr->virt_addr, mpsr->user_virt_addr, memcpy(mpsr->virt_addr, mpsr->user_virt_addr,
@@ -2443,28 +2438,23 @@ int move_pages_smp_handler(int cpu_index, int nr_cpus, void *arg)
sizeof(void *) * (count / 2)); sizeof(void *) * (count / 2));
break; break;
case 2: case 2:
memcpy(mpsr->status, mpsr->user_status,
sizeof(int) * count);
break;
case 3:
memcpy(mpsr->nodes, mpsr->user_nodes, memcpy(mpsr->nodes, mpsr->user_nodes,
sizeof(int) * count); sizeof(int) * count);
mpsr->nodes_ready = 1; mpsr->nodes_ready = 1;
break; break;
case 4: case 3:
memset(mpsr->ptep, 0, sizeof(pte_t) * count); memset(mpsr->ptep, 0, sizeof(pte_t) * count);
break; break;
case 5: case 4:
memset(mpsr->status, 0, sizeof(int) * count); memset(mpsr->status, 0, sizeof(int) * count);
break; break;
case 6: case 5:
memset(mpsr->nr_pages, 0, sizeof(int) * count); memset(mpsr->nr_pages, 0, sizeof(int) * count);
break; break;
case 7: case 6:
memset(mpsr->dst_phys, 0, memset(mpsr->dst_phys, 0,
sizeof(unsigned long) * count); sizeof(unsigned long) * count);
break; break;
default: default:
break; break;
} }