Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
x86, cacheinfo: Turn off L3 cache index disable feature in virtualized environments
x86, k8: Fix build error when K8_NB is disabled
x86, amd: Check X86_FEATURE_OSVW bit before accessing OSVW MSRs
x86: Fix fake apicid to node mapping for numa emulation

+18 -6
+5
arch/x86/include/asm/k8.h
··· 16 16 extern int k8_scan_nodes(void); 17 17 18 18 #ifdef CONFIG_K8_NB 19 + extern int num_k8_northbridges; 20 + 19 21 static inline struct pci_dev *node_to_k8_nb_misc(int node) 20 22 { 21 23 return (node < num_k8_northbridges) ? k8_northbridges[node] : NULL; 22 24 } 25 + 23 26 #else 27 + #define num_k8_northbridges 0 28 + 24 29 static inline struct pci_dev *node_to_k8_nb_misc(int node) 25 30 { 26 31 return NULL;
+4
arch/x86/kernel/cpu/intel_cacheinfo.c
··· 340 340 (boot_cpu_data.x86_mask < 0x1))) 341 341 return; 342 342 343 + /* not in virtualized environments */ 344 + if (num_k8_northbridges == 0) 345 + return; 346 + 343 347 this_leaf->can_disable = true; 344 348 this_leaf->l3_indices = amd_calc_l3_indices(); 345 349 }
+7 -5
arch/x86/kernel/process.c
··· 546 546 * check OSVW bit for CPUs that are not affected 547 547 * by erratum #400 548 548 */ 549 - rdmsrl(MSR_AMD64_OSVW_ID_LENGTH, val); 550 - if (val >= 2) { 551 - rdmsrl(MSR_AMD64_OSVW_STATUS, val); 552 - if (!(val & BIT(1))) 553 - goto no_c1e_idle; 549 + if (cpu_has(c, X86_FEATURE_OSVW)) { 550 + rdmsrl(MSR_AMD64_OSVW_ID_LENGTH, val); 551 + if (val >= 2) { 552 + rdmsrl(MSR_AMD64_OSVW_STATUS, val); 553 + if (!(val & BIT(1))) 554 + goto no_c1e_idle; 555 + } 554 556 } 555 557 return 1; 556 558 }
+2 -1
arch/x86/mm/srat_64.c
··· 461 461 * node, it must now point to the fake node ID. 462 462 */ 463 463 for (j = 0; j < MAX_LOCAL_APIC; j++) 464 - if (apicid_to_node[j] == nid) 464 + if (apicid_to_node[j] == nid && 465 + fake_apicid_to_node[j] == NUMA_NO_NODE) 465 466 fake_apicid_to_node[j] = i; 466 467 } 467 468 for (i = 0; i < num_nodes; i++)