mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-04 16:52:06 +10:00 
			
		
		
		
	By using lockdep_assert_*() from seqlock.h, the spaghetti monster
attacked.
Attack back by reducing seqlock.h dependencies from two key high level headers:
 - <linux/seqlock.h>:               -Remove <linux/ww_mutex.h>
 - <linux/time.h>:                  -Remove <linux/seqlock.h>
 - <linux/sched.h>:                 +Add    <linux/seqlock.h>
The price was to add it to sched.h ...
Core header fallout, we add direct header dependencies instead of gaining them
parasitically from higher level headers:
 - <linux/dynamic_queue_limits.h>:  +Add <asm/bug.h>
 - <linux/hrtimer.h>:               +Add <linux/seqlock.h>
 - <linux/ktime.h>:                 +Add <asm/bug.h>
 - <linux/lockdep.h>:               +Add <linux/smp.h>
 - <linux/sched.h>:                 +Add <linux/seqlock.h>
 - <linux/videodev2.h>:             +Add <linux/kernel.h>
Arch headers fallout:
 - PARISC: <asm/timex.h>:           +Add <asm/special_insns.h>
 - SH:     <asm/io.h>:              +Add <asm/page.h>
 - SPARC:  <asm/timer_64.h>:        +Add <uapi/asm/asi.h>
 - SPARC:  <asm/vvar.h>:            +Add <asm/processor.h>, <asm/barrier.h>
                                    -Remove <linux/seqlock.h>
 - X86:    <asm/fixmap.h>:          +Add <asm/pgtable_types.h>
                                    -Remove <asm/acpi.h>
There's also a bunch of parasitic header dependency fallout in .c files, not listed
separately.
[ mingo: Extended the changelog, split up & fixed the original patch. ]
Co-developed-by: Ingo Molnar <mingo@kernel.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20200804133438.GK2674@hirez.programming.kicks-ass.net
		
	
			
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0
 | 
						|
#include <linux/types.h>
 | 
						|
 | 
						|
#include <asm/xen/hypercall.h>
 | 
						|
#include <asm/xen/page.h>
 | 
						|
 | 
						|
#include <asm/fixmap.h>
 | 
						|
 | 
						|
#include "xen-ops.h"
 | 
						|
 | 
						|
void xen_pv_pre_suspend(void)
 | 
						|
{
 | 
						|
	xen_mm_pin_all();
 | 
						|
 | 
						|
	xen_start_info->store_mfn = mfn_to_pfn(xen_start_info->store_mfn);
 | 
						|
	xen_start_info->console.domU.mfn =
 | 
						|
		mfn_to_pfn(xen_start_info->console.domU.mfn);
 | 
						|
 | 
						|
	BUG_ON(!irqs_disabled());
 | 
						|
 | 
						|
	HYPERVISOR_shared_info = &xen_dummy_shared_info;
 | 
						|
	if (HYPERVISOR_update_va_mapping(fix_to_virt(FIX_PARAVIRT_BOOTMAP),
 | 
						|
					 __pte_ma(0), 0))
 | 
						|
		BUG();
 | 
						|
}
 | 
						|
 | 
						|
void xen_pv_post_suspend(int suspend_cancelled)
 | 
						|
{
 | 
						|
	xen_build_mfn_list_list();
 | 
						|
	set_fixmap(FIX_PARAVIRT_BOOTMAP, xen_start_info->shared_info);
 | 
						|
	HYPERVISOR_shared_info = (void *)fix_to_virt(FIX_PARAVIRT_BOOTMAP);
 | 
						|
	xen_setup_mfn_list_list();
 | 
						|
 | 
						|
	if (suspend_cancelled) {
 | 
						|
		xen_start_info->store_mfn =
 | 
						|
			pfn_to_mfn(xen_start_info->store_mfn);
 | 
						|
		xen_start_info->console.domU.mfn =
 | 
						|
			pfn_to_mfn(xen_start_info->console.domU.mfn);
 | 
						|
	} else {
 | 
						|
#ifdef CONFIG_SMP
 | 
						|
		BUG_ON(xen_cpu_initialized_map == NULL);
 | 
						|
		cpumask_copy(xen_cpu_initialized_map, cpu_online_mask);
 | 
						|
#endif
 | 
						|
		xen_vcpu_restore();
 | 
						|
	}
 | 
						|
 | 
						|
	xen_mm_unpin_all();
 | 
						|
}
 |