git: 9d6ae1e3c26a - main - Revert "Revert "tslog: Annotate some early boot functions""

From: Colin Percival <cperciva_at_FreeBSD.org>
Date: Mon, 05 Jun 2023 05:50:08 UTC
The branch main has been updated by cperciva:

URL: https://cgit.FreeBSD.org/src/commit/?id=9d6ae1e3c26a0c3334a268b587f17dccb9a503d7

commit 9d6ae1e3c26a0c3334a268b587f17dccb9a503d7
Author:     Colin Percival <cperciva@FreeBSD.org>
AuthorDate: 2023-06-04 23:01:31 +0000
Commit:     Colin Percival <cperciva@FreeBSD.org>
CommitDate: 2023-06-05 05:49:38 +0000

    Revert "Revert "tslog: Annotate some early boot functions""
    
    Now that <sys/tslog.h> is wrapped in #ifdef _KERNEL, it's safe to have
    tslog annotations in files which might be built from userland (i.e. in
    subr_boot.c, which is built as part of the boot loader).
    
    This reverts commit 59588a546f55523d6fd37ab42eb08b719311d7d6.
---
 sys/amd64/amd64/fpu.c          | 3 +++
 sys/amd64/amd64/initcpu.c      | 4 ++++
 sys/amd64/amd64/machdep.c      | 2 ++
 sys/amd64/amd64/pmap.c         | 4 ++++
 sys/kern/kern_cons.c           | 3 +++
 sys/kern/link_elf.c            | 7 +++++++
 sys/kern/subr_boot.c           | 5 +++++
 sys/kern/subr_kdb.c            | 3 +++
 sys/kern/subr_param.c          | 4 ++++
 sys/kern/subr_pcpu.c           | 2 ++
 sys/kern/subr_prf.c            | 3 +++
 sys/x86/pci/pci_early_quirks.c | 3 +++
 sys/x86/x86/identcpu.c         | 7 ++++++-
 sys/x86/xen/pv.c               | 3 +++
 14 files changed, 52 insertions(+), 1 deletion(-)

diff --git a/sys/amd64/amd64/fpu.c b/sys/amd64/amd64/fpu.c
index a3421cf0d496..1310a27911fe 100644
--- a/sys/amd64/amd64/fpu.c
+++ b/sys/amd64/amd64/fpu.c
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/sysctl.h>
 #include <sys/sysent.h>
+#include <sys/tslog.h>
 #include <machine/bus.h>
 #include <sys/rman.h>
 #include <sys/signalvar.h>
@@ -360,6 +361,7 @@ fpuinit(void)
 	u_int mxcsr;
 	u_short control;
 
+	TSENTER();
 	if (IS_BSP())
 		fpuinit_bsp1();
 
@@ -401,6 +403,7 @@ fpuinit(void)
 	ldmxcsr(mxcsr);
 	start_emulating();
 	intr_restore(saveintr);
+	TSEXIT();
 }
 
 /*
diff --git a/sys/amd64/amd64/initcpu.c b/sys/amd64/amd64/initcpu.c
index a17ef89ba9f8..0de4bc3e2d60 100644
--- a/sys/amd64/amd64/initcpu.c
+++ b/sys/amd64/amd64/initcpu.c
@@ -276,6 +276,7 @@ initializecpu(void)
 	uint64_t msr;
 	uint32_t cr4;
 
+	TSENTER();
 	cr4 = rcr4();
 	if ((cpu_feature & CPUID_XMM) && (cpu_feature & CPUID_FXSR)) {
 		cr4 |= CR4_FXSR | CR4_XMM;
@@ -311,7 +312,9 @@ initializecpu(void)
 		if (cpu_stdext_feature & CPUID_STDEXT_SMAP)
 			cr4 |= CR4_SMAP;
 	}
+	TSENTER2("load_cr4");
 	load_cr4(cr4);
+	TSEXIT2("load_cr4");
 	/* Reload cpu ext features to reflect cr4 changes */
 	if (IS_BSP() && cold)
 		identify_cpu_ext_features();
@@ -340,6 +343,7 @@ initializecpu(void)
 
 	if (!IS_BSP())
 		cpu_init_small_core();
+	TSEXIT();
 }
 
 void
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
index 757606311123..fa3ffe84bfe1 100644
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -874,6 +874,7 @@ getmemsize(caddr_t kmdp, u_int64_t first)
 	quad_t dcons_addr, dcons_size;
 	int page_counter;
 
+	TSENTER();
 	/*
 	 * Tell the physical memory allocator about pages used to store
 	 * the kernel and preloaded data.  See kmem_bootstrap_free().
@@ -1129,6 +1130,7 @@ do_next:
 
 	/* Map the message buffer. */
 	msgbufp = (struct msgbuf *)PHYS_TO_DMAP(phys_avail[pa_indx]);
+	TSEXIT();
 }
 
 static caddr_t
diff --git a/sys/amd64/amd64/pmap.c b/sys/amd64/amd64/pmap.c
index b2abab429730..123811ed573f 100644
--- a/sys/amd64/amd64/pmap.c
+++ b/sys/amd64/amd64/pmap.c
@@ -1668,6 +1668,7 @@ create_pagetables(vm_paddr_t *firstaddr)
 #endif
 	int i, j, ndm1g, nkpdpe, nkdmpde;
 
+	TSENTER();
 	/* Allocate page table pages for the direct map */
 	ndmpdp = howmany(ptoa(Maxmem), NBPDP);
 	if (ndmpdp < 4)		/* Minimum 4GB of dirmap */
@@ -1884,6 +1885,7 @@ create_pagetables(vm_paddr_t *firstaddr)
 	}
 
 	kernel_pml4 = (pml4_entry_t *)PHYS_TO_DMAP(KPML4phys);
+	TSEXIT();
 }
 
 /*
@@ -1906,6 +1908,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
 	u_long res;
 	int i;
 
+	TSENTER();
 	KERNend = *firstaddr;
 	res = atop(KERNend - (vm_paddr_t)kernphys);
 
@@ -2061,6 +2064,7 @@ pmap_bootstrap(vm_paddr_t *firstaddr)
 		 */
 		load_cr4(rcr4() | CR4_PCIDE);
 	}
+	TSEXIT();
 }
 
 /*
diff --git a/sys/kern/kern_cons.c b/sys/kern/kern_cons.c
index 7c63b8e4ed9c..ff57b2bdfd8a 100644
--- a/sys/kern/kern_cons.c
+++ b/sys/kern/kern_cons.c
@@ -64,6 +64,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/reboot.h>
 #include <sys/sysctl.h>
 #include <sys/sbuf.h>
+#include <sys/tslog.h>
 #include <sys/tty.h>
 #include <sys/uio.h>
 #include <sys/vnode.h>
@@ -134,6 +135,7 @@ cninit(void)
 {
 	struct consdev *best_cn, *cn, **list;
 
+	TSENTER();
 	/*
 	 * Check if we should mute the console (for security reasons perhaps)
 	 * It can be changes dynamically using sysctl kern.consmute
@@ -195,6 +197,7 @@ cninit(void)
 	 */
 	early_putc = NULL;
 #endif
+	TSEXIT();
 }
 
 void
diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c
index b410469b6270..bd8994ff0e4d 100644
--- a/sys/kern/link_elf.c
+++ b/sys/kern/link_elf.c
@@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/vnode.h>
 #include <sys/linker.h>
 #include <sys/sysctl.h>
+#include <sys/tslog.h>
 
 #include <machine/elf.h>
 
@@ -1431,6 +1432,7 @@ relocate_file1(elf_file_t ef, elf_lookup_fn lookup, elf_reloc_fn reloc,
 	const Elf_Rela *rela;
 	const char *symname;
 
+	TSENTER();
 #define	APPLY_RELOCS(iter, tbl, tblsize, type) do {			\
 	for ((iter) = (tbl); (iter) != NULL &&				\
 	    (iter) < (tbl) + (tblsize) / sizeof(*(iter)); (iter)++) {	\
@@ -1449,12 +1451,15 @@ relocate_file1(elf_file_t ef, elf_lookup_fn lookup, elf_reloc_fn reloc,
 } while (0)
 
 	APPLY_RELOCS(rel, ef->rel, ef->relsize, ELF_RELOC_REL);
+	TSENTER2("ef->rela");
 	APPLY_RELOCS(rela, ef->rela, ef->relasize, ELF_RELOC_RELA);
+	TSEXIT2("ef->rela");
 	APPLY_RELOCS(rel, ef->pltrel, ef->pltrelsize, ELF_RELOC_REL);
 	APPLY_RELOCS(rela, ef->pltrela, ef->pltrelasize, ELF_RELOC_RELA);
 
 #undef APPLY_RELOCS
 
+	TSEXIT();
 	return (0);
 }
 
@@ -1950,6 +1955,7 @@ link_elf_ireloc(caddr_t kmdp)
 	struct elf_file eff;
 	elf_file_t ef;
 
+	TSENTER();
 	ef = &eff;
 
 	bzero_early(ef, sizeof(*ef));
@@ -1966,6 +1972,7 @@ link_elf_ireloc(caddr_t kmdp)
 
 	link_elf_preload_parse_symbols(ef);
 	relocate_file1(ef, elf_lookup_ifunc, elf_reloc, true);
+	TSEXIT();
 }
 
 #if defined(__aarch64__) || defined(__amd64__)
diff --git a/sys/kern/subr_boot.c b/sys/kern/subr_boot.c
index 057ffb5b7e08..73e75ba11750 100644
--- a/sys/kern/subr_boot.c
+++ b/sys/kern/subr_boot.c
@@ -48,6 +48,7 @@ __FBSDID("$FreeBSD$");
 #endif
 #include <sys/reboot.h>
 #include <sys/boot.h>
+#include <sys/tslog.h>
 
 #ifdef _KERNEL
 #define SETENV(k, v)	kern_setenv(k, v)
@@ -95,12 +96,14 @@ boot_env_to_howto(void)
 	int i, howto;
 	char *val;
 
+	TSENTER();
 	for (howto = 0, i = 0; howto_names[i].ev != NULL; i++) {
 		val = GETENV(howto_names[i].ev);
 		if (val != NULL && strcasecmp(val, "no") != 0)
 			howto |= howto_names[i].mask;
 		FREE(val);
 	}
+	TSEXIT();
 	return (howto);
 }
 
@@ -193,12 +196,14 @@ boot_parse_cmdline_delim(char *cmdline, const char *delim)
 	char *v;
 	int howto;
 
+	TSENTER();
 	howto = 0;
 	while ((v = strsep(&cmdline, delim)) != NULL) {
 		if (*v == '\0')
 			continue;
 		howto |= boot_parse_arg(v);
 	}
+	TSEXIT();
 	return (howto);
 }
 
diff --git a/sys/kern/subr_kdb.c b/sys/kern/subr_kdb.c
index f8b37c2319b0..2f419b4d8ad5 100644
--- a/sys/kern/subr_kdb.c
+++ b/sys/kern/subr_kdb.c
@@ -46,6 +46,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/smp.h>
 #include <sys/stack.h>
 #include <sys/sysctl.h>
+#include <sys/tslog.h>
 
 #include <machine/kdb.h>
 #include <machine/pcb.h>
@@ -559,6 +560,7 @@ kdb_init(void)
 	struct kdb_dbbe *be, **iter;
 	int cur_pri, pri;
 
+	TSENTER();
 	kdb_active = 0;
 	kdb_dbbe = NULL;
 	cur_pri = -1;
@@ -582,6 +584,7 @@ kdb_init(void)
 		printf("KDB: current backend: %s\n",
 		    kdb_dbbe->dbbe_name);
 	}
+	TSEXIT();
 }
 
 /*
diff --git a/sys/kern/subr_param.c b/sys/kern/subr_param.c
index bb8cb5871af2..b988f28944cc 100644
--- a/sys/kern/subr_param.c
+++ b/sys/kern/subr_param.c
@@ -171,6 +171,7 @@ void
 init_param1(void)
 {
 
+	TSENTER();
 #if !defined(__arm64__)
 	TUNABLE_INT_FETCH("kern.kstack_pages", &kstack_pages);
 #endif
@@ -245,6 +246,7 @@ init_param1(void)
 		pid_max = 300;
 
 	TUNABLE_INT_FETCH("vfs.unmapped_buf_allowed", &unmapped_buf_allowed);
+	TSEXIT();
 }
 
 /*
@@ -254,6 +256,7 @@ void
 init_param2(long physpages)
 {
 
+	TSENTER();
 	/* Base parameters */
 	maxusers = MAXUSERS;
 	TUNABLE_INT_FETCH("kern.maxusers", &maxusers);
@@ -335,6 +338,7 @@ init_param2(long physpages)
 	if (maxpipekva > (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) / 64)
 		maxpipekva = (VM_MAX_KERNEL_ADDRESS - VM_MIN_KERNEL_ADDRESS) /
 		    64;
+	TSEXIT();
 }
 
 /*
diff --git a/sys/kern/subr_pcpu.c b/sys/kern/subr_pcpu.c
index c4c220d66c97..c13a52dffccd 100644
--- a/sys/kern/subr_pcpu.c
+++ b/sys/kern/subr_pcpu.c
@@ -103,6 +103,7 @@ dpcpu_init(void *dpcpu, int cpuid)
 {
 	struct pcpu *pcpu;
 
+	TSENTER();
 	pcpu = pcpu_find(cpuid);
 	pcpu->pc_dynamic = (uintptr_t)dpcpu - DPCPU_START;
 
@@ -115,6 +116,7 @@ dpcpu_init(void *dpcpu, int cpuid)
 	 * Place it in the global pcpu offset array.
 	 */
 	dpcpu_off[cpuid] = pcpu->pc_dynamic;
+	TSEXIT();
 }
 
 static void
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
index 0506c21b5ad8..db4ef168bc70 100644
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -58,6 +58,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/proc.h>
 #include <sys/stddef.h>
 #include <sys/sysctl.h>
+#include <sys/tslog.h>
 #include <sys/tty.h>
 #include <sys/syslog.h>
 #include <sys/cons.h>
@@ -1037,6 +1038,7 @@ msgbufinit(void *ptr, int size)
 	static struct msgbuf *oldp = NULL;
 	bool print_boot_tag;
 
+	TSENTER();
 	size -= sizeof(*msgbufp);
 	cp = (char *)ptr;
 	print_boot_tag = !msgbufmapped;
@@ -1052,6 +1054,7 @@ msgbufinit(void *ptr, int size)
 	if (print_boot_tag && *current_boot_tag != '\0')
 		printf("%s\n", current_boot_tag);
 	oldp = msgbufp;
+	TSEXIT();
 }
 
 /* Sysctls for accessing/clearing the msgbuf */
diff --git a/sys/x86/pci/pci_early_quirks.c b/sys/x86/pci/pci_early_quirks.c
index 97ba7e1a0631..ab8072b38d14 100644
--- a/sys/x86/pci/pci_early_quirks.c
+++ b/sys/x86/pci/pci_early_quirks.c
@@ -33,6 +33,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/bus.h>
 #include <sys/kernel.h>
 #include <sys/sysctl.h>
+#include <sys/tslog.h>
 
 #include <vm/vm.h>
 /* XXX: enable this once the KPI is available */
@@ -317,5 +318,7 @@ void
 pci_early_quirks(void)
 {
 
+	TSENTER();
 	intel_graphics_stolen();
+	TSEXIT();
 }
diff --git a/sys/x86/x86/identcpu.c b/sys/x86/x86/identcpu.c
index 42cca3250481..3ff59344e17d 100644
--- a/sys/x86/x86/identcpu.c
+++ b/sys/x86/x86/identcpu.c
@@ -1424,6 +1424,7 @@ identify_hypervisor(void)
 	u_int regs[4];
 	char *p;
 
+	TSENTER();
 	/*
 	 * If CPUID2_HV is set, we are running in a hypervisor environment.
 	 */
@@ -1432,8 +1433,10 @@ identify_hypervisor(void)
 		identify_hypervisor_cpuid_base();
 
 		/* If we have a definitive vendor, we can return now. */
-		if (*hv_vendor != '\0')
+		if (*hv_vendor != '\0') {
+			TSEXIT();
 			return;
+		}
 	}
 
 	/*
@@ -1446,11 +1449,13 @@ identify_hypervisor(void)
 			if (regs[1] == VMW_HVMAGIC) {
 				vm_guest = VM_GUEST_VMWARE;
 				freeenv(p);
+				TSEXIT();
 				return;
 			}
 		}
 		freeenv(p);
 	}
+	TSEXIT();
 }
 
 bool
diff --git a/sys/x86/xen/pv.c b/sys/x86/xen/pv.c
index 367214fe35be..b3da26e9b78e 100644
--- a/sys/x86/xen/pv.c
+++ b/sys/x86/xen/pv.c
@@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
 #include <sys/mutex.h>
 #include <sys/smp.h>
 #include <sys/efi.h>
+#include <sys/tslog.h>
 
 #include <vm/vm.h>
 #include <vm/vm_extern.h>
@@ -417,6 +418,7 @@ xen_pvh_parse_preload_data(uint64_t modulep)
 	char *envp;
 	char acpi_rsdp[19];
 
+	TSENTER();
 	if (start_info->modlist_paddr != 0) {
 		struct hvm_modlist_entry *mod;
 		const char *cmdline;
@@ -507,6 +509,7 @@ xen_pvh_parse_preload_data(uint64_t modulep)
 #ifdef DDB
 	xen_pvh_parse_symtab();
 #endif
+	TSEXIT();
 	return (kmdp);
 }