Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F107452466
D39322.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.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
@@ -38,13 +38,14 @@
* Creates an ACPI device.
*
* @param[out] new_dev Returns the newly create ACPI device.
+ * @param[in] softc Pointer to the software context of the 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 *softc,
+ 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,
@@ -52,5 +53,7 @@
int acpi_device_add_res_fixed_memory32(struct acpi_device *dev,
UINT8 write_protected, UINT32 address, UINT32 length);
+void *acpi_device_get_softc(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 softc A pointer to the software context 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;
+ void *softc;
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 softc,
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->softc = softc;
dev->emul = emul;
SLIST_INIT(&dev->crs);
@@ -136,6 +139,14 @@
return (0);
}
+void *
+acpi_device_get_softc(const struct acpi_device *const dev)
+{
+ assert(dev != NULL);
+
+ return (dev->softc);
+}
+
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
@@ -401,7 +401,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
Wed, Jan 15, 8:59 AM (14 h, 13 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15808645
Default Alt Text
D39322.diff (3 KB)
Attached To
Mode
D39322: bhyve: save softc of ACPI devices
Attached
Detach File
Event Timeline
Log In to Comment