Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F146546133
D40552.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
4 KB
Referenced Files
None
Subscribers
None
D40552.diff
View Options
diff --git a/usr.sbin/bhyve/Makefile b/usr.sbin/bhyve/Makefile
--- a/usr.sbin/bhyve/Makefile
+++ b/usr.sbin/bhyve/Makefile
@@ -28,7 +28,6 @@
crc16.c \
ctl_scsi_all.c \
ctl_util.c \
- e820.c \
gdb.c \
hda_codec.c \
inout.c \
@@ -37,7 +36,6 @@
kernemu_dev.c \
mem.c \
mevent.c \
- mptbl.c \
net_backends.c \
net_utils.c \
pci_ahci.c \
diff --git a/usr.sbin/bhyve/amd64/Makefile.inc b/usr.sbin/bhyve/amd64/Makefile.inc
--- a/usr.sbin/bhyve/amd64/Makefile.inc
+++ b/usr.sbin/bhyve/amd64/Makefile.inc
@@ -1,6 +1,8 @@
SRCS+= \
atkbdc.c \
+ e820.c \
fwctl.c \
+ mptbl.c \
post.c \
ps2kbd.c \
ps2mouse.c \
diff --git a/usr.sbin/bhyve/e820.h b/usr.sbin/bhyve/amd64/e820.h
rename from usr.sbin/bhyve/e820.h
rename to usr.sbin/bhyve/amd64/e820.h
--- a/usr.sbin/bhyve/e820.h
+++ b/usr.sbin/bhyve/amd64/e820.h
@@ -41,5 +41,5 @@
const uint64_t alignment, const enum e820_memory_type type,
const enum e820_allocation_strategy strategy);
void e820_dump_table(void);
-struct qemu_fwcfg_item *e820_get_fwcfg_item(void);
int e820_init(struct vmctx *const ctx);
+int e820_finalize(void);
diff --git a/usr.sbin/bhyve/e820.c b/usr.sbin/bhyve/amd64/e820.c
rename from usr.sbin/bhyve/e820.c
rename to usr.sbin/bhyve/amd64/e820.c
--- a/usr.sbin/bhyve/e820.c
+++ b/usr.sbin/bhyve/amd64/e820.c
@@ -105,7 +105,7 @@
}
}
-struct qemu_fwcfg_item *
+static struct qemu_fwcfg_item *
e820_get_fwcfg_item(void)
{
struct qemu_fwcfg_item *fwcfg_item;
@@ -466,3 +466,25 @@
return (0);
}
+
+int
+e820_finalize(void)
+{
+ struct qemu_fwcfg_item *e820_fwcfg_item;
+ int error;
+
+ e820_fwcfg_item = e820_get_fwcfg_item();
+ if (e820_fwcfg_item == NULL) {
+ warnx("invalid e820 table");
+ return (ENOMEM);
+ }
+ error = qemu_fwcfg_add_file("etc/e820",
+ e820_fwcfg_item->size, e820_fwcfg_item->data);
+ if (error != 0) {
+ warnx("could not add qemu fwcfg etc/e820");
+ return (error);
+ }
+ free(e820_fwcfg_item);
+
+ return (0);
+}
diff --git a/usr.sbin/bhyve/mptbl.h b/usr.sbin/bhyve/amd64/mptbl.h
rename from usr.sbin/bhyve/mptbl.h
rename to usr.sbin/bhyve/amd64/mptbl.h
diff --git a/usr.sbin/bhyve/mptbl.c b/usr.sbin/bhyve/amd64/mptbl.c
rename from usr.sbin/bhyve/mptbl.c
rename to usr.sbin/bhyve/amd64/mptbl.c
diff --git a/usr.sbin/bhyve/bhyverun.c b/usr.sbin/bhyve/bhyverun.c
--- a/usr.sbin/bhyve/bhyverun.c
+++ b/usr.sbin/bhyve/bhyverun.c
@@ -89,8 +89,8 @@
#include "config.h"
#include "inout.h"
#include "debug.h"
-#include "e820.h"
#ifdef __amd64__
+#include "amd64/e820.h"
#include "amd64/fwctl.h"
#endif
#include "gdb.h"
@@ -98,7 +98,9 @@
#include "kernemu_dev.h"
#include "mem.h"
#include "mevent.h"
-#include "mptbl.h"
+#ifdef __amd64__
+#include "amd64/mptbl.h"
+#endif
#include "pci_emul.h"
#include "pci_irq.h"
#include "pci_lpc.h"
@@ -1221,7 +1223,6 @@
int max_vcpus, memflags;
struct vcpu *bsp;
struct vmctx *ctx;
- struct qemu_fwcfg_item *e820_fwcfg_item;
size_t memsize;
const char *optstr, *value, *vmname;
#ifdef BHYVE_SNAPSHOT
@@ -1349,9 +1350,11 @@
case 'x':
set_config_bool("x86.x2apic", true);
break;
+#ifdef __amd64__
case 'Y':
set_config_bool("x86.mptable", false);
break;
+#endif
case 'h':
usage(0);
default:
@@ -1476,10 +1479,12 @@
exit(4);
}
+#ifdef __amd64__
if (e820_init(ctx) != 0) {
fprintf(stderr, "Unable to setup E820");
exit(4);
}
+#endif
/*
* Exit if a device emulation finds an error in its initialization
@@ -1552,9 +1557,7 @@
}
#endif
- /*
- * build the guest tables, MP etc.
- */
+#ifdef __amd64__
if (get_config_bool_default("x86.mptable", true)) {
error = mptable_build(ctx, guest_ncpus);
if (error) {
@@ -1562,6 +1565,7 @@
exit(4);
}
}
+#endif
error = smbios_build(ctx);
if (error != 0)
@@ -1572,17 +1576,11 @@
assert(error == 0);
}
- e820_fwcfg_item = e820_get_fwcfg_item();
- if (e820_fwcfg_item == NULL) {
- fprintf(stderr, "invalid e820 table");
- exit(4);
- }
- if (qemu_fwcfg_add_file("etc/e820", e820_fwcfg_item->size,
- e820_fwcfg_item->data) != 0) {
- fprintf(stderr, "could not add qemu fwcfg etc/e820");
+#ifdef __amd64__
+ error = e820_finalize();
+ if (error != 0)
exit(4);
- }
- free(e820_fwcfg_item);
+#endif
#ifdef __amd64__
if (lpc_bootrom() && strcmp(lpc_fwcfg(), "bhyve") == 0) {
diff --git a/usr.sbin/bhyve/pci_gvt-d.c b/usr.sbin/bhyve/pci_gvt-d.c
--- a/usr.sbin/bhyve/pci_gvt-d.c
+++ b/usr.sbin/bhyve/pci_gvt-d.c
@@ -17,7 +17,7 @@
#include <string.h>
#include <unistd.h>
-#include "e820.h"
+#include "amd64/e820.h"
#include "pci_gvt-d-opregion.h"
#include "pci_passthru.h"
diff --git a/usr.sbin/bhyve/snapshot.c b/usr.sbin/bhyve/snapshot.c
--- a/usr.sbin/bhyve/snapshot.c
+++ b/usr.sbin/bhyve/snapshot.c
@@ -84,7 +84,6 @@
#include "ioapic.h"
#include "mem.h"
#include "mevent.h"
-#include "mptbl.h"
#include "pci_emul.h"
#include "pci_irq.h"
#include "pci_lpc.h"
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Mar 4, 1:23 PM (7 h, 48 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29244292
Default Alt Text
D40552.diff (4 KB)
Attached To
Mode
D40552: bhyve: Move more amd64-specific code under amd64/
Attached
Detach File
Event Timeline
Log In to Comment