]> xenbits.xensource.com Git - people/aperard/qemu-dm.git/commitdiff
modules: introduces module_kconfig directive
authorJose R. Ziviani <jziviani@suse.de>
Fri, 27 May 2022 22:20:23 +0000 (00:20 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Mon, 6 Jun 2022 07:26:53 +0000 (09:26 +0200)
module_kconfig is a new directive that should be used with module_obj
whenever that module depends on the Kconfig to be enabled.

When the module is enabled in Kconfig we are sure that its dependencies
will be enabled as well, thus the module will be loaded without any
problem.

The correct way to use module_kconfig is by passing the Kconfig option
to module_kconfig (or the *config-devices.mak without CONFIG_).

Signed-off-by: Jose R. Ziviani <jziviani@suse.de>
Signed-off-by: Dario Faggioli <dfaggioli@suse.com>
Message-Id: <165369002370.5857.12150544416563557322.stgit@work>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
18 files changed:
hw/display/qxl.c
hw/display/vhost-user-gpu-pci.c
hw/display/vhost-user-gpu.c
hw/display/vhost-user-vga.c
hw/display/virtio-gpu-base.c
hw/display/virtio-gpu-gl.c
hw/display/virtio-gpu-pci-gl.c
hw/display/virtio-gpu-pci.c
hw/display/virtio-gpu.c
hw/display/virtio-vga-gl.c
hw/display/virtio-vga.c
hw/s390x/virtio-ccw-gpu.c
hw/usb/ccid-card-emulated.c
hw/usb/ccid-card-passthru.c
hw/usb/host-libusb.c
hw/usb/redirect.c
include/qemu/module.h
scripts/modinfo-generate.py

index 2db34714fbd95728b333142a73d437ab9b255ec5..5b10f697f1872751730114b73331e23479b8adde 100644 (file)
@@ -2515,6 +2515,7 @@ static const TypeInfo qxl_primary_info = {
     .class_init    = qxl_primary_class_init,
 };
 module_obj("qxl-vga");
+module_kconfig(QXL);
 
 static void qxl_secondary_class_init(ObjectClass *klass, void *data)
 {
index daefcf7101590cbd3b3681ac6fa9c49479a62678..d119bcae45d48e6eb14afe7d26e61f18265fa206 100644 (file)
@@ -44,6 +44,7 @@ static const VirtioPCIDeviceTypeInfo vhost_user_gpu_pci_info = {
     .instance_init = vhost_user_gpu_pci_initfn,
 };
 module_obj(TYPE_VHOST_USER_GPU_PCI);
+module_kconfig(VHOST_USER_GPU);
 
 static void vhost_user_gpu_pci_register_types(void)
 {
index 96e56c4467813ac6f190e1795b04ba8647574584..3340ef9e5f7fdd2dffd161cf41a55e023181ff69 100644 (file)
@@ -606,6 +606,7 @@ static const TypeInfo vhost_user_gpu_info = {
     .class_init = vhost_user_gpu_class_init,
 };
 module_obj(TYPE_VHOST_USER_GPU);
+module_kconfig(VHOST_USER_GPU);
 
 static void vhost_user_gpu_register_types(void)
 {
index 072c9c65bc754f399bc49a3dbb889aabb7f33fe4..0c146080fd2c15ff9fd86338164e3969a3e1c355 100644 (file)
@@ -45,6 +45,7 @@ static const VirtioPCIDeviceTypeInfo vhost_user_vga_info = {
     .instance_init = vhost_user_vga_inst_initfn,
 };
 module_obj(TYPE_VHOST_USER_VGA);
+module_kconfig(VHOST_USER_VGA);
 
 static void vhost_user_vga_register_types(void)
 {
index 8ba5da4312f381ef9c0f5506519985978d245bad..790cec333c8c50bf52804c4326c3e1d85c100478 100644 (file)
@@ -260,6 +260,7 @@ static const TypeInfo virtio_gpu_base_info = {
     .abstract = true
 };
 module_obj(TYPE_VIRTIO_GPU_BASE);
+module_kconfig(VIRTIO_GPU);
 
 static void
 virtio_register_types(void)
index 0bca8877035e71139023675fb17f1ce665d57cb6..e06be60dfbfcf53179b980e54c47653a254d6796 100644 (file)
@@ -160,6 +160,7 @@ static const TypeInfo virtio_gpu_gl_info = {
     .class_init = virtio_gpu_gl_class_init,
 };
 module_obj(TYPE_VIRTIO_GPU_GL);
+module_kconfig(VIRTIO_GPU);
 
 static void virtio_register_types(void)
 {
index 99b14a07185ea6b3a2a2f99f167f84c60fea2f0c..a2819e1ca93f98022a81b5a14d18718a1396d182 100644 (file)
@@ -47,6 +47,7 @@ static const VirtioPCIDeviceTypeInfo virtio_gpu_gl_pci_info = {
     .instance_init = virtio_gpu_gl_initfn,
 };
 module_obj(TYPE_VIRTIO_GPU_GL_PCI);
+module_kconfig(VIRTIO_PCI);
 
 static void virtio_gpu_gl_pci_register_types(void)
 {
index e36eee0c409bb8d3bf7cbec85278964e99db0856..93f214ff58127452d0d56a19c3611cd13163fb39 100644 (file)
@@ -65,6 +65,7 @@ static const TypeInfo virtio_gpu_pci_base_info = {
     .abstract = true
 };
 module_obj(TYPE_VIRTIO_GPU_PCI_BASE);
+module_kconfig(VIRTIO_PCI);
 
 #define TYPE_VIRTIO_GPU_PCI "virtio-gpu-pci"
 typedef struct VirtIOGPUPCI VirtIOGPUPCI;
index 529b5246b2b55da16445712e4173ba93a5f90c6c..cd4a56056fd9407a904470878318b76ef1c7b5fb 100644 (file)
@@ -1452,6 +1452,7 @@ static const TypeInfo virtio_gpu_info = {
     .class_init = virtio_gpu_class_init,
 };
 module_obj(TYPE_VIRTIO_GPU);
+module_kconfig(VIRTIO_GPU);
 
 static void virtio_register_types(void)
 {
index f22549097c5e8bb070da6d1c28d4176225e7e244..984faa6b39a80bc786e31ec3d39396bade78d81c 100644 (file)
@@ -37,6 +37,7 @@ static VirtioPCIDeviceTypeInfo virtio_vga_gl_info = {
     .instance_init = virtio_vga_gl_inst_initfn,
 };
 module_obj(TYPE_VIRTIO_VGA_GL);
+module_kconfig(VIRTIO_VGA);
 
 static void virtio_vga_register_types(void)
 {
index 7b55c8d0e72390b430fc4ad30f9f09bc485a9c1f..c206b5da384bcc18dd14d3fcf62a7ae06c3a96d7 100644 (file)
@@ -231,6 +231,7 @@ static const TypeInfo virtio_vga_base_info = {
     .abstract      = true,
 };
 module_obj(TYPE_VIRTIO_VGA_BASE);
+module_kconfig(VIRTIO_VGA);
 
 #define TYPE_VIRTIO_VGA "virtio-vga"
 
index 8d995fcb3323595d4d5693945457c943183079c1..0642c5281d92bfae4c0806b22bb027ba418dad70 100644 (file)
@@ -69,6 +69,7 @@ static const TypeInfo virtio_ccw_gpu = {
     .class_init    = virtio_ccw_gpu_class_init,
 };
 module_obj(TYPE_VIRTIO_GPU_CCW);
+module_kconfig(VIRTIO_CCW);
 
 static void virtio_ccw_gpu_register(void)
 {
index 6c8c0355e099c94a84fdf3b4ab12a7298a92793e..1ddf7297f6125d59eae04a2ef5c428578934d648 100644 (file)
@@ -613,6 +613,7 @@ static const TypeInfo emulated_card_info = {
     .class_init    = emulated_class_initfn,
 };
 module_obj(TYPE_EMULATED_CCID);
+module_kconfig(USB);
 
 static void ccid_card_emulated_register_types(void)
 {
index f530ab2565cbb690b8a8ae478b91ffa6ca564fae..07ee42f304f9cd30d64fe0ec32570cb01978bffa 100644 (file)
@@ -415,6 +415,7 @@ static const TypeInfo passthru_card_info = {
     .class_init    = passthru_class_initfn,
 };
 module_obj(TYPE_CCID_PASSTHRU);
+module_kconfig(USB);
 
 static void ccid_card_passthru_register_types(void)
 {
index 2b35cb6cdd3933f2cf98307bcc4ebc6e0d1fba7a..28f8af8941ff6db20283fcd85d23da120abc6cee 100644 (file)
@@ -1809,6 +1809,7 @@ static const TypeInfo usb_host_dev_info = {
     .instance_init = usb_host_instance_init,
 };
 module_obj(TYPE_USB_HOST_DEVICE);
+module_kconfig(USB);
 
 static void usb_host_register_types(void)
 {
index 3bc4dee7fed9c745c241043b0b04f8f90d6f3bd8..fd7df599bc0b5588d1f9383403ca841258290ff4 100644 (file)
@@ -2620,6 +2620,7 @@ static const TypeInfo usbredir_dev_info = {
     .instance_init = usbredir_instance_init,
 };
 module_obj(TYPE_USB_REDIR);
+module_kconfig(USB);
 
 static void usbredir_register_types(void)
 {
index 5fcc323b2a79d5adfdf27fa19bf72630aa6303b6..bd73607104c951a34512a156cff03cddd9638b1a 100644 (file)
@@ -135,6 +135,16 @@ void module_allow_arch(const char *arch);
  */
 #define module_opts(name) modinfo(opts, name)
 
+/**
+ * module_kconfig
+ *
+ * @name: Kconfig requirement necessary to load the module
+ *
+ * This module requires a core module that should be implemented and
+ * enabled in Kconfig.
+ */
+#define module_kconfig(name) modinfo(kconfig, name)
+
 /*
  * module info database
  *
index f559eed0077a22bfd25a26a79c01fa995f501e9d..689f33c0f2919508341712a1cde453f8f144d357 100755 (executable)
@@ -48,6 +48,8 @@ def generate(name, lines):
                 opts.append(data)
             elif kind == 'arch':
                 arch = data;
+            elif kind == 'kconfig':
+                pass # ignore
             else:
                 print("unknown:", kind)
                 exit(1)