Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F147970422
D36797.1784966209.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
11 KB
Referenced Files
None
Subscribers
None
D36797.1784966209.diff
View Options
diff --git a/sys/amd64/amd64/machdep.c b/sys/amd64/amd64/machdep.c
--- a/sys/amd64/amd64/machdep.c
+++ b/sys/amd64/amd64/machdep.c
@@ -256,7 +256,8 @@
* Good {morning,afternoon,evening,night}.
*/
startrtclock();
- printcpuinfo();
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printcpuinfo();
/*
* Display physical memory if SMBIOS reports reasonable amount.
@@ -269,7 +270,8 @@
}
if (memsize < ptoa((uintmax_t)vm_free_count()))
memsize = ptoa((uintmax_t)Maxmem);
- printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("real memory = %ju (%ju MB)\n", memsize, memsize >> 20);
realmem = atop(memsize);
/*
@@ -293,9 +295,10 @@
vm_ksubmap_init(&kmi);
- printf("avail memory = %ju (%ju MB)\n",
- ptoa((uintmax_t)vm_free_count()),
- ptoa((uintmax_t)vm_free_count()) / 1048576);
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("avail memory = %ju (%ju MB)\n",
+ ptoa((uintmax_t)vm_free_count()),
+ ptoa((uintmax_t)vm_free_count()) / 1048576);
#ifdef DEV_PCI
if (bootverbose && intel_graphics_stolen_base != 0)
printf("intel stolen mem: base %#jx size %ju MB\n",
diff --git a/sys/dev/acpica/acpi.c b/sys/dev/acpica/acpi.c
--- a/sys/dev/acpica/acpi.c
+++ b/sys/dev/acpica/acpi.c
@@ -53,6 +53,7 @@
#include <sys/smp.h>
#include <sys/timetc.h>
#include <sys/uuid.h>
+#include <sys/systm.h>
#if defined(__i386__) || defined(__amd64__)
#include <machine/clock.h>
@@ -1402,6 +1403,15 @@
if (rle->type == SYS_RES_IRQ)
continue;
+ /*
+ * Don't reserve SYS_RES_MEMORY. Hyper-V ACPI firmware might try to
+ * allocate a massive range blocking other devices from being able
+ * to allocate memory later down the road.
+ */
+ if (vm_guest == VM_GUEST_HV && rle->type == SYS_RES_MEMORY)
+ continue;
+
+
/*
* Don't reserve the resource if it is already allocated.
* The acpi_ec(4) driver can allocate its resources early
diff --git a/sys/dev/acpica/acpi_pxm.c b/sys/dev/acpica/acpi_pxm.c
--- a/sys/dev/acpica/acpi_pxm.c
+++ b/sys/dev/acpica/acpi_pxm.c
@@ -284,15 +284,18 @@
break;
cpup = cpu_find(cpu->ApicId);
if (cpup != NULL) {
- printf("SRAT: Duplicate local APIC ID %u\n",
- cpu->ApicId);
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Duplicate local APIC ID %u\n",
+ cpu->ApicId);
*(int *)arg = ENXIO;
break;
}
cpup = cpu_add(cpu->ApicId, domain);
- if (cpup == NULL)
- printf("SRAT: Ignoring local APIC ID %u (too high)\n",
- cpu->ApicId);
+ if (cpup == NULL) {
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Ignoring local APIC ID %u (too high)\n",
+ cpu->ApicId);
+ }
break;
case ACPI_SRAT_TYPE_X2APIC_CPU_AFFINITY:
x2apic = (ACPI_SRAT_X2APIC_CPU_AFFINITY *)entry;
@@ -306,9 +309,11 @@
KASSERT(cpu_find(x2apic->ApicId) == NULL,
("Duplicate local APIC ID %u", x2apic->ApicId));
cpup = cpu_add(x2apic->ApicId, x2apic->ProximityDomain);
- if (cpup == NULL)
- printf("SRAT: Ignoring local APIC ID %u (too high)\n",
- x2apic->ApicId);
+ if (cpup == NULL) {
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Ignoring local APIC ID %u (too high)\n",
+ x2apic->ApicId);
+ }
break;
case ACPI_SRAT_TYPE_GICC_AFFINITY:
gicc = (ACPI_SRAT_GICC_AFFINITY *)entry;
@@ -322,9 +327,11 @@
KASSERT(cpu_find(gicc->AcpiProcessorUid) == NULL,
("Duplicate CPU UID %u", gicc->AcpiProcessorUid));
cpup = cpu_add(gicc->AcpiProcessorUid, gicc->ProximityDomain);
- if (cpup == NULL)
- printf("SRAT: Ignoring CPU UID %u (too high)\n",
- gicc->AcpiProcessorUid);
+ if (cpup == NULL) {
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Ignoring CPU UID %u (too high)\n",
+ gicc->AcpiProcessorUid);
+ }
break;
case ACPI_SRAT_TYPE_MEMORY_AFFINITY:
mem = (ACPI_SRAT_MEM_AFFINITY *)entry;
@@ -342,12 +349,14 @@
break;
if (base >= maxphyaddr ||
!overlaps_phys_avail(base, base + length)) {
- printf("SRAT: Ignoring memory at addr 0x%jx\n",
- (uintmax_t)base);
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Ignoring memory at addr 0x%jx\n",
+ (uintmax_t)base);
break;
}
if (num_mem == VM_PHYSSEG_MAX) {
- printf("SRAT: Too many memory regions\n");
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Too many memory regions\n");
*(int *)arg = ENXIO;
break;
}
@@ -367,7 +376,8 @@
if (mem_info[i].end <= base)
continue;
if (mem_info[i].start < base + length) {
- printf("SRAT: Overlapping memory entries\n");
+ if (!(efi_boot && vm_guest == VM_GUEST_HV))
+ printf("SRAT: Overlapping memory entries\n");
*(int *)arg = ENXIO;
return;
}
diff --git a/sys/dev/hyperv/vmbus/hyperv.c b/sys/dev/hyperv/vmbus/hyperv.c
--- a/sys/dev/hyperv/vmbus/hyperv.c
+++ b/sys/dev/hyperv/vmbus/hyperv.c
@@ -38,6 +38,8 @@
#include <sys/systm.h>
#include <sys/timetc.h>
+#include <machine/md_var.h>
+
#include <vm/vm.h>
#include <vm/vm_extern.h>
#include <vm/vm_kern.h>
@@ -166,6 +168,10 @@
*/
return (false);
}
+
+ if (efi_boot)
+ return (true);
+
hyperv_features = regs[0];
hyperv_pm_features = regs[2];
hyperv_features3 = regs[3];
diff --git a/sys/dev/vt/vt_core.c b/sys/dev/vt/vt_core.c
--- a/sys/dev/vt/vt_core.c
+++ b/sys/dev/vt/vt_core.c
@@ -283,12 +283,14 @@
if (!vty_enabled(VTY_VT))
return;
- if (main_vd->vd_driver != NULL)
- printf("VT(%s): %s %ux%u\n", main_vd->vd_driver->vd_name,
- (main_vd->vd_flags & VDF_TEXTMODE) ? "text" : "resolution",
- main_vd->vd_width, main_vd->vd_height);
- else
- printf("VT: init without driver.\n");
+ if (vm_guest != VM_GUEST_HV) {
+ if (main_vd->vd_driver != NULL)
+ printf("VT(%s): %s %ux%u\n", main_vd->vd_driver->vd_name,
+ (main_vd->vd_flags & VDF_TEXTMODE) ? "text" : "resolution",
+ main_vd->vd_width, main_vd->vd_height);
+ else
+ printf("VT: init without driver.\n");
+ }
mtx_init(&main_vd->vd_lock, "vtdev", NULL, MTX_DEF);
cv_init(&main_vd->vd_winswitch, "vtwswt");
@@ -3143,20 +3145,23 @@
if (main_vd->vd_driver == NULL) {
main_vd->vd_driver = drv;
- printf("VT: initialize with new VT driver \"%s\".\n",
- drv->vd_name);
+ if (vm_guest != VM_GUEST_HV)
+ printf("VT: initialize with new VT driver \"%s\".\n",
+ drv->vd_name);
} else {
/*
* Check if have rights to replace current driver. For example:
* it is bad idea to replace KMS driver with generic VGA one.
*/
if (drv->vd_priority <= main_vd->vd_driver->vd_priority) {
- printf("VT: Driver priority %d too low. Current %d\n ",
- drv->vd_priority, main_vd->vd_driver->vd_priority);
+ if (vm_guest != VM_GUEST_HV)
+ printf("VT: Driver priority %d too low. Current %d\n ",
+ drv->vd_priority, main_vd->vd_driver->vd_priority);
return;
}
- printf("VT: Replacing driver \"%s\" with new \"%s\".\n",
- main_vd->vd_driver->vd_name, drv->vd_name);
+ if (vm_guest != VM_GUEST_HV)
+ printf("VT: Replacing driver \"%s\" with new \"%s\".\n",
+ main_vd->vd_driver->vd_name, drv->vd_name);
}
vt_replace_backend(drv, softc);
diff --git a/sys/gdb/gdb_main.c b/sys/gdb/gdb_main.c
--- a/sys/gdb/gdb_main.c
+++ b/sys/gdb/gdb_main.c
@@ -83,19 +83,22 @@
gdb_cur = dp;
}
}
- if (gdb_cur != NULL) {
- printf("GDB: debug ports:");
- SET_FOREACH(iter, gdb_dbgport_set) {
- dp = *iter;
- if (dp->gdb_active == 0)
- printf(" %s", dp->gdb_name);
- }
- printf("\n");
- } else
- printf("GDB: no debug ports present\n");
+ if (vm_guest != VM_GUEST_HV) {
+ if (gdb_cur != NULL) {
+ printf("GDB: debug ports:");
+ SET_FOREACH(iter, gdb_dbgport_set) {
+ dp = *iter;
+ if (dp->gdb_active == 0)
+ printf(" %s", dp->gdb_name);
+ }
+ printf("\n");
+ } else
+ printf("GDB: no debug ports present\n");
+ }
if (gdb_cur != NULL) {
gdb_cur->gdb_init();
- printf("GDB: current port: %s\n", gdb_cur->gdb_name);
+ if (vm_guest != VM_GUEST_HV)
+ printf("GDB: current port: %s\n", gdb_cur->gdb_name);
}
if (gdb_cur != NULL) {
cur_pri = (boothowto & RB_GDB) ? 2 : 0;
diff --git a/sys/kern/init_main.c b/sys/kern/init_main.c
--- a/sys/kern/init_main.c
+++ b/sys/kern/init_main.c
@@ -353,20 +353,23 @@
static void
print_caddr_t(void *data)
{
- printf("%s", (char *)data);
+ if (vm_guest != VM_GUEST_HV)
+ printf("%s", (char *)data);
}
static void
print_version(void *data __unused)
{
- int len;
-
- /* Strip a trailing newline from version. */
- len = strlen(version);
- while (len > 0 && version[len - 1] == '\n')
- len--;
- printf("%.*s %s\n", len, version, machine);
- printf("%s\n", compiler_version);
+ if (vm_guest != VM_GUEST_HV) {
+ int len;
+
+ /* Strip a trailing newline from version. */
+ len = strlen(version);
+ while (len > 0 && version[len - 1] == '\n')
+ len--;
+ printf("%.*s %s\n", len, version, machine);
+ printf("%s\n", compiler_version);
+ }
}
SYSINIT(announce, SI_SUB_COPYRIGHT, SI_ORDER_FIRST, print_caddr_t,
diff --git a/sys/kern/kern_tc.c b/sys/kern/kern_tc.c
--- a/sys/kern/kern_tc.c
+++ b/sys/kern/kern_tc.c
@@ -1195,9 +1195,10 @@
printf(" -- Insufficient hz, needs at least %u\n", u);
}
} else if (tc->tc_quality >= 0 || bootverbose) {
- printf("Timecounter \"%s\" frequency %ju Hz quality %d\n",
- tc->tc_name, (uintmax_t)tc->tc_frequency,
- tc->tc_quality);
+ if (vm_guest != VM_GUEST_HV)
+ printf("Timecounter \"%s\" frequency %ju Hz quality %d\n",
+ tc->tc_name, (uintmax_t)tc->tc_frequency,
+ tc->tc_quality);
}
/*
diff --git a/sys/kern/subr_kdb.c b/sys/kern/subr_kdb.c
--- a/sys/kern/subr_kdb.c
+++ b/sys/kern/subr_kdb.c
@@ -532,15 +532,17 @@
}
}
if (kdb_dbbe != NULL) {
- printf("KDB: debugger backends:");
- SET_FOREACH(iter, kdb_dbbe_set) {
- be = *iter;
- if (be->dbbe_active == 0)
- printf(" %s", be->dbbe_name);
+ if (vm_guest != VM_GUEST_HV) {
+ printf("KDB: debugger backends:");
+ SET_FOREACH(iter, kdb_dbbe_set) {
+ be = *iter;
+ if (be->dbbe_active == 0)
+ printf(" %s", be->dbbe_name);
+ }
+ printf("\n");
+ printf("KDB: current backend: %s\n",
+ kdb_dbbe->dbbe_name);
}
- printf("\n");
- printf("KDB: current backend: %s\n",
- kdb_dbbe->dbbe_name);
}
}
diff --git a/sys/kern/subr_prf.c b/sys/kern/subr_prf.c
--- a/sys/kern/subr_prf.c
+++ b/sys/kern/subr_prf.c
@@ -1049,8 +1049,10 @@
if (msgbufmapped && oldp != msgbufp)
msgbuf_copy(oldp, msgbufp);
msgbufmapped = true;
- if (print_boot_tag && *current_boot_tag != '\0')
- printf("%s\n", current_boot_tag);
+ if (print_boot_tag && *current_boot_tag != '\0') {
+ if (vm_guest != VM_GUEST_HV)
+ printf("%s\n", current_boot_tag);
+ }
oldp = msgbufp;
}
diff --git a/sys/modules/hyperv/Makefile b/sys/modules/hyperv/Makefile
--- a/sys/modules/hyperv/Makefile
+++ b/sys/modules/hyperv/Makefile
@@ -1,5 +1,5 @@
# $FreeBSD$
-SUBDIR = vmbus netvsc storvsc utilities hvsock
+SUBDIR = vmbus netvsc storvsc utilities hvsock pcib
.include <bsd.subdir.mk>
diff --git a/sys/modules/hyperv/pcib/Makefile b/sys/modules/hyperv/pcib/Makefile
--- a/sys/modules/hyperv/pcib/Makefile
+++ b/sys/modules/hyperv/pcib/Makefile
@@ -3,7 +3,7 @@
.PATH: ${SRCTOP}/sys/dev/hyperv/pcib \
${SRCTOP}/sys/dev/hyperv/vmbus
-KMOD= vmbus_pcib
+KMOD= hv_vmbus_pcib
SRCS= vmbus_pcib.c
SRCS+= bus_if.h device_if.h pci_if.h pcib_if.h vmbus_if.h
diff --git a/sys/vm/memguard.c b/sys/vm/memguard.c
--- a/sys/vm/memguard.c
+++ b/sys/vm/memguard.c
@@ -215,10 +215,12 @@
PAGE_SIZE, 0, M_WAITOK);
memguard_base = base;
- printf("MEMGUARD DEBUGGING ALLOCATOR INITIALIZED:\n");
- printf("\tMEMGUARD map base: 0x%lx\n", (u_long)base);
- printf("\tMEMGUARD map size: %jd KBytes\n",
- (uintmax_t)memguard_mapsize >> 10);
+ if (vm_guest != VM_GUEST_HV) {
+ printf("MEMGUARD DEBUGGING ALLOCATOR INITIALIZED:\n");
+ printf("\tMEMGUARD map base: 0x%lx\n", (u_long)base);
+ printf("\tMEMGUARD map size: %jd KBytes\n",
+ (uintmax_t)memguard_mapsize >> 10);
+ }
}
/*
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Jul 25, 7:56 AM (9 h, 11 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29253774
Default Alt Text
D36797.1784966209.diff (11 KB)
Attached To
Mode
D36797: Azure FreeBSD Gen 2 Support
Attached
Detach File
Event Timeline
Log In to Comment