All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] modules: Improve modinfo.c support
@ 2021-09-28 20:46 Jose R. Ziviani
  2021-09-28 20:46 ` [PATCH v3 1/2] modules: introduces module_kconfig directive Jose R. Ziviani
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Jose R. Ziviani @ 2021-09-28 20:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, kraxel, Jose R. Ziviani

This patchset introduces the modinfo_kconfig aiming for a fine-tune
control of module loading by simply checking Kconfig options during the
compile time, then generates one modinfo-<target>-softmmu.c per target.

The main reason of this change is to fix problems like:
$ ./qemu-system-s390x -nodefaults -display none -accel tcg -M none -device help | head
Failed to open module: /.../hw-display-qxl.so: undefined symbol: vga_ioport_read
Failed to open module: /.../hw-display-virtio-vga.so: undefined symbol: vmstate_vga_common
Failed to open module: /.../hw-display-virtio-vga.so: undefined symbol: vmstate_vga_common
Failed to open module: /.../hw-display-virtio-vga-gl.so: undefined symbol: have_vga
Failed to open module: /.../hw-usb-smartcard.so: undefined symbol: ccid_card_ccid_attach
Failed to open module: /.../hw-usb-redirect.so: undefined symbol: vmstate_usb_device
Failed to open module: /.../hw-usb-host.so: undefined symbol: vmstate_usb_device

With this patch, I run this small script successfuly:
    #!/bin/bash
    pushd ~/suse/virtualization/qemu/build
    for qemu in qemu-system-*
    do
        [[ -f "$qemu" ]] || continue
        res=$(./$qemu -nodefaults -display none -accel tcg -M none -device help 2>&1 | grep "Failed to" > /dev/null; echo $?)
        [[ $res -eq 0 ]] && echo "Error: $qemu"
    done
    popd

Also run 'make check' and 'check-acceptance' without any failures.

v2 -> v3:
 - Renamed module_needs to module_kconfig [Gerd]
 - Reworded the commit message a bit to improve a better understanding [myself]

v1 -> v2:
 - Changed the approach to this problem after suggestions made by Paolo and Gerd.

Thank you!

Jose R. Ziviani (2):
  modules: introduces module_kconfig directive
  modules: generates per-target modinfo

 hw/display/qxl.c                |  1 +
 hw/display/vhost-user-gpu-pci.c |  1 +
 hw/display/vhost-user-gpu.c     |  1 +
 hw/display/vhost-user-vga.c     |  1 +
 hw/display/virtio-gpu-base.c    |  1 +
 hw/display/virtio-gpu-gl.c      |  1 +
 hw/display/virtio-gpu-pci-gl.c  |  1 +
 hw/display/virtio-gpu-pci.c     |  1 +
 hw/display/virtio-gpu.c         |  1 +
 hw/display/virtio-vga-gl.c      |  1 +
 hw/display/virtio-vga.c         |  1 +
 hw/s390x/virtio-ccw-gpu.c       |  1 +
 hw/usb/ccid-card-emulated.c     |  1 +
 hw/usb/ccid-card-passthru.c     |  1 +
 hw/usb/host-libusb.c            |  1 +
 hw/usb/redirect.c               |  1 +
 include/qemu/module.h           | 10 ++++++++
 meson.build                     | 25 +++++++++++++-------
 scripts/modinfo-generate.py     | 42 ++++++++++++++++++++-------------
 19 files changed, 69 insertions(+), 24 deletions(-)

-- 
2.33.0



^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v3 1/2] modules: introduces module_kconfig directive
  2021-09-28 20:46 [PATCH v3 0/2] modules: Improve modinfo.c support Jose R. Ziviani
@ 2021-09-28 20:46 ` Jose R. Ziviani
  2021-09-28 20:46 ` [PATCH v3 2/2] modules: generates per-target modinfo Jose R. Ziviani
  2021-09-29  5:09 ` [PATCH v3 0/2] modules: Improve modinfo.c support Gerd Hoffmann
  2 siblings, 0 replies; 7+ messages in thread
From: Jose R. Ziviani @ 2021-09-28 20:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, kraxel, Jose R. Ziviani

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>
---
 hw/display/qxl.c                |  1 +
 hw/display/vhost-user-gpu-pci.c |  1 +
 hw/display/vhost-user-gpu.c     |  1 +
 hw/display/vhost-user-vga.c     |  1 +
 hw/display/virtio-gpu-base.c    |  1 +
 hw/display/virtio-gpu-gl.c      |  1 +
 hw/display/virtio-gpu-pci-gl.c  |  1 +
 hw/display/virtio-gpu-pci.c     |  1 +
 hw/display/virtio-gpu.c         |  1 +
 hw/display/virtio-vga-gl.c      |  1 +
 hw/display/virtio-vga.c         |  1 +
 hw/s390x/virtio-ccw-gpu.c       |  1 +
 hw/usb/ccid-card-emulated.c     |  1 +
 hw/usb/ccid-card-passthru.c     |  1 +
 hw/usb/host-libusb.c            |  1 +
 hw/usb/redirect.c               |  1 +
 include/qemu/module.h           | 10 ++++++++++
 scripts/modinfo-generate.py     |  2 ++
 18 files changed, 28 insertions(+)

diff --git a/hw/display/qxl.c b/hw/display/qxl.c
index 29c80b4289..d02d50014b 100644
--- a/hw/display/qxl.c
+++ b/hw/display/qxl.c
@@ -2494,6 +2494,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)
 {
diff --git a/hw/display/vhost-user-gpu-pci.c b/hw/display/vhost-user-gpu-pci.c
index daefcf7101..d119bcae45 100644
--- a/hw/display/vhost-user-gpu-pci.c
+++ b/hw/display/vhost-user-gpu-pci.c
@@ -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)
 {
diff --git a/hw/display/vhost-user-gpu.c b/hw/display/vhost-user-gpu.c
index 49df56cd14..c961d2a2d8 100644
--- a/hw/display/vhost-user-gpu.c
+++ b/hw/display/vhost-user-gpu.c
@@ -599,6 +599,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)
 {
diff --git a/hw/display/vhost-user-vga.c b/hw/display/vhost-user-vga.c
index 072c9c65bc..0c146080fd 100644
--- a/hw/display/vhost-user-vga.c
+++ b/hw/display/vhost-user-vga.c
@@ -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)
 {
diff --git a/hw/display/virtio-gpu-base.c b/hw/display/virtio-gpu-base.c
index c8da4806e0..cde96325ca 100644
--- a/hw/display/virtio-gpu-base.c
+++ b/hw/display/virtio-gpu-base.c
@@ -257,6 +257,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)
diff --git a/hw/display/virtio-gpu-gl.c b/hw/display/virtio-gpu-gl.c
index 6cc4313b1a..f7837cc44d 100644
--- a/hw/display/virtio-gpu-gl.c
+++ b/hw/display/virtio-gpu-gl.c
@@ -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)
 {
diff --git a/hw/display/virtio-gpu-pci-gl.c b/hw/display/virtio-gpu-pci-gl.c
index 99b14a0718..a2819e1ca9 100644
--- a/hw/display/virtio-gpu-pci-gl.c
+++ b/hw/display/virtio-gpu-pci-gl.c
@@ -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)
 {
diff --git a/hw/display/virtio-gpu-pci.c b/hw/display/virtio-gpu-pci.c
index e36eee0c40..93f214ff58 100644
--- a/hw/display/virtio-gpu-pci.c
+++ b/hw/display/virtio-gpu-pci.c
@@ -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;
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 182e0868b0..6cc6bb1f1f 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -1450,6 +1450,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)
 {
diff --git a/hw/display/virtio-vga-gl.c b/hw/display/virtio-vga-gl.c
index f22549097c..984faa6b39 100644
--- a/hw/display/virtio-vga-gl.c
+++ b/hw/display/virtio-vga-gl.c
@@ -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)
 {
diff --git a/hw/display/virtio-vga.c b/hw/display/virtio-vga.c
index 9e57f61e9e..2a55f88837 100644
--- a/hw/display/virtio-vga.c
+++ b/hw/display/virtio-vga.c
@@ -240,6 +240,7 @@ static TypeInfo virtio_vga_base_info = {
     .abstract      = true,
 };
 module_obj(TYPE_VIRTIO_VGA_BASE);
+module_kconfig(VIRTIO_VGA);
 
 #define TYPE_VIRTIO_VGA "virtio-vga"
 
diff --git a/hw/s390x/virtio-ccw-gpu.c b/hw/s390x/virtio-ccw-gpu.c
index 5868a2a070..024e8990f4 100644
--- a/hw/s390x/virtio-ccw-gpu.c
+++ b/hw/s390x/virtio-ccw-gpu.c
@@ -60,6 +60,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)
 {
diff --git a/hw/usb/ccid-card-emulated.c b/hw/usb/ccid-card-emulated.c
index 6c8c0355e0..1ddf7297f6 100644
--- a/hw/usb/ccid-card-emulated.c
+++ b/hw/usb/ccid-card-emulated.c
@@ -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)
 {
diff --git a/hw/usb/ccid-card-passthru.c b/hw/usb/ccid-card-passthru.c
index fa3040fb71..748544d170 100644
--- a/hw/usb/ccid-card-passthru.c
+++ b/hw/usb/ccid-card-passthru.c
@@ -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)
 {
diff --git a/hw/usb/host-libusb.c b/hw/usb/host-libusb.c
index d0d46dd0a4..4784b07b8f 100644
--- a/hw/usb/host-libusb.c
+++ b/hw/usb/host-libusb.c
@@ -1809,6 +1809,7 @@ static 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)
 {
diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index 5f0ef9cb3b..b0e5fb381e 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -2609,6 +2609,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)
 {
diff --git a/include/qemu/module.h b/include/qemu/module.h
index 3deac0078b..382234859d 100644
--- a/include/qemu/module.h
+++ b/include/qemu/module.h
@@ -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
  *
diff --git a/scripts/modinfo-generate.py b/scripts/modinfo-generate.py
index f559eed007..689f33c0f2 100755
--- a/scripts/modinfo-generate.py
+++ b/scripts/modinfo-generate.py
@@ -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)
-- 
2.33.0



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 2/2] modules: generates per-target modinfo
  2021-09-28 20:46 [PATCH v3 0/2] modules: Improve modinfo.c support Jose R. Ziviani
  2021-09-28 20:46 ` [PATCH v3 1/2] modules: introduces module_kconfig directive Jose R. Ziviani
@ 2021-09-28 20:46 ` Jose R. Ziviani
  2021-09-29  5:09 ` [PATCH v3 0/2] modules: Improve modinfo.c support Gerd Hoffmann
  2 siblings, 0 replies; 7+ messages in thread
From: Jose R. Ziviani @ 2021-09-28 20:46 UTC (permalink / raw)
  To: qemu-devel; +Cc: pbonzini, kraxel, Jose R. Ziviani

This patch changes the way modinfo is generated and built. Instead of
one modinfo.c it generates one modinfo-<target>-softmmu.c per target. It
aims a fine-tune control of modules by configuring Kconfig.

Signed-off-by: Jose R. Ziviani <jziviani@suse.de>
---
 meson.build                 | 25 +++++++++++++++-------
 scripts/modinfo-generate.py | 42 ++++++++++++++++++++++---------------
 2 files changed, 42 insertions(+), 25 deletions(-)

diff --git a/meson.build b/meson.build
index 15ef4d3c41..a617be73de 100644
--- a/meson.build
+++ b/meson.build
@@ -2403,14 +2403,23 @@ foreach d, list : target_modules
 endforeach
 
 if enable_modules
-  modinfo_src = custom_target('modinfo.c',
-                              output: 'modinfo.c',
-                              input: modinfo_files,
-                              command: [modinfo_generate, '@INPUT@'],
-                              capture: true)
-  modinfo_lib = static_library('modinfo', modinfo_src)
-  modinfo_dep = declare_dependency(link_whole: modinfo_lib)
-  softmmu_ss.add(modinfo_dep)
+  foreach target : target_dirs
+    if target.endswith('-softmmu')
+      config_target = config_target_mak[target]
+      config_devices_mak = target + '-config-devices.mak'
+      modinfo_src = custom_target('modinfo-' + target + '.c',
+                                  output: 'modinfo-' + target + '.c',
+                                  input: modinfo_files,
+                                  command: [modinfo_generate, '--devices', config_devices_mak, '@INPUT@'],
+                                  capture: true)
+
+      modinfo_lib = static_library('modinfo-' + target + '.c', modinfo_src)
+      modinfo_dep = declare_dependency(link_with: modinfo_lib)
+
+      arch = config_target['TARGET_NAME'] == 'sparc64' ? 'sparc64' : config_target['TARGET_BASE_ARCH']
+      hw_arch[arch].add(modinfo_dep)
+    endif
+  endforeach
 endif
 
 nm = find_program('nm')
diff --git a/scripts/modinfo-generate.py b/scripts/modinfo-generate.py
index 689f33c0f2..a0c09edae1 100755
--- a/scripts/modinfo-generate.py
+++ b/scripts/modinfo-generate.py
@@ -32,7 +32,7 @@ def parse_line(line):
             continue
     return (kind, data)
 
-def generate(name, lines):
+def generate(name, lines, core_modules):
     arch = ""
     objs = []
     deps = []
@@ -49,7 +49,13 @@ def generate(name, lines):
             elif kind == 'arch':
                 arch = data;
             elif kind == 'kconfig':
-                pass # ignore
+                # don't add a module which dependency is not enabled
+                # in kconfig
+                if data.strip() not in core_modules:
+                    print("    /* module {} isn't enabled in Kconfig. */"
+                          .format(data.strip()))
+                    print("/* },{ */")
+                    return []
             else:
                 print("unknown:", kind)
                 exit(1)
@@ -60,7 +66,7 @@ def generate(name, lines):
     print_array("objs", objs)
     print_array("deps", deps)
     print_array("opts", opts)
-    print("},{");
+    print("},{")
     return deps
 
 def print_pre():
@@ -74,26 +80,28 @@ def print_post():
     print("}};")
 
 def main(args):
+    if len(args) < 3 or args[0] != '--devices':
+        print('Expected: modinfo-generate.py --devices '
+              'config-device.mak [modinfo files]', file=sys.stderr)
+        exit(1)
+
+    # get all devices enabled in kconfig, from *-config-device.mak
+    enabled_core_modules = set()
+    with open(args[1]) as file:
+        for line in file.readlines():
+            config = line.split('=')
+            if config[1].rstrip() == 'y':
+                enabled_core_modules.add(config[0][7:]) # remove CONFIG_
+
     deps = {}
     print_pre()
-    for modinfo in args:
+    for modinfo in args[2:]:
         with open(modinfo) as f:
             lines = f.readlines()
         print("    /* %s */" % modinfo)
-        (basename, ext) = os.path.splitext(modinfo)
-        deps[basename] = generate(basename, lines)
+        (basename, _) = os.path.splitext(modinfo)
+        deps[basename] = generate(basename, lines, enabled_core_modules)
     print_post()
 
-    flattened_deps = {flat.strip('" ') for dep in deps.values() for flat in dep}
-    error = False
-    for dep in flattened_deps:
-        if dep not in deps.keys():
-            print("Dependency {} cannot be satisfied".format(dep),
-                  file=sys.stderr)
-            error = True
-
-    if error:
-        exit(1)
-
 if __name__ == "__main__":
     main(sys.argv[1:])
-- 
2.33.0



^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 0/2] modules: Improve modinfo.c support
  2021-09-28 20:46 [PATCH v3 0/2] modules: Improve modinfo.c support Jose R. Ziviani
  2021-09-28 20:46 ` [PATCH v3 1/2] modules: introduces module_kconfig directive Jose R. Ziviani
  2021-09-28 20:46 ` [PATCH v3 2/2] modules: generates per-target modinfo Jose R. Ziviani
@ 2021-09-29  5:09 ` Gerd Hoffmann
  2022-05-24 11:49   ` Dario Faggioli
  2 siblings, 1 reply; 7+ messages in thread
From: Gerd Hoffmann @ 2021-09-29  5:09 UTC (permalink / raw)
  To: Jose R. Ziviani; +Cc: pbonzini, qemu-devel

On Tue, Sep 28, 2021 at 05:46:26PM -0300, Jose R. Ziviani wrote:
> This patchset introduces the modinfo_kconfig aiming for a fine-tune
> control of module loading by simply checking Kconfig options during the
> compile time, then generates one modinfo-<target>-softmmu.c per target.
> 
> The main reason of this change is to fix problems like:
> $ ./qemu-system-s390x -nodefaults -display none -accel tcg -M none -device help | head
> Failed to open module: /.../hw-display-qxl.so: undefined symbol: vga_ioport_read
> Failed to open module: /.../hw-display-virtio-vga.so: undefined symbol: vmstate_vga_common
> Failed to open module: /.../hw-display-virtio-vga.so: undefined symbol: vmstate_vga_common
> Failed to open module: /.../hw-display-virtio-vga-gl.so: undefined symbol: have_vga
> Failed to open module: /.../hw-usb-smartcard.so: undefined symbol: ccid_card_ccid_attach
> Failed to open module: /.../hw-usb-redirect.so: undefined symbol: vmstate_usb_device
> Failed to open module: /.../hw-usb-host.so: undefined symbol: vmstate_usb_device
> 
> With this patch, I run this small script successfuly:
>     #!/bin/bash
>     pushd ~/suse/virtualization/qemu/build
>     for qemu in qemu-system-*
>     do
>         [[ -f "$qemu" ]] || continue
>         res=$(./$qemu -nodefaults -display none -accel tcg -M none -device help 2>&1 | grep "Failed to" > /dev/null; echo $?)
>         [[ $res -eq 0 ]] && echo "Error: $qemu"
>     done
>     popd
> 
> Also run 'make check' and 'check-acceptance' without any failures.

Acked-by: Gerd Hoffmann <kraxel@redhat.com>

take care,
  Gerd



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 0/2] modules: Improve modinfo.c support
  2021-09-29  5:09 ` [PATCH v3 0/2] modules: Improve modinfo.c support Gerd Hoffmann
@ 2022-05-24 11:49   ` Dario Faggioli
  2022-05-25  6:32     ` Gerd Hoffmann
  0 siblings, 1 reply; 7+ messages in thread
From: Dario Faggioli @ 2022-05-24 11:49 UTC (permalink / raw)
  To: Gerd Hoffmann; +Cc: pbonzini, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 3199 bytes --]

Hello! Sorry for bringing up an old thread, but I'd have a question
about this series.

As far as I can see, the patches were fine, and they were Acked, but
then the series was never committed... Is this correct?

If yes, can it be committed (I'm up for rebasing and resending, if it's
necessary)? If not, would it be possible to know what's missing, so
that we can continue working on it?

The reason I'm asking is that in our (openSUSE) build system, we're
still seeing the failures shown below; so far, we've had some rather
ugly downstream patches to deal with those, but we've recently
discovered they're not only ugly... they're also broken! :-/

I'm not sure if (and if yes why) this seems to be a problem only for
us, but it'd be great to get rid of both the failures and the patches
(assuming that what is implemented in this series is also of general
use, and good for the project... which, AFAIUI, it should be).

Any kind of feedback would be greatly appreciated.

Thanks and Regards

[PS. I've removed Jose, as his SUSE email address is no longer valid]

On Wed, 2021-09-29 at 07:09 +0200, Gerd Hoffmann wrote:
> On Tue, Sep 28, 2021 at 05:46:26PM -0300, Jose R. Ziviani wrote:
> > This patchset introduces the modinfo_kconfig aiming for a fine-tune
> > control of module loading by simply checking Kconfig options during
> > the
> > compile time, then generates one modinfo-<target>-softmmu.c per
> > target.
> > 
> > The main reason of this change is to fix problems like:
> > $ ./qemu-system-s390x -nodefaults -display none -accel tcg -M none
> > -device help | head
> > Failed to open module: /.../hw-display-qxl.so: undefined symbol:
> > vga_ioport_read
> > Failed to open module: /.../hw-display-virtio-vga.so: undefined
> > symbol: vmstate_vga_common
> > Failed to open module: /.../hw-display-virtio-vga.so: undefined
> > symbol: vmstate_vga_common
> > Failed to open module: /.../hw-display-virtio-vga-gl.so: undefined
> > symbol: have_vga
> > Failed to open module: /.../hw-usb-smartcard.so: undefined symbol:
> > ccid_card_ccid_attach
> > Failed to open module: /.../hw-usb-redirect.so: undefined symbol:
> > vmstate_usb_device
> > Failed to open module: /.../hw-usb-host.so: undefined symbol:
> > vmstate_usb_device
> > 
> > With this patch, I run this small script successfuly:
> >     #!/bin/bash
> >     pushd ~/suse/virtualization/qemu/build
> >     for qemu in qemu-system-*
> >     do
> >         [[ -f "$qemu" ]] || continue
> >         res=$(./$qemu -nodefaults -display none -accel tcg -M none
> > -device help 2>&1 | grep "Failed to" > /dev/null; echo $?)
> >         [[ $res -eq 0 ]] && echo "Error: $qemu"
> >     done
> >     popd
> > 
> > Also run 'make check' and 'check-acceptance' without any failures.
> 
> Acked-by: Gerd Hoffmann <kraxel@redhat.com>
> 
> take care,
>   Gerd
-- 
Dario Faggioli, Ph.D
http://about.me/dario.faggioli
Virtualization Software Engineer
SUSE Labs, SUSE https://www.suse.com/
-------------------------------------------------------------------
<<This happens because _I_ choose it to happen!>> (Raistlin Majere)

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 0/2] modules: Improve modinfo.c support
  2022-05-24 11:49   ` Dario Faggioli
@ 2022-05-25  6:32     ` Gerd Hoffmann
  2022-05-25  9:00       ` Dario Faggioli
  0 siblings, 1 reply; 7+ messages in thread
From: Gerd Hoffmann @ 2022-05-25  6:32 UTC (permalink / raw)
  To: Dario Faggioli; +Cc: pbonzini, qemu-devel

On Tue, May 24, 2022 at 01:49:41PM +0200, Dario Faggioli wrote:
> Hello! Sorry for bringing up an old thread, but I'd have a question
> about this series.
> 
> As far as I can see, the patches were fine, and they were Acked, but
> then the series was never committed... Is this correct?
> 
> If yes, can it be committed (I'm up for rebasing and resending, if it's
> necessary)? If not, would it be possible to know what's missing, so
> that we can continue working on it?

rebase, run through ci, resend is probably the best way forward.
Don't remember any problems, not sure why it wasn't picked up,
maybe paolo (who does the meson + buildsystem stuff) was just busy
so it fell through the cracks,

take care,
  Gerd



^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 0/2] modules: Improve modinfo.c support
  2022-05-25  6:32     ` Gerd Hoffmann
@ 2022-05-25  9:00       ` Dario Faggioli
  0 siblings, 0 replies; 7+ messages in thread
From: Dario Faggioli @ 2022-05-25  9:00 UTC (permalink / raw)
  To: kraxel; +Cc: pbonzini, qemu-devel

[-- Attachment #1: Type: text/plain, Size: 1384 bytes --]

On Wed, 2022-05-25 at 08:32 +0200, Gerd Hoffmann wrote:
> On Tue, May 24, 2022 at 01:49:41PM +0200, Dario Faggioli wrote:
> > Hello! Sorry for bringing up an old thread, but I'd have a question
> > about this series.
> > 
> > As far as I can see, the patches were fine, and they were Acked,
> > but
> > then the series was never committed... Is this correct?
> > 
> > If yes, can it be committed (I'm up for rebasing and resending, if
> > it's
> > necessary)? If not, would it be possible to know what's missing, so
> > that we can continue working on it?
> 
> rebase, run through ci, resend is probably the best way forward.
>
Ok, great, thanks! I'll do all that.

> Don't remember any problems, not sure why it wasn't picked up,
> maybe paolo (who does the meson + buildsystem stuff) was just busy
> so it fell through the cracks,
> 
Sure, and it's fine... It happens, I know it very well. :-)

I hope it's clear, but just in case, I wasn't complaining or anything.
I just wanted to know what we could do about it now, which is exactly
what you just told me. :-D

Thanks and Regards
-- 
Dario Faggioli, Ph.D
http://about.me/dario.faggioli
Virtualization Software Engineer
SUSE Labs, SUSE https://www.suse.com/
-------------------------------------------------------------------
<<This happens because _I_ choose it to happen!>> (Raistlin Majere)

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2022-05-25  9:15 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28 20:46 [PATCH v3 0/2] modules: Improve modinfo.c support Jose R. Ziviani
2021-09-28 20:46 ` [PATCH v3 1/2] modules: introduces module_kconfig directive Jose R. Ziviani
2021-09-28 20:46 ` [PATCH v3 2/2] modules: generates per-target modinfo Jose R. Ziviani
2021-09-29  5:09 ` [PATCH v3 0/2] modules: Improve modinfo.c support Gerd Hoffmann
2022-05-24 11:49   ` Dario Faggioli
2022-05-25  6:32     ` Gerd Hoffmann
2022-05-25  9:00       ` Dario Faggioli

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.