History

Merge tag 'for-linus-4.12b-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip

Pull xen fixes from Juergen Gross: "Some fixes for the new Xen 9pfs frontend and some minor cleanups" * tag 'for-linus-4.12b-rc2-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/xen/tip: xen: make xen_flush_tlb_all() static xen: cleanup pvh leftovers from pv-only sources xen/9pfs: p9_trans_xen_init and p9_trans_xen_exit can be static xen/9pfs: fix return value check in xen_9pfs_front_probe()

Linus Torvalds committed 9 years ago

Commit 9e856e42 parents 1fbbed4 c71e6d84 files · +47 −80Browse files

Unified · Split

4 files
  1. arch/x86/xen/enlighten_pv.c +4 −11
  2. arch/x86/xen/mmu.c +1 −1
  3. arch/x86/xen/mmu_pv.c +38 −64
  4. net/9p/trans_xen.c +4 −4
arch/x86/xen/enlighten_pv.c+4−11
@@ -142,9 +142,7 @@ static void __init xen_banner(void) · 141 unmodified lines
142142 struct xen_extraversion extra;
143143 HYPERVISOR_xen_version(XENVER_extraversion, &extra);
144144
145− pr_info("Booting paravirtualized kernel %son %s\n",
146− xen_feature(XENFEAT_auto_translated_physmap) ?
147− "with PVH extensions " : "", pv_info.name);
145+ pr_info("Booting paravirtualized kernel on %s\n", pv_info.name);
148146 printk(KERN_INFO "Xen version: %d.%d%s%s\n",
149147 version >> 16, version & 0xffff, extra.extraversion,
150148 xen_feature(XENFEAT_mmu_pt_update_preserve_ad) ? " (preserve-AD)" : "");
@@ -957,15 +955,10 @@ static void xen_write_msr(unsigned int msr, unsigned low, unsigned high) · 806 unmodified lines
957955
958956 void xen_setup_shared_info(void)
959957 {
960− if (!xen_feature(XENFEAT_auto_translated_physmap)) {
961− set_fixmap(FIX_PARAVIRT_BOOTMAP,
962− xen_start_info->shared_info);
958+ set_fixmap(FIX_PARAVIRT_BOOTMAP, xen_start_info->shared_info);
963959
964− HYPERVISOR_shared_info =
965− (struct shared_info *)fix_to_virt(FIX_PARAVIRT_BOOTMAP);
966− } else
967− HYPERVISOR_shared_info =
968− (struct shared_info *)__va(xen_start_info->shared_info);
960+ HYPERVISOR_shared_info =
961+ (struct shared_info *)fix_to_virt(FIX_PARAVIRT_BOOTMAP);
969962
970963 #ifndef CONFIG_SMP
971964 /* In UP this is as good a place as any to set up shared info */
arch/x86/xen/mmu.c+1−1
@@ -42,7 +42,7 @@ xmaddr_t arbitrary_virt_to_machine(void *vaddr) · 41 unmodified lines
4242 }
4343 EXPORT_SYMBOL_GPL(arbitrary_virt_to_machine);
4444
45−void xen_flush_tlb_all(void)
45+static void xen_flush_tlb_all(void)
4646 {
4747 struct mmuext_op *op;
4848 struct multicall_space mcs;
arch/x86/xen/mmu_pv.c+38−64
@@ -355,10 +355,8 @@ static pteval_t pte_pfn_to_mfn(pteval_t val) · 354 unmodified lines
355355 pteval_t flags = val & PTE_FLAGS_MASK;
356356 unsigned long mfn;
357357
358− if (!xen_feature(XENFEAT_auto_translated_physmap))
359− mfn = __pfn_to_mfn(pfn);
360− else
361− mfn = pfn;
358+ mfn = __pfn_to_mfn(pfn);
359+
362360 /*
363361 * If there's no mfn for the pfn, then just create an
364362 * empty non-present pte. Unfortunately this loses
@@ -647,9 +645,6 @@ static int __xen_pgd_walk(struct mm_struct *mm, pgd_t *pgd, · 282 unmodified lines
647645 limit--;
648646 BUG_ON(limit >= FIXADDR_TOP);
649647
650− if (xen_feature(XENFEAT_auto_translated_physmap))
651− return 0;
652−
653648 /*
654649 * 64-bit has a great big hole in the middle of the address
655650 * space, which contains the Xen mappings. On 32-bit these
@@ -1289,9 +1284,6 @@ static void __init xen_pagetable_cleanhighmap(void) · 633 unmodified lines
12891284
12901285 static void __init xen_pagetable_p2m_setup(void)
12911286 {
1292− if (xen_feature(XENFEAT_auto_translated_physmap))
1293− return;
1294−
12951287 xen_vmalloc_p2m_tree();
12961288
12971289 #ifdef CONFIG_X86_64
@@ -1314,8 +1306,7 @@ static void __init xen_pagetable_init(void) · 16 unmodified lines
13141306 xen_build_mfn_list_list();
13151307
13161308 /* Remap memory freed due to conflicts with E820 map */
1317− if (!xen_feature(XENFEAT_auto_translated_physmap))
1318− xen_remap_memory();
1309+ xen_remap_memory();
13191310
13201311 xen_setup_shared_info();
13211312 }
@@ -1925,21 +1916,20 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) · 603 unmodified lines
19251916 /* Zap identity mapping */
19261917 init_level4_pgt[0] = __pgd(0);
19271918
1928− if (!xen_feature(XENFEAT_auto_translated_physmap)) {
1929− /* Pre-constructed entries are in pfn, so convert to mfn */
1930− /* L4[272] -> level3_ident_pgt
1931− * L4[511] -> level3_kernel_pgt */
1932− convert_pfn_mfn(init_level4_pgt);
1919+ /* Pre-constructed entries are in pfn, so convert to mfn */
1920+ /* L4[272] -> level3_ident_pgt */
1921+ /* L4[511] -> level3_kernel_pgt */
1922+ convert_pfn_mfn(init_level4_pgt);
19331923
1934− /* L3_i[0] -> level2_ident_pgt */
1935− convert_pfn_mfn(level3_ident_pgt);
1936− /* L3_k[510] -> level2_kernel_pgt
1937− * L3_k[511] -> level2_fixmap_pgt */
1938− convert_pfn_mfn(level3_kernel_pgt);
1924+ /* L3_i[0] -> level2_ident_pgt */
1925+ convert_pfn_mfn(level3_ident_pgt);
1926+ /* L3_k[510] -> level2_kernel_pgt */
1927+ /* L3_k[511] -> level2_fixmap_pgt */
1928+ convert_pfn_mfn(level3_kernel_pgt);
1929+
1930+ /* L3_k[511][506] -> level1_fixmap_pgt */
1931+ convert_pfn_mfn(level2_fixmap_pgt);
19391932
1940− /* L3_k[511][506] -> level1_fixmap_pgt */
1941− convert_pfn_mfn(level2_fixmap_pgt);
1942− }
19431933 /* We get [511][511] and have Xen's version of level2_kernel_pgt */
19441934 l3 = m2v(pgd[pgd_index(__START_KERNEL_map)].pgd);
19451935 l2 = m2v(l3[pud_index(__START_KERNEL_map)].pud);
@@ -1962,34 +1952,30 @@ void __init xen_setup_kernel_pagetable(pgd_t *pgd, unsigned long max_pfn) · 16 unmodified lines
19621952 if (i && i < pgd_index(__START_KERNEL_map))
19631953 init_level4_pgt[i] = ((pgd_t *)xen_start_info->pt_base)[i];
19641954
1965− if (!xen_feature(XENFEAT_auto_translated_physmap)) {
1966− /* Make pagetable pieces RO */
1967− set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
1968− set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
1969− set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
1970− set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO);
1971− set_page_prot(level2_ident_pgt, PAGE_KERNEL_RO);
1972− set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
1973− set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
1974− set_page_prot(level1_fixmap_pgt, PAGE_KERNEL_RO);
1975−
1976− /* Pin down new L4 */
1977− pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE,
1978− PFN_DOWN(__pa_symbol(init_level4_pgt)));
1979−
1980− /* Unpin Xen-provided one */
1981− pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(pgd)));
1955+ /* Make pagetable pieces RO */
1956+ set_page_prot(init_level4_pgt, PAGE_KERNEL_RO);
1957+ set_page_prot(level3_ident_pgt, PAGE_KERNEL_RO);
1958+ set_page_prot(level3_kernel_pgt, PAGE_KERNEL_RO);
1959+ set_page_prot(level3_user_vsyscall, PAGE_KERNEL_RO);
1960+ set_page_prot(level2_ident_pgt, PAGE_KERNEL_RO);
1961+ set_page_prot(level2_kernel_pgt, PAGE_KERNEL_RO);
1962+ set_page_prot(level2_fixmap_pgt, PAGE_KERNEL_RO);
1963+ set_page_prot(level1_fixmap_pgt, PAGE_KERNEL_RO);
1964+
1965+ /* Pin down new L4 */
1966+ pin_pagetable_pfn(MMUEXT_PIN_L4_TABLE,
1967+ PFN_DOWN(__pa_symbol(init_level4_pgt)));
1968+
1969+ /* Unpin Xen-provided one */
1970+ pin_pagetable_pfn(MMUEXT_UNPIN_TABLE, PFN_DOWN(__pa(pgd)));
19821971
1983− /*
1984− * At this stage there can be no user pgd, and no page
1985− * structure to attach it to, so make sure we just set kernel
1986− * pgd.
1987− */
1988− xen_mc_batch();
1989− __xen_write_cr3(true, __pa(init_level4_pgt));
1990− xen_mc_issue(PARAVIRT_LAZY_CPU);
1991− } else
1992− native_write_cr3(__pa(init_level4_pgt));
1972+ /*
1973+ * At this stage there can be no user pgd, and no page structure to
1974+ * attach it to, so make sure we just set kernel pgd.
1975+ */
1976+ xen_mc_batch();
1977+ __xen_write_cr3(true, __pa(init_level4_pgt));
1978+ xen_mc_issue(PARAVIRT_LAZY_CPU);
19931979
19941980 /* We can't that easily rip out L3 and L2, as the Xen pagetables are
19951981 * set out this way: [L4], [L1], [L2], [L3], [L1], [L1] ... for
@@ -2403,9 +2389,6 @@ static void xen_set_fixmap(unsigned idx, phys_addr_t phys, pgprot_t prot) · 407 unmodified lines
24032389
24042390 static void __init xen_post_allocator_init(void)
24052391 {
2406− if (xen_feature(XENFEAT_auto_translated_physmap))
2407− return;
2408−
24092392 pv_mmu_ops.set_pte = xen_set_pte;
24102393 pv_mmu_ops.set_pmd = xen_set_pmd;
24112394 pv_mmu_ops.set_pud = xen_set_pud;
@@ -2511,9 +2494,6 @@ void __init xen_init_mmu_ops(void) · 99 unmodified lines
25112494 {
25122495 x86_init.paging.pagetable_init = xen_pagetable_init;
25132496
2514− if (xen_feature(XENFEAT_auto_translated_physmap))
2515− return;
2516−
25172497 pv_mmu_ops = xen_mmu_ops;
25182498
25192499 memset(dummy_mapping, 0xff, PAGE_SIZE);
@@ -2650,9 +2630,6 @@ int xen_create_contiguous_region(phys_addr_t pstart, unsigned int order, · 130 unmodified lines
26502630 * this function are redundant and can be ignored.
26512631 */
26522632
2653− if (xen_feature(XENFEAT_auto_translated_physmap))
2654− return 0;
2655−
26562633 if (unlikely(order > MAX_CONTIG_ORDER))
26572634 return -ENOMEM;
26582635
@@ -2689,9 +2666,6 @@ void xen_destroy_contiguous_region(phys_addr_t pstart, unsigned int order) · 30 unmodified lines
26892666 int success;
26902667 unsigned long vstart;
26912668
2692− if (xen_feature(XENFEAT_auto_translated_physmap))
2693− return;
2694−
26952669 if (unlikely(order > MAX_CONTIG_ORDER))
26962670 return;
26972671
net/9p/trans_xen.c+4−4
@@ -454,8 +454,8 @@ static int xen_9pfs_front_probe(struct xenbus_device *dev, · 453 unmodified lines
454454 goto error_xenbus;
455455 }
456456 priv->tag = xenbus_read(xbt, dev->nodename, "tag", NULL);
457− if (!priv->tag) {
458− ret = -EINVAL;
457+ if (IS_ERR(priv->tag)) {
458+ ret = PTR_ERR(priv->tag);
459459 goto error_xenbus;
460460 }
461461 ret = xenbus_transaction_end(xbt, 0);
@@ -525,7 +525,7 @@ static struct xenbus_driver xen_9pfs_front_driver = { · 63 unmodified lines
525525 .otherend_changed = xen_9pfs_front_changed,
526526 };
527527
528−int p9_trans_xen_init(void)
528+static int p9_trans_xen_init(void)
529529 {
530530 if (!xen_domain())
531531 return -ENODEV;
@@ -537,7 +537,7 @@ int p9_trans_xen_init(void) · 5 unmodified lines
537537 }
538538 module_init(p9_trans_xen_init);
539539
540−void p9_trans_xen_exit(void)
540+static void p9_trans_xen_exit(void)
541541 {
542542 v9fs_unregister_trans(&p9_xen_trans);
543543 return xenbus_unregister_driver(&xen_9pfs_front_driver);