Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F102032797
D39319.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D39319.diff
View Options
diff --git a/usr.sbin/bhyve/acpi_device.h b/usr.sbin/bhyve/acpi_device.h
--- a/usr.sbin/bhyve/acpi_device.h
+++ b/usr.sbin/bhyve/acpi_device.h
@@ -16,18 +16,22 @@
struct acpi_device;
+struct acpi_device_emul {
+ const char *name;
+ const char *hid;
+};
+
/**
* Creates an ACPI device.
*
* @param[out] new_dev Returns the newly create ACPI device.
* @param[in] vm_ctx VM context the ACPI device is created in.
- * @param[in] name Name of the ACPI device. Should always be a NULL
- * terminated string.
- * @param[in] hid Hardware ID of the ACPI device. Should always be a NULL
- * terminated string.
+ * @param[in] emul Device emulation struct. It contains some information
+ * like the name of the ACPI device and some device specific
+ * functions.
*/
int acpi_device_create(struct acpi_device **new_dev, struct vmctx *vm_ctx,
- const char *name, const char *hid);
+ const struct acpi_device_emul *emul);
void acpi_device_destroy(struct acpi_device *dev);
int acpi_device_add_res_fixed_ioport(struct acpi_device *dev, UINT16 port,
diff --git a/usr.sbin/bhyve/acpi_device.c b/usr.sbin/bhyve/acpi_device.c
--- a/usr.sbin/bhyve/acpi_device.c
+++ b/usr.sbin/bhyve/acpi_device.c
@@ -35,24 +35,23 @@
* Holds information about an ACPI device.
*
* @param vm_ctx VM context the ACPI device was created in.
- * @param name Name of the ACPI device.
- * @param hid Hardware ID of the ACPI device.
+ * @param emul Device emulation struct. It contains some information like the
+ name of the ACPI device and some device specific functions.
* @param crs Current resources used by the ACPI device.
*/
struct acpi_device {
struct vmctx *vm_ctx;
- const char *name;
- const char *hid;
+ const struct acpi_device_emul *emul;
SLIST_HEAD(acpi_resource_list, acpi_resource_list_entry) crs;
};
int
acpi_device_create(struct acpi_device **const new_dev,
- struct vmctx *const vm_ctx, const char *const name, const char *const hid)
+ struct vmctx *const vm_ctx, const struct acpi_device_emul *const emul)
{
- if (new_dev == NULL || vm_ctx == NULL || name == NULL || hid == NULL) {
- return (EINVAL);
- }
+ assert(new_dev != NULL);
+ assert(vm_ctx != NULL);
+ assert(emul != NULL);
struct acpi_device *const dev = calloc(1, sizeof(*dev));
if (dev == NULL) {
@@ -60,13 +59,8 @@
}
dev->vm_ctx = vm_ctx;
- dev->name = strdup(name);
- dev->hid = strdup(hid);
+ dev->emul = emul;
SLIST_INIT(&dev->crs);
- if (dev->name == NULL || dev->hid == NULL) {
- acpi_device_destroy(dev);
- return (ENOMEM);
- }
const int error = acpi_tables_add_device(dev);
if (error) {
@@ -92,9 +86,7 @@
SLIST_REMOVE_HEAD(&dev->crs, chain);
free(res);
}
-
- free(__DECONST(void *, dev->hid));
- free(__DECONST(void *, dev->name));
+
free(dev);
}
@@ -174,9 +166,9 @@
dsdt_line("");
dsdt_line(" Scope (\\_SB)");
dsdt_line(" {");
- dsdt_line(" Device (%s)", dev->name);
+ dsdt_line(" Device (%s)", dev->emul->name);
dsdt_line(" {");
- dsdt_line(" Name (_HID, \"%s\")", dev->hid);
+ dsdt_line(" Name (_HID, \"%s\")", dev->emul->hid);
dsdt_line(" Name (_STA, 0x0F)");
dsdt_line(" Name (_CRS, ResourceTemplate ()");
dsdt_line(" {");
diff --git a/usr.sbin/bhyve/qemu_fwcfg.c b/usr.sbin/bhyve/qemu_fwcfg.c
--- a/usr.sbin/bhyve/qemu_fwcfg.c
+++ b/usr.sbin/bhyve/qemu_fwcfg.c
@@ -365,6 +365,11 @@
return (0);
}
+static const struct acpi_device_emul qemu_fwcfg_acpi_device_emul = {
+ .name = QEMU_FWCFG_ACPI_DEVICE_NAME,
+ .hid = QEMU_FWCFG_ACPI_HARDWARE_ID,
+};
+
int
qemu_fwcfg_init(struct vmctx *const ctx)
{
@@ -378,7 +383,7 @@
*/
if (strcmp(lpc_fwcfg(), "qemu") == 0) {
error = acpi_device_create(&fwcfg_sc.acpi_dev, ctx,
- QEMU_FWCFG_ACPI_DEVICE_NAME, QEMU_FWCFG_ACPI_HARDWARE_ID);
+ &qemu_fwcfg_acpi_device_emul);
if (error) {
warnx("%s: failed to create ACPI device for QEMU FwCfg",
__func__);
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Nov 7, 6:30 PM (21 h, 42 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
14518454
Default Alt Text
D39319.diff (3 KB)
Attached To
Mode
D39319: bhyve: introduce acpi_device_emul struct
Attached
Detach File
Event Timeline
Log In to Comment