Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F154836649
D39322.id119872.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
D39322.id119872.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
@@ -28,13 +28,14 @@
* Creates an ACPI device.
*
* @param[out] new_dev Returns the newly create ACPI device.
+ * @param[in] parent Pointer to the parent object which is an ACPI device.
* @param[in] vm_ctx VM context the ACPI device is created in.
* @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 struct acpi_device_emul *emul);
+int acpi_device_create(struct acpi_device **new_dev, void *parent,
+ struct vmctx *vm_ctx, 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,
@@ -42,5 +43,7 @@
int acpi_device_add_res_fixed_memory32(struct acpi_device *dev,
UINT8 write_protected, UINT32 address, UINT32 length);
+void *acpi_device_get_parent(const struct acpi_device *dev);
+
int acpi_device_build_table(const struct acpi_device *dev);
int acpi_device_write_dsdt(const struct acpi_device *dev);
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
@@ -36,18 +36,20 @@
* Holds information about an ACPI device.
*
* @param vm_ctx VM context the ACPI device was created in.
+ * @param parent A pointer to the parent device emulation.
* @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;
+ void *parent;
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,
+acpi_device_create(struct acpi_device **const new_dev, void *const parent,
struct vmctx *const vm_ctx, const struct acpi_device_emul *const emul)
{
assert(new_dev != NULL);
@@ -60,6 +62,7 @@
}
dev->vm_ctx = vm_ctx;
+ dev->parent = parent;
dev->emul = emul;
SLIST_INIT(&dev->crs);
@@ -136,6 +139,14 @@
return (0);
}
+void *
+acpi_device_get_parent(const struct acpi_device *const dev)
+{
+ assert(dev != NULL);
+
+ return (dev->parent);
+}
+
int
acpi_device_build_table(const struct acpi_device *const dev)
{
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
@@ -382,7 +382,7 @@
* tables and register io ports for fwcfg, if it's used.
*/
if (strcmp(lpc_fwcfg(), "qemu") == 0) {
- error = acpi_device_create(&fwcfg_sc.acpi_dev, ctx,
+ error = acpi_device_create(&fwcfg_sc.acpi_dev, fwcfg_sc, ctx,
&qemu_fwcfg_acpi_device_emul);
if (error) {
warnx("%s: failed to create ACPI device for QEMU FwCfg",
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Thu, Apr 30, 1:43 PM (11 h, 9 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
32520573
Default Alt Text
D39322.id119872.diff (3 KB)
Attached To
Mode
D39322: bhyve: save softc of ACPI devices
Attached
Detach File
Event Timeline
Log In to Comment