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

x86/xen: remove 32-bit pv leftovers

There are some remaining 32-bit pv-guest support leftovers in the Xen
hypercall interface. Remove them.

Signed-off-by: Juergen Gross <jgross@suse.com>
Link: https://lore.kernel.org/r/20211028081221.2475-2-jgross@suse.com
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>
Signed-off-by: Boris Ostrovsky <boris.ostrovsky@oracle.com>

authored by

Juergen Gross and committed by
Boris Ostrovsky
d99bb72a a67efff2

+18 -47
+8 -30
arch/x86/include/asm/xen/hypercall.h
··· 323 323 static inline int 324 324 HYPERVISOR_update_descriptor(u64 ma, u64 desc) 325 325 { 326 - if (sizeof(u64) == sizeof(long)) 327 - return _hypercall2(int, update_descriptor, ma, desc); 328 - return _hypercall4(int, update_descriptor, ma, ma>>32, desc, desc>>32); 326 + return _hypercall2(int, update_descriptor, ma, desc); 329 327 } 330 328 331 329 static inline long ··· 342 344 HYPERVISOR_update_va_mapping(unsigned long va, pte_t new_val, 343 345 unsigned long flags) 344 346 { 345 - if (sizeof(new_val) == sizeof(long)) 346 - return _hypercall3(int, update_va_mapping, va, 347 - new_val.pte, flags); 348 - else 349 - return _hypercall4(int, update_va_mapping, va, 350 - new_val.pte, new_val.pte >> 32, flags); 347 + return _hypercall3(int, update_va_mapping, va, new_val.pte, flags); 351 348 } 352 349 353 350 static inline int ··· 454 461 { 455 462 mcl->op = __HYPERVISOR_update_va_mapping; 456 463 mcl->args[0] = va; 457 - if (sizeof(new_val) == sizeof(long)) { 458 - mcl->args[1] = new_val.pte; 459 - mcl->args[2] = flags; 460 - } else { 461 - mcl->args[1] = new_val.pte; 462 - mcl->args[2] = new_val.pte >> 32; 463 - mcl->args[3] = flags; 464 - } 464 + mcl->args[1] = new_val.pte; 465 + mcl->args[2] = flags; 465 466 466 - trace_xen_mc_entry(mcl, sizeof(new_val) == sizeof(long) ? 3 : 4); 467 + trace_xen_mc_entry(mcl, 3); 467 468 } 468 469 469 470 static inline void ··· 465 478 struct desc_struct desc) 466 479 { 467 480 mcl->op = __HYPERVISOR_update_descriptor; 468 - if (sizeof(maddr) == sizeof(long)) { 469 - mcl->args[0] = maddr; 470 - mcl->args[1] = *(unsigned long *)&desc; 471 - } else { 472 - u32 *p = (u32 *)&desc; 481 + mcl->args[0] = maddr; 482 + mcl->args[1] = *(unsigned long *)&desc; 473 483 474 - mcl->args[0] = maddr; 475 - mcl->args[1] = maddr >> 32; 476 - mcl->args[2] = *p++; 477 - mcl->args[3] = *p; 478 - } 479 - 480 - trace_xen_mc_entry(mcl, sizeof(maddr) == sizeof(long) ? 2 : 4); 484 + trace_xen_mc_entry(mcl, 2); 481 485 } 482 486 483 487 static inline void
+10 -17
drivers/xen/mem-reservation.c
··· 35 35 for (i = 0; i < count; i++) { 36 36 struct page *page = pages[i]; 37 37 unsigned long pfn = page_to_pfn(page); 38 + int ret; 38 39 39 40 BUG_ON(!page); 40 41 ··· 47 46 48 47 set_phys_to_machine(pfn, frames[i]); 49 48 50 - /* Link back into the page tables if not highmem. */ 51 - if (!PageHighMem(page)) { 52 - int ret; 53 - 54 - ret = HYPERVISOR_update_va_mapping( 55 - (unsigned long)__va(pfn << PAGE_SHIFT), 56 - mfn_pte(frames[i], PAGE_KERNEL), 57 - 0); 58 - BUG_ON(ret); 59 - } 49 + ret = HYPERVISOR_update_va_mapping( 50 + (unsigned long)__va(pfn << PAGE_SHIFT), 51 + mfn_pte(frames[i], PAGE_KERNEL), 0); 52 + BUG_ON(ret); 60 53 } 61 54 } 62 55 EXPORT_SYMBOL_GPL(__xenmem_reservation_va_mapping_update); ··· 63 68 for (i = 0; i < count; i++) { 64 69 struct page *page = pages[i]; 65 70 unsigned long pfn = page_to_pfn(page); 71 + int ret; 66 72 67 73 /* 68 74 * We don't support PV MMU when Linux and Xen are using ··· 71 75 */ 72 76 BUILD_BUG_ON(XEN_PAGE_SIZE != PAGE_SIZE); 73 77 74 - if (!PageHighMem(page)) { 75 - int ret; 78 + ret = HYPERVISOR_update_va_mapping( 79 + (unsigned long)__va(pfn << PAGE_SHIFT), 80 + __pte_ma(0), 0); 81 + BUG_ON(ret); 76 82 77 - ret = HYPERVISOR_update_va_mapping( 78 - (unsigned long)__va(pfn << PAGE_SHIFT), 79 - __pte_ma(0), 0); 80 - BUG_ON(ret); 81 - } 82 83 __set_phys_to_machine(pfn, INVALID_P2M_ENTRY); 83 84 } 84 85 }