linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
* [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
@ 2020-03-09  2:54 kbuild test robot
  2020-03-10  0:53 ` Andrew Morton
  2020-03-10  2:19 ` Alexander Duyck
  0 siblings, 2 replies; 14+ messages in thread
From: kbuild test robot @ 2020-03-09  2:54 UTC (permalink / raw)
  To: Andrew Morton; +Cc: kbuild-all, Linux Memory Management List

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

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
config: riscv-randconfig-a001-20200308 (attached as .config)
compiler: riscv64-linux-gcc (GCC) 7.5.0
reproduce:
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
        # save the attached .config to linux build tree
        GCC_VERSION=7.5.0 make.cross ARCH=riscv 

If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   drivers/virtio/virtio_balloon.o: In function `leak_balloon':
   drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
   drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
   drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
   include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
   drivers/virtio/virtio_balloon.o: In function `fill_balloon':
>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
   drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
   drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
   drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
   drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
   drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
   drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
   drivers/gpu/drm/virtio/virtgpu_drv.c:108: undefined reference to `drm_dev_alloc'
   drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_pci_quirk':
   drivers/gpu/drm/virtio/virtgpu_drv.c:93: undefined reference to `drm_dev_set_unique'
   drivers/gpu/drm/virtio/virtgpu_drv.c:94: undefined reference to `drm_dev_put'
   drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
   drivers/gpu/drm/virtio/virtgpu_drv.c:119: undefined reference to `drm_dev_register'
   drivers/gpu/drm/virtio/virtgpu_drv.o: In function `.LANCHOR0':
   virtgpu_drv.c:(.data+0x188): undefined reference to `drm_gem_prime_handle_to_fd'
   virtgpu_drv.c:(.data+0x190): undefined reference to `drm_gem_prime_fd_to_handle'
   virtgpu_drv.c:(.data+0x1d8): undefined reference to `drm_gem_prime_mmap'
   drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x10): undefined reference to `drm_read'
   drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x48): undefined reference to `drm_poll'
   drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x50): undefined reference to `drm_ioctl'
   drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x60): undefined reference to `drm_gem_mmap'
   drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x70): undefined reference to `drm_open'
   drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x80): undefined reference to `drm_release'
   drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_clear_crypto_engines':
   drivers/crypto/virtio/virtio_crypto_core.c:273: undefined reference to `crypto_engine_exit'
   drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_find_vqs':
   drivers/crypto/virtio/virtio_crypto_core.c:95: undefined reference to `crypto_engine_alloc_init'
   drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_start_crypto_engines':
   drivers/crypto/virtio/virtio_crypto_core.c:249: undefined reference to `crypto_engine_start'
   drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_clean_affinity':
   drivers/crypto/virtio/virtio_crypto_core.c:135: undefined reference to `crypto_engine_exit'
   drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_gpu_config_changed_work_func':
   drivers/gpu/drm/virtio/virtgpu_kms.c:48: undefined reference to `drm_helper_hpd_irq_event'
   drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_find_vqs':
   include/linux/virtio_config.h:197: undefined reference to `__drm_err'
   drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_gpu_init':
   drivers/gpu/drm/virtio/virtgpu_kms.c:167: undefined reference to `__drm_err'
   drivers/gpu/drm/virtio/virtgpu_kms.c:177: undefined reference to `__drm_err'
   drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_gpu_get_capsets':
   drivers/gpu/drm/virtio/virtgpu_kms.c:86: undefined reference to `__drm_err'
   drivers/gpu/drm/virtio/virtgpu_kms.c:90: undefined reference to `__drm_err'
   drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_gem_create':
   drivers/gpu/drm/virtio/virtgpu_gem.c:46: undefined reference to `drm_gem_handle_create'
   drivers/gpu/drm/virtio/virtgpu_gem.c:52: undefined reference to `drm_gem_object_put_unlocked'
   drivers/gpu/drm/virtio/virtgpu_gem.c:48: undefined reference to `drm_gem_object_release'
   drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_mode_dumb_mmap':
   drivers/gpu/drm/virtio/virtgpu_gem.c:97: undefined reference to `drm_gem_object_lookup'
   drivers/gpu/drm/virtio/virtgpu_gem.c:104: undefined reference to `drm_gem_object_put_unlocked'
   drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_gem_object_close':
   drivers/gpu/drm/virtio/virtgpu_gem.c:148: undefined reference to `drm_gem_lock_reservations'
   drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_array_lock_resv':
   drivers/gpu/drm/virtio/virtgpu_gem.c:213: undefined reference to `drm_gem_unlock_reservations'
   drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_array_put_free':
   drivers/gpu/drm/virtio/virtgpu_gem.c:238: undefined reference to `drm_gem_object_put_unlocked'
   drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_array_from_handles':
   drivers/gpu/drm/virtio/virtgpu_gem.c:171: undefined reference to `drm_gem_object_lookup'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `vgdev_atomic_commit_tail':
   drivers/gpu/drm/virtio/virtgpu_display.c:325: undefined reference to `drm_atomic_helper_commit_modeset_disables'
   drivers/gpu/drm/virtio/virtgpu_display.c:326: undefined reference to `drm_atomic_helper_commit_modeset_enables'
   drivers/gpu/drm/virtio/virtgpu_display.c:327: undefined reference to `drm_atomic_helper_commit_planes'
   drivers/gpu/drm/virtio/virtgpu_display.c:329: undefined reference to `drm_atomic_helper_fake_vblank'
   drivers/gpu/drm/virtio/virtgpu_display.c:330: undefined reference to `drm_atomic_helper_commit_hw_done'
   drivers/gpu/drm/virtio/virtgpu_display.c:332: undefined reference to `drm_atomic_helper_wait_for_vblanks'
   drivers/gpu/drm/virtio/virtgpu_display.c:333: undefined reference to `drm_atomic_helper_cleanup_planes'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_conn_mode_valid':
   drivers/gpu/drm/virtio/virtgpu_display.c:200: undefined reference to `__drm_dbg'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_conn_destroy':
   drivers/gpu/drm/virtio/virtgpu_display.c:230: undefined reference to `drm_connector_unregister'
   drivers/gpu/drm/virtio/virtgpu_display.c:231: undefined reference to `drm_connector_cleanup'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_conn_get_modes':
   drivers/gpu/drm/virtio/virtgpu_display.c:156: undefined reference to `drm_add_edid_modes'
   drivers/gpu/drm/virtio/virtgpu_display.c:163: undefined reference to `drm_add_modes_noedid'
   drivers/gpu/drm/virtio/virtgpu_display.c:163: undefined reference to `drm_set_preferred_mode'
   drivers/gpu/drm/virtio/virtgpu_display.c:180: undefined reference to `__drm_dbg'
   drivers/gpu/drm/virtio/virtgpu_display.c:172: undefined reference to `drm_cvt_mode'
   drivers/gpu/drm/virtio/virtgpu_display.c:174: undefined reference to `drm_mode_probed_add'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_user_framebuffer_create':
   drivers/gpu/drm/virtio/virtgpu_display.c:303: undefined reference to `drm_gem_object_lookup'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_framebuffer_init':
   drivers/gpu/drm/virtio/virtgpu_display.c:72: undefined reference to `drm_helper_mode_fill_fb_struct'
   drivers/gpu/drm/virtio/virtgpu_display.c:74: undefined reference to `drm_framebuffer_init'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_user_framebuffer_create':
   drivers/gpu/drm/virtio/virtgpu_display.c:313: undefined reference to `drm_gem_object_put_unlocked'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_modeset_init':
   drivers/gpu/drm/virtio/virtgpu_display.c:350: undefined reference to `drm_mode_config_init'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `vgdev_output_init':
   drivers/gpu/drm/virtio/virtgpu_display.c:276: undefined reference to `drm_encoder_init'
   drivers/gpu/drm/virtio/virtgpu_display.c:282: undefined reference to `drm_connector_attach_encoder'
   drivers/gpu/drm/virtio/virtgpu_display.c:282: undefined reference to `drm_connector_register'
   drivers/gpu/drm/virtio/virtgpu_display.c:266: undefined reference to `drm_crtc_init_with_planes'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `drm_crtc_helper_add':
   include/drm/drm_modeset_helper_vtables.h:510: undefined reference to `drm_connector_init'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `drm_connector_helper_add':
   include/drm/drm_modeset_helper_vtables.h:1092: undefined reference to `drm_connector_attach_edid_property'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `vgdev_output_init':
   drivers/gpu/drm/virtio/virtgpu_display.c:277: undefined reference to `drm_mode_config_reset'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_modeset_fini':
   drivers/gpu/drm/virtio/virtgpu_display.c:371: undefined reference to `drm_mode_config_cleanup'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `.LANCHOR0':
   drivers/gpu/drm/virtio/virtgpu_display.c:58: undefined reference to `drm_gem_fb_destroy'
   drivers/gpu/drm/virtio/virtgpu_display.o: In function `.LANCHOR0':
   virtgpu_display.c:(.rodata+0x8): undefined reference to `drm_gem_fb_create_handle'

vim +113 include/linux/virtio_config.h

ec3d41c4db4c21 Rusty Russell      2007-10-22   92  
c45a6816c19dee Rusty Russell      2008-05-02   93  /* If driver didn't advertise the feature, it will never appear. */
c45a6816c19dee Rusty Russell      2008-05-02   94  void virtio_check_driver_offered_feature(const struct virtio_device *vdev,
c45a6816c19dee Rusty Russell      2008-05-02   95  					 unsigned int fbit);
c45a6816c19dee Rusty Russell      2008-05-02   96  
c45a6816c19dee Rusty Russell      2008-05-02   97  /**
d4024af56f7c6c Michael S. Tsirkin 2014-11-27   98   * __virtio_test_bit - helper to test feature bits. For use by transports.
d4024af56f7c6c Michael S. Tsirkin 2014-11-27   99   *                     Devices should normally use virtio_has_feature,
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  100   *                     which includes more checks.
c45a6816c19dee Rusty Russell      2008-05-02  101   * @vdev: the device
c45a6816c19dee Rusty Russell      2008-05-02  102   * @fbit: the feature bit
c45a6816c19dee Rusty Russell      2008-05-02  103   */
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  104  static inline bool __virtio_test_bit(const struct virtio_device *vdev,
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  105  				     unsigned int fbit)
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  106  {
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  107  	/* Did you forget to fix assumptions on max features? */
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  108  	if (__builtin_constant_p(fbit))
d025477368792b Michael S. Tsirkin 2014-10-07  109  		BUILD_BUG_ON(fbit >= 64);
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  110  	else
d025477368792b Michael S. Tsirkin 2014-10-07  111  		BUG_ON(fbit >= 64);
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  112  
d025477368792b Michael S. Tsirkin 2014-10-07 @113  	return vdev->features & BIT_ULL(fbit);
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  114  }
d4024af56f7c6c Michael S. Tsirkin 2014-11-27  115  

:::::: The code at line 113 was first introduced by commit
:::::: d025477368792b272802146a86e41f81a54d8a19 virtio: add support for 64 bit features.

:::::: TO: Michael S. Tsirkin <mst@redhat.com>
:::::: CC: Michael S. Tsirkin <mst@redhat.com>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org

[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 26036 bytes --]

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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-09  2:54 [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister' kbuild test robot
@ 2020-03-10  0:53 ` Andrew Morton
  2020-03-10  1:00   ` Alexander Duyck
  2020-03-10  2:19 ` Alexander Duyck
  1 sibling, 1 reply; 14+ messages in thread
From: Andrew Morton @ 2020-03-10  0:53 UTC (permalink / raw)
  To: kbuild test robot
  Cc: kbuild-all, Linux Memory Management List, Alexander Duyck

On Mon, 9 Mar 2020 10:54:03 +0800 kbuild test robot <lkp@intel.com> wrote:

> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> config: riscv-randconfig-a001-20200308 (attached as .config)
> compiler: riscv64-linux-gcc (GCC) 7.5.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>         # save the attached .config to linux build tree
>         GCC_VERSION=7.5.0 make.cross ARCH=riscv 
> 
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
> 
> All errors (new ones prefixed by >>):

Thanks.

Alexander, could you please take a look?

>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> >> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
>    drivers/gpu/drm/virtio/virtgpu_drv.c:108: undefined reference to `drm_dev_alloc'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_pci_quirk':
>    drivers/gpu/drm/virtio/virtgpu_drv.c:93: undefined reference to `drm_dev_set_unique'
>    drivers/gpu/drm/virtio/virtgpu_drv.c:94: undefined reference to `drm_dev_put'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
>    drivers/gpu/drm/virtio/virtgpu_drv.c:119: undefined reference to `drm_dev_register'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `.LANCHOR0':
>    virtgpu_drv.c:(.data+0x188): undefined reference to `drm_gem_prime_handle_to_fd'
>    virtgpu_drv.c:(.data+0x190): undefined reference to `drm_gem_prime_fd_to_handle'
>    virtgpu_drv.c:(.data+0x1d8): undefined reference to `drm_gem_prime_mmap'
>    drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x10): undefined reference to `drm_read'
>    drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x48): undefined reference to `drm_poll'
>    drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x50): undefined reference to `drm_ioctl'
>    drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x60): undefined reference to `drm_gem_mmap'
>    drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x70): undefined reference to `drm_open'
>    drivers/gpu/drm/virtio/virtgpu_drv.o:(.rodata+0x80): undefined reference to `drm_release'
>    drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_clear_crypto_engines':
>    drivers/crypto/virtio/virtio_crypto_core.c:273: undefined reference to `crypto_engine_exit'
>    drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_find_vqs':
>    drivers/crypto/virtio/virtio_crypto_core.c:95: undefined reference to `crypto_engine_alloc_init'
>    drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_start_crypto_engines':
>    drivers/crypto/virtio/virtio_crypto_core.c:249: undefined reference to `crypto_engine_start'
>    drivers/crypto/virtio/virtio_crypto_core.o: In function `virtcrypto_clean_affinity':
>    drivers/crypto/virtio/virtio_crypto_core.c:135: undefined reference to `crypto_engine_exit'
>    drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_gpu_config_changed_work_func':
>    drivers/gpu/drm/virtio/virtgpu_kms.c:48: undefined reference to `drm_helper_hpd_irq_event'
>    drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_find_vqs':
>    include/linux/virtio_config.h:197: undefined reference to `__drm_err'
>    drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_gpu_init':
>    drivers/gpu/drm/virtio/virtgpu_kms.c:167: undefined reference to `__drm_err'
>    drivers/gpu/drm/virtio/virtgpu_kms.c:177: undefined reference to `__drm_err'
>    drivers/gpu/drm/virtio/virtgpu_kms.o: In function `virtio_gpu_get_capsets':
>    drivers/gpu/drm/virtio/virtgpu_kms.c:86: undefined reference to `__drm_err'
>    drivers/gpu/drm/virtio/virtgpu_kms.c:90: undefined reference to `__drm_err'
>    drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_gem_create':
>    drivers/gpu/drm/virtio/virtgpu_gem.c:46: undefined reference to `drm_gem_handle_create'
>    drivers/gpu/drm/virtio/virtgpu_gem.c:52: undefined reference to `drm_gem_object_put_unlocked'
>    drivers/gpu/drm/virtio/virtgpu_gem.c:48: undefined reference to `drm_gem_object_release'
>    drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_mode_dumb_mmap':
>    drivers/gpu/drm/virtio/virtgpu_gem.c:97: undefined reference to `drm_gem_object_lookup'
>    drivers/gpu/drm/virtio/virtgpu_gem.c:104: undefined reference to `drm_gem_object_put_unlocked'
>    drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_gem_object_close':
>    drivers/gpu/drm/virtio/virtgpu_gem.c:148: undefined reference to `drm_gem_lock_reservations'
>    drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_array_lock_resv':
>    drivers/gpu/drm/virtio/virtgpu_gem.c:213: undefined reference to `drm_gem_unlock_reservations'
>    drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_array_put_free':
>    drivers/gpu/drm/virtio/virtgpu_gem.c:238: undefined reference to `drm_gem_object_put_unlocked'
>    drivers/gpu/drm/virtio/virtgpu_gem.o: In function `virtio_gpu_array_from_handles':
>    drivers/gpu/drm/virtio/virtgpu_gem.c:171: undefined reference to `drm_gem_object_lookup'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `vgdev_atomic_commit_tail':
>    drivers/gpu/drm/virtio/virtgpu_display.c:325: undefined reference to `drm_atomic_helper_commit_modeset_disables'
>    drivers/gpu/drm/virtio/virtgpu_display.c:326: undefined reference to `drm_atomic_helper_commit_modeset_enables'
>    drivers/gpu/drm/virtio/virtgpu_display.c:327: undefined reference to `drm_atomic_helper_commit_planes'
>    drivers/gpu/drm/virtio/virtgpu_display.c:329: undefined reference to `drm_atomic_helper_fake_vblank'
>    drivers/gpu/drm/virtio/virtgpu_display.c:330: undefined reference to `drm_atomic_helper_commit_hw_done'
>    drivers/gpu/drm/virtio/virtgpu_display.c:332: undefined reference to `drm_atomic_helper_wait_for_vblanks'
>    drivers/gpu/drm/virtio/virtgpu_display.c:333: undefined reference to `drm_atomic_helper_cleanup_planes'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_conn_mode_valid':
>    drivers/gpu/drm/virtio/virtgpu_display.c:200: undefined reference to `__drm_dbg'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_conn_destroy':
>    drivers/gpu/drm/virtio/virtgpu_display.c:230: undefined reference to `drm_connector_unregister'
>    drivers/gpu/drm/virtio/virtgpu_display.c:231: undefined reference to `drm_connector_cleanup'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_conn_get_modes':
>    drivers/gpu/drm/virtio/virtgpu_display.c:156: undefined reference to `drm_add_edid_modes'
>    drivers/gpu/drm/virtio/virtgpu_display.c:163: undefined reference to `drm_add_modes_noedid'
>    drivers/gpu/drm/virtio/virtgpu_display.c:163: undefined reference to `drm_set_preferred_mode'
>    drivers/gpu/drm/virtio/virtgpu_display.c:180: undefined reference to `__drm_dbg'
>    drivers/gpu/drm/virtio/virtgpu_display.c:172: undefined reference to `drm_cvt_mode'
>    drivers/gpu/drm/virtio/virtgpu_display.c:174: undefined reference to `drm_mode_probed_add'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_user_framebuffer_create':
>    drivers/gpu/drm/virtio/virtgpu_display.c:303: undefined reference to `drm_gem_object_lookup'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_framebuffer_init':
>    drivers/gpu/drm/virtio/virtgpu_display.c:72: undefined reference to `drm_helper_mode_fill_fb_struct'
>    drivers/gpu/drm/virtio/virtgpu_display.c:74: undefined reference to `drm_framebuffer_init'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_user_framebuffer_create':
>    drivers/gpu/drm/virtio/virtgpu_display.c:313: undefined reference to `drm_gem_object_put_unlocked'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_modeset_init':
>    drivers/gpu/drm/virtio/virtgpu_display.c:350: undefined reference to `drm_mode_config_init'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `vgdev_output_init':
>    drivers/gpu/drm/virtio/virtgpu_display.c:276: undefined reference to `drm_encoder_init'
>    drivers/gpu/drm/virtio/virtgpu_display.c:282: undefined reference to `drm_connector_attach_encoder'
>    drivers/gpu/drm/virtio/virtgpu_display.c:282: undefined reference to `drm_connector_register'
>    drivers/gpu/drm/virtio/virtgpu_display.c:266: undefined reference to `drm_crtc_init_with_planes'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `drm_crtc_helper_add':
>    include/drm/drm_modeset_helper_vtables.h:510: undefined reference to `drm_connector_init'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `drm_connector_helper_add':
>    include/drm/drm_modeset_helper_vtables.h:1092: undefined reference to `drm_connector_attach_edid_property'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `vgdev_output_init':
>    drivers/gpu/drm/virtio/virtgpu_display.c:277: undefined reference to `drm_mode_config_reset'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `virtio_gpu_modeset_fini':
>    drivers/gpu/drm/virtio/virtgpu_display.c:371: undefined reference to `drm_mode_config_cleanup'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `.LANCHOR0':
>    drivers/gpu/drm/virtio/virtgpu_display.c:58: undefined reference to `drm_gem_fb_destroy'
>    drivers/gpu/drm/virtio/virtgpu_display.o: In function `.LANCHOR0':
>    virtgpu_display.c:(.rodata+0x8): undefined reference to `drm_gem_fb_create_handle'
> 
> vim +113 include/linux/virtio_config.h
> 
> ec3d41c4db4c21 Rusty Russell      2007-10-22   92  
> c45a6816c19dee Rusty Russell      2008-05-02   93  /* If driver didn't advertise the feature, it will never appear. */
> c45a6816c19dee Rusty Russell      2008-05-02   94  void virtio_check_driver_offered_feature(const struct virtio_device *vdev,
> c45a6816c19dee Rusty Russell      2008-05-02   95  					 unsigned int fbit);
> c45a6816c19dee Rusty Russell      2008-05-02   96  
> c45a6816c19dee Rusty Russell      2008-05-02   97  /**
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27   98   * __virtio_test_bit - helper to test feature bits. For use by transports.
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27   99   *                     Devices should normally use virtio_has_feature,
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  100   *                     which includes more checks.
> c45a6816c19dee Rusty Russell      2008-05-02  101   * @vdev: the device
> c45a6816c19dee Rusty Russell      2008-05-02  102   * @fbit: the feature bit
> c45a6816c19dee Rusty Russell      2008-05-02  103   */
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  104  static inline bool __virtio_test_bit(const struct virtio_device *vdev,
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  105  				     unsigned int fbit)
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  106  {
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  107  	/* Did you forget to fix assumptions on max features? */
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  108  	if (__builtin_constant_p(fbit))
> d025477368792b Michael S. Tsirkin 2014-10-07  109  		BUILD_BUG_ON(fbit >= 64);
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  110  	else
> d025477368792b Michael S. Tsirkin 2014-10-07  111  		BUG_ON(fbit >= 64);
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  112  
> d025477368792b Michael S. Tsirkin 2014-10-07 @113  	return vdev->features & BIT_ULL(fbit);
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  114  }
> d4024af56f7c6c Michael S. Tsirkin 2014-11-27  115  
> 
> :::::: The code at line 113 was first introduced by commit
> :::::: d025477368792b272802146a86e41f81a54d8a19 virtio: add support for 64 bit features.
> 
> :::::: TO: Michael S. Tsirkin <mst@redhat.com>
> :::::: CC: Michael S. Tsirkin <mst@redhat.com>
> 
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
> https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org


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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10  0:53 ` Andrew Morton
@ 2020-03-10  1:00   ` Alexander Duyck
  0 siblings, 0 replies; 14+ messages in thread
From: Alexander Duyck @ 2020-03-10  1:00 UTC (permalink / raw)
  To: Andrew Morton
  Cc: kbuild test robot, kbuild-all, Linux Memory Management List,
	Alexander Duyck

On Mon, Mar 9, 2020 at 5:53 PM Andrew Morton <akpm@linux-foundation.org> wrote:
>
> On Mon, 9 Mar 2020 10:54:03 +0800 kbuild test robot <lkp@intel.com> wrote:
>
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> > commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> > config: riscv-randconfig-a001-20200308 (attached as .config)
> > compiler: riscv64-linux-gcc (GCC) 7.5.0
> > reproduce:
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
> >         # save the attached .config to linux build tree
> >         GCC_VERSION=7.5.0 make.cross ARCH=riscv
> >
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
>
> Thanks.
>
> Alexander, could you please take a look?

I'll take a look.

Thanks.

- Alex


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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-09  2:54 [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister' kbuild test robot
  2020-03-10  0:53 ` Andrew Morton
@ 2020-03-10  2:19 ` Alexander Duyck
  2020-03-10  6:08   ` Michael S. Tsirkin
  2020-03-10 10:22   ` David Hildenbrand
  1 sibling, 2 replies; 14+ messages in thread
From: Alexander Duyck @ 2020-03-10  2:19 UTC (permalink / raw)
  To: kbuild test robot, linux-riscv, anup.patel, atish.patra,
	palmerdabbelt, alistair.francis
  Cc: Andrew Morton, Linux Memory Management List, Michael S. Tsirkin

On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
>
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> config: riscv-randconfig-a001-20200308 (attached as .config)
> compiler: riscv64-linux-gcc (GCC) 7.5.0
> reproduce:
>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>         chmod +x ~/bin/make.cross
>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>         # save the attached .config to linux build tree
>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
>
> If you fix the issue, kindly add following tag
> Reported-by: kbuild test robot <lkp@intel.com>
>
> All errors (new ones prefixed by >>):
>
>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> >> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':

It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
shouldn't be possible since in drivers/virtio/Kconfig we have the
following:
config VIRTIO_BALLOON
        tristate "Virtio balloon driver"
        depends on VIRTIO
        select MEMORY_BALLOON
        select PAGE_REPORTING

I think I traced the problem down. It looks like it is related to this patch:
    RISC-V: Add kconfig option for QEMU virt machine

    We add kconfig option for QEMU virt machine and select all
    required VIRTIO drivers using this kconfig option.

    Signed-off-by: Anup Patel <anup.patel@wdc.com>
    Reviewed-by: Atish Patra <atish.patra@wdc.com>
    Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
    Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
    Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>


The problem is it is using select to enable things that have
dependencies, and as a result it is enabling things without enabling
the bits needed to support them. That isn't recommended and is
actually called out to something to avoid in the kconfig-language
documentation:
https://elixir.bootlin.com/linux/latest/source/Documentation/kbuild/kconfig-language.rst#L143


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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10  2:19 ` Alexander Duyck
@ 2020-03-10  6:08   ` Michael S. Tsirkin
  2020-03-10  7:56     ` Christian Borntraeger
  2020-03-10  8:43     ` Anup Patel
  2020-03-10 10:22   ` David Hildenbrand
  1 sibling, 2 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  6:08 UTC (permalink / raw)
  To: Alexander Duyck
  Cc: kbuild test robot, linux-riscv, anup.patel, atish.patra,
	palmerdabbelt, alistair.francis, Andrew Morton,
	Linux Memory Management List, Christian Borntraeger

On Mon, Mar 09, 2020 at 07:19:51PM -0700, Alexander Duyck wrote:
> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
> >
> > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> > commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> > config: riscv-randconfig-a001-20200308 (attached as .config)
> > compiler: riscv64-linux-gcc (GCC) 7.5.0
> > reproduce:
> >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >         chmod +x ~/bin/make.cross
> >         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
> >         # save the attached .config to linux build tree
> >         GCC_VERSION=7.5.0 make.cross ARCH=riscv
> >
> > If you fix the issue, kindly add following tag
> > Reported-by: kbuild test robot <lkp@intel.com>
> >
> > All errors (new ones prefixed by >>):
> >
> >    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
> >    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
> >    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> > >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
> >    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
> >    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
> >    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> > >> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
> >    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> > >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
> >    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
> >    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
> >    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
> >    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
> >    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
> 
> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
> shouldn't be possible since in drivers/virtio/Kconfig we have the
> following:
> config VIRTIO_BALLOON
>         tristate "Virtio balloon driver"
>         depends on VIRTIO
>         select MEMORY_BALLOON
>         select PAGE_REPORTING
> 
> I think I traced the problem down. It looks like it is related to this patch:
>     RISC-V: Add kconfig option for QEMU virt machine
> 
>     We add kconfig option for QEMU virt machine and select all
>     required VIRTIO drivers using this kconfig option.
> 
>     Signed-off-by: Anup Patel <anup.patel@wdc.com>
>     Reviewed-by: Atish Patra <atish.patra@wdc.com>
>     Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
>     Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
>     Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
> 
> 
> The problem is it is using select to enable things that have
> dependencies, and as a result it is enabling things without enabling
> the bits needed to support them. That isn't recommended and is
> actually called out to something to avoid in the kconfig-language
> documentation:
> https://elixir.bootlin.com/linux/latest/source/Documentation/kbuild/kconfig-language.rst#L143


I agree. And when we change virtio we likely won't remember to fix up RISC-V.
So please don't poke at it from arches.
The right way to do this IMHO is via ARCH_DEFCONFIG, and using
a defconfig per board.
And I think the same applies to s390 and virtio console.
Christian?

-- 
MST



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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10  6:08   ` Michael S. Tsirkin
@ 2020-03-10  7:56     ` Christian Borntraeger
  2020-03-10  8:43     ` Anup Patel
  1 sibling, 0 replies; 14+ messages in thread
From: Christian Borntraeger @ 2020-03-10  7:56 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alexander Duyck
  Cc: kbuild test robot, linux-riscv, anup.patel, atish.patra,
	palmerdabbelt, alistair.francis, Andrew Morton,
	Linux Memory Management List


On 10.03.20 07:08, Michael S. Tsirkin wrote:
> On Mon, Mar 09, 2020 at 07:19:51PM -0700, Alexander Duyck wrote:
>> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
>>>
>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
>>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
>>> config: riscv-randconfig-a001-20200308 (attached as .config)
>>> compiler: riscv64-linux-gcc (GCC) 7.5.0
>>> reproduce:
>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>         chmod +x ~/bin/make.cross
>>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>>>         # save the attached .config to linux build tree
>>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
>>>
>>> If you fix the issue, kindly add following tag
>>> Reported-by: kbuild test robot <lkp@intel.com>
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
>>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
>>
>> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
>> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
>> shouldn't be possible since in drivers/virtio/Kconfig we have the
>> following:
>> config VIRTIO_BALLOON
>>         tristate "Virtio balloon driver"
>>         depends on VIRTIO
>>         select MEMORY_BALLOON
>>         select PAGE_REPORTING
>>
>> I think I traced the problem down. It looks like it is related to this patch:
>>     RISC-V: Add kconfig option for QEMU virt machine
>>
>>     We add kconfig option for QEMU virt machine and select all
>>     required VIRTIO drivers using this kconfig option.
>>
>>     Signed-off-by: Anup Patel <anup.patel@wdc.com>
>>     Reviewed-by: Atish Patra <atish.patra@wdc.com>
>>     Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
>>     Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
>>     Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
>>
>>
>> The problem is it is using select to enable things that have
>> dependencies, and as a result it is enabling things without enabling
>> the bits needed to support them. That isn't recommended and is
>> actually called out to something to avoid in the kconfig-language
>> documentation:
>> https://elixir.bootlin.com/linux/latest/source/Documentation/kbuild/kconfig-language.rst#L143
> 
> 
> I agree. And when we change virtio we likely won't remember to fix up RISC-V.
> So please don't poke at it from arches.
> The right way to do this IMHO is via ARCH_DEFCONFIG, and using
> a defconfig per board.
> And I think the same applies to s390 and virtio console.
> Christian?

Right. The select of VIRTIO_CONSOLE in S390_GUEST ĺooks more like a historic relic.
Will fix. 



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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10  6:08   ` Michael S. Tsirkin
  2020-03-10  7:56     ` Christian Borntraeger
@ 2020-03-10  8:43     ` Anup Patel
  2020-03-10  9:07       ` Michael S. Tsirkin
  1 sibling, 1 reply; 14+ messages in thread
From: Anup Patel @ 2020-03-10  8:43 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Alexander Duyck, Anup Patel, kbuild test robot,
	Linux Memory Management List, Palmer Dabbelt,
	Christian Borntraeger, Atish Patra, Alistair Francis,
	linux-riscv, Andrew Morton

On Tue, Mar 10, 2020 at 11:38 AM Michael S. Tsirkin <mst@redhat.com> wrote:
>
> On Mon, Mar 09, 2020 at 07:19:51PM -0700, Alexander Duyck wrote:
> > On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
> > >
> > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > > head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> > > commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> > > config: riscv-randconfig-a001-20200308 (attached as .config)
> > > compiler: riscv64-linux-gcc (GCC) 7.5.0
> > > reproduce:
> > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > >         chmod +x ~/bin/make.cross
> > >         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
> > >         # save the attached .config to linux build tree
> > >         GCC_VERSION=7.5.0 make.cross ARCH=riscv
> > >
> > > If you fix the issue, kindly add following tag
> > > Reported-by: kbuild test robot <lkp@intel.com>
> > >
> > > All errors (new ones prefixed by >>):
> > >
> > >    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
> > >    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
> > >    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> > > >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
> > >    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
> > >    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
> > >    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> > > >> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
> > >    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> > > >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
> > >    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
> > >    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
> > >    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
> > >    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
> > >    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
> >
> > It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
> > but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
> > shouldn't be possible since in drivers/virtio/Kconfig we have the
> > following:
> > config VIRTIO_BALLOON
> >         tristate "Virtio balloon driver"
> >         depends on VIRTIO
> >         select MEMORY_BALLOON
> >         select PAGE_REPORTING
> >
> > I think I traced the problem down. It looks like it is related to this patch:
> >     RISC-V: Add kconfig option for QEMU virt machine
> >
> >     We add kconfig option for QEMU virt machine and select all
> >     required VIRTIO drivers using this kconfig option.
> >
> >     Signed-off-by: Anup Patel <anup.patel@wdc.com>
> >     Reviewed-by: Atish Patra <atish.patra@wdc.com>
> >     Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
> >     Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> >     Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
> >
> >
> > The problem is it is using select to enable things that have
> > dependencies, and as a result it is enabling things without enabling
> > the bits needed to support them. That isn't recommended and is
> > actually called out to something to avoid in the kconfig-language
> > documentation:
> > https://elixir.bootlin.com/linux/latest/source/Documentation/kbuild/kconfig-language.rst#L143
>
>
> I agree. And when we change virtio we likely won't remember to fix up RISC-V.
> So please don't poke at it from arches.

I will fix RISC-V Kconfig.

Is it fine to use "imply" inplace of "select" ?

Regards,
Anup

> The right way to do this IMHO is via ARCH_DEFCONFIG, and using
> a defconfig per board.
> And I think the same applies to s390 and virtio console.
> Christian?
>
> --
> MST
>
>


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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10  8:43     ` Anup Patel
@ 2020-03-10  9:07       ` Michael S. Tsirkin
  0 siblings, 0 replies; 14+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:07 UTC (permalink / raw)
  To: Anup Patel
  Cc: Alexander Duyck, Anup Patel, kbuild test robot,
	Linux Memory Management List, Palmer Dabbelt,
	Christian Borntraeger, Atish Patra, Alistair Francis,
	linux-riscv, Andrew Morton

On Tue, Mar 10, 2020 at 02:13:19PM +0530, Anup Patel wrote:
> On Tue, Mar 10, 2020 at 11:38 AM Michael S. Tsirkin <mst@redhat.com> wrote:
> >
> > On Mon, Mar 09, 2020 at 07:19:51PM -0700, Alexander Duyck wrote:
> > > On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
> > > >
> > > > tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> > > > head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> > > > commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> > > > config: riscv-randconfig-a001-20200308 (attached as .config)
> > > > compiler: riscv64-linux-gcc (GCC) 7.5.0
> > > > reproduce:
> > > >         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> > > >         chmod +x ~/bin/make.cross
> > > >         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
> > > >         # save the attached .config to linux build tree
> > > >         GCC_VERSION=7.5.0 make.cross ARCH=riscv
> > > >
> > > > If you fix the issue, kindly add following tag
> > > > Reported-by: kbuild test robot <lkp@intel.com>
> > > >
> > > > All errors (new ones prefixed by >>):
> > > >
> > > >    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
> > > >    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
> > > >    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> > > > >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
> > > >    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
> > > >    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
> > > >    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> > > > >> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
> > > >    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> > > > >> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
> > > >    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
> > > >    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
> > > >    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
> > > >    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
> > > >    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
> > >
> > > It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
> > > but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
> > > shouldn't be possible since in drivers/virtio/Kconfig we have the
> > > following:
> > > config VIRTIO_BALLOON
> > >         tristate "Virtio balloon driver"
> > >         depends on VIRTIO
> > >         select MEMORY_BALLOON
> > >         select PAGE_REPORTING
> > >
> > > I think I traced the problem down. It looks like it is related to this patch:
> > >     RISC-V: Add kconfig option for QEMU virt machine
> > >
> > >     We add kconfig option for QEMU virt machine and select all
> > >     required VIRTIO drivers using this kconfig option.
> > >
> > >     Signed-off-by: Anup Patel <anup.patel@wdc.com>
> > >     Reviewed-by: Atish Patra <atish.patra@wdc.com>
> > >     Reviewed-by: Palmer Dabbelt <palmerdabbelt@google.com>
> > >     Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
> > >     Signed-off-by: Palmer Dabbelt <palmerdabbelt@google.com>
> > >
> > >
> > > The problem is it is using select to enable things that have
> > > dependencies, and as a result it is enabling things without enabling
> > > the bits needed to support them. That isn't recommended and is
> > > actually called out to something to avoid in the kconfig-language
> > > documentation:
> > > https://elixir.bootlin.com/linux/latest/source/Documentation/kbuild/kconfig-language.rst#L143
> >
> >
> > I agree. And when we change virtio we likely won't remember to fix up RISC-V.
> > So please don't poke at it from arches.
> 
> I will fix RISC-V Kconfig.
> 
> Is it fine to use "imply" inplace of "select" ?
> 
> Regards,
> Anup

IIUC imply has exactly the same limitations as select,
so this won't do any good.

> > The right way to do this IMHO is via ARCH_DEFCONFIG, and using
> > a defconfig per board.
> > And I think the same applies to s390 and virtio console.
> > Christian?
> >
> > --
> > MST
> >
> >



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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10  2:19 ` Alexander Duyck
  2020-03-10  6:08   ` Michael S. Tsirkin
@ 2020-03-10 10:22   ` David Hildenbrand
  2020-03-10 10:26     ` David Hildenbrand
  1 sibling, 1 reply; 14+ messages in thread
From: David Hildenbrand @ 2020-03-10 10:22 UTC (permalink / raw)
  To: Alexander Duyck, kbuild test robot, linux-riscv, anup.patel,
	atish.patra, palmerdabbelt, alistair.francis
  Cc: Andrew Morton, Linux Memory Management List, Michael S. Tsirkin

On 10.03.20 03:19, Alexander Duyck wrote:
> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
>>
>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
>> config: riscv-randconfig-a001-20200308 (attached as .config)
>> compiler: riscv64-linux-gcc (GCC) 7.5.0
>> reproduce:
>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>         chmod +x ~/bin/make.cross
>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>>         # save the attached .config to linux build tree
>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
>>
>> If you fix the issue, kindly add following tag
>> Reported-by: kbuild test robot <lkp@intel.com>
>>
>> All errors (new ones prefixed by >>):
>>
>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
> 
> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
> shouldn't be possible since in drivers/virtio/Kconfig we have the
> following:
> config VIRTIO_BALLOON
>         tristate "Virtio balloon driver"
>         depends on VIRTIO
>         select MEMORY_BALLOON
>         select PAGE_REPORTING

IMHO that's perfectly valid. You might want to have ballooning without
page compaction (MEMORY_BALLOON). Same with PAGE_REPORTING.

AFAIK, "select" will still allow you to disable these things - which
used to work fine with MEMORY_BALLOON (did that myself when debugging a
compaction issue).

-- 
Thanks,

David / dhildenb



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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10 10:22   ` David Hildenbrand
@ 2020-03-10 10:26     ` David Hildenbrand
  2020-03-10 12:02       ` Anup Patel
  0 siblings, 1 reply; 14+ messages in thread
From: David Hildenbrand @ 2020-03-10 10:26 UTC (permalink / raw)
  To: Alexander Duyck, kbuild test robot, linux-riscv, anup.patel,
	atish.patra, palmerdabbelt, alistair.francis
  Cc: Andrew Morton, Linux Memory Management List, Michael S. Tsirkin

On 10.03.20 11:22, David Hildenbrand wrote:
> On 10.03.20 03:19, Alexander Duyck wrote:
>> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
>>>
>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
>>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
>>> config: riscv-randconfig-a001-20200308 (attached as .config)
>>> compiler: riscv64-linux-gcc (GCC) 7.5.0
>>> reproduce:
>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>         chmod +x ~/bin/make.cross
>>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>>>         # save the attached .config to linux build tree
>>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
>>>
>>> If you fix the issue, kindly add following tag
>>> Reported-by: kbuild test robot <lkp@intel.com>
>>>
>>> All errors (new ones prefixed by >>):
>>>
>>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
>>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
>>
>> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
>> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
>> shouldn't be possible since in drivers/virtio/Kconfig we have the
>> following:
>> config VIRTIO_BALLOON
>>         tristate "Virtio balloon driver"
>>         depends on VIRTIO
>>         select MEMORY_BALLOON
>>         select PAGE_REPORTING
> 
> IMHO that's perfectly valid. You might want to have ballooning without
> page compaction (MEMORY_BALLOON). Same with PAGE_REPORTING.
> 
> AFAIK, "select" will still allow you to disable these things - which
> used to work fine with MEMORY_BALLOON (did that myself when debugging a
> compaction issue).
> 

Correction: I disabled BALLOON_COMPACTION back then ... so ignore my
comment regarding that :)

But we should be able to build VIRTIO_BALLOON without PAGE_REPORTING
somehow IMHO.

-- 
Thanks,

David / dhildenb



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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10 10:26     ` David Hildenbrand
@ 2020-03-10 12:02       ` Anup Patel
  2020-03-10 12:13         ` David Hildenbrand
  0 siblings, 1 reply; 14+ messages in thread
From: Anup Patel @ 2020-03-10 12:02 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: Alexander Duyck, kbuild test robot, linux-riscv, Anup Patel,
	Atish Patra, Palmer Dabbelt, Alistair Francis,
	Linux Memory Management List, Andrew Morton, Michael S. Tsirkin

On Tue, Mar 10, 2020 at 3:56 PM David Hildenbrand <david@redhat.com> wrote:
>
> On 10.03.20 11:22, David Hildenbrand wrote:
> > On 10.03.20 03:19, Alexander Duyck wrote:
> >> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
> >>>
> >>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> >>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> >>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> >>> config: riscv-randconfig-a001-20200308 (attached as .config)
> >>> compiler: riscv64-linux-gcc (GCC) 7.5.0
> >>> reproduce:
> >>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >>>         chmod +x ~/bin/make.cross
> >>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
> >>>         # save the attached .config to linux build tree
> >>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
> >>>
> >>> If you fix the issue, kindly add following tag
> >>> Reported-by: kbuild test robot <lkp@intel.com>
> >>>
> >>> All errors (new ones prefixed by >>):
> >>>
> >>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
> >>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
> >>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
> >>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
> >>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
> >>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> >>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
> >>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
> >>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
> >>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
> >>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
> >>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
> >>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
> >>
> >> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
> >> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
> >> shouldn't be possible since in drivers/virtio/Kconfig we have the
> >> following:
> >> config VIRTIO_BALLOON
> >>         tristate "Virtio balloon driver"
> >>         depends on VIRTIO
> >>         select MEMORY_BALLOON
> >>         select PAGE_REPORTING
> >
> > IMHO that's perfectly valid. You might want to have ballooning without
> > page compaction (MEMORY_BALLOON). Same with PAGE_REPORTING.
> >
> > AFAIK, "select" will still allow you to disable these things - which
> > used to work fine with MEMORY_BALLOON (did that myself when debugging a
> > compaction issue).
> >
>
> Correction: I disabled BALLOON_COMPACTION back then ... so ignore my
> comment regarding that :)
>
> But we should be able to build VIRTIO_BALLOON without PAGE_REPORTING
> somehow IMHO.

I have moved all VIRTIO driver selection to defconfigs for RISC-V which was
the case before.

Here's the patch:
https://patchwork.kernel.org/patch/11429217/

Thanks,
Anup


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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10 12:02       ` Anup Patel
@ 2020-03-10 12:13         ` David Hildenbrand
  2020-03-10 15:08           ` Alexander Duyck
  0 siblings, 1 reply; 14+ messages in thread
From: David Hildenbrand @ 2020-03-10 12:13 UTC (permalink / raw)
  To: Anup Patel
  Cc: Alexander Duyck, kbuild test robot, linux-riscv, Anup Patel,
	Atish Patra, Palmer Dabbelt, Alistair Francis,
	Linux Memory Management List, Andrew Morton, Michael S. Tsirkin

On 10.03.20 13:02, Anup Patel wrote:
> On Tue, Mar 10, 2020 at 3:56 PM David Hildenbrand <david@redhat.com> wrote:
>>
>> On 10.03.20 11:22, David Hildenbrand wrote:
>>> On 10.03.20 03:19, Alexander Duyck wrote:
>>>> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
>>>>>
>>>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>>>>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
>>>>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
>>>>> config: riscv-randconfig-a001-20200308 (attached as .config)
>>>>> compiler: riscv64-linux-gcc (GCC) 7.5.0
>>>>> reproduce:
>>>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>>>         chmod +x ~/bin/make.cross
>>>>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>>>>>         # save the attached .config to linux build tree
>>>>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
>>>>>
>>>>> If you fix the issue, kindly add following tag
>>>>> Reported-by: kbuild test robot <lkp@intel.com>
>>>>>
>>>>> All errors (new ones prefixed by >>):
>>>>>
>>>>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>>>>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>>>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>>>>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>>>>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>>>>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
>>>>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>>>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
>>>>
>>>> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
>>>> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
>>>> shouldn't be possible since in drivers/virtio/Kconfig we have the
>>>> following:
>>>> config VIRTIO_BALLOON
>>>>         tristate "Virtio balloon driver"
>>>>         depends on VIRTIO
>>>>         select MEMORY_BALLOON
>>>>         select PAGE_REPORTING
>>>
>>> IMHO that's perfectly valid. You might want to have ballooning without
>>> page compaction (MEMORY_BALLOON). Same with PAGE_REPORTING.
>>>
>>> AFAIK, "select" will still allow you to disable these things - which
>>> used to work fine with MEMORY_BALLOON (did that myself when debugging a
>>> compaction issue).
>>>
>>
>> Correction: I disabled BALLOON_COMPACTION back then ... so ignore my
>> comment regarding that :)
>>
>> But we should be able to build VIRTIO_BALLOON without PAGE_REPORTING
>> somehow IMHO.
> 
> I have moved all VIRTIO driver selection to defconfigs for RISC-V which was
> the case before.
> 
> Here's the patch:
> https://patchwork.kernel.org/patch/11429217/

Make perfect sense. Still I think we might want to have the option to
build without page reporting in the future, similar to building without
balloon compaction (which is another discussion).

-- 
Thanks,

David / dhildenb



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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10 12:13         ` David Hildenbrand
@ 2020-03-10 15:08           ` Alexander Duyck
  2020-03-10 15:13             ` David Hildenbrand
  0 siblings, 1 reply; 14+ messages in thread
From: Alexander Duyck @ 2020-03-10 15:08 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: Anup Patel, kbuild test robot, linux-riscv, Anup Patel,
	Atish Patra, Palmer Dabbelt, Alistair Francis,
	Linux Memory Management List, Andrew Morton, Michael S. Tsirkin

On Tue, Mar 10, 2020 at 5:13 AM David Hildenbrand <david@redhat.com> wrote:
>
> On 10.03.20 13:02, Anup Patel wrote:
> > On Tue, Mar 10, 2020 at 3:56 PM David Hildenbrand <david@redhat.com> wrote:
> >>
> >> On 10.03.20 11:22, David Hildenbrand wrote:
> >>> On 10.03.20 03:19, Alexander Duyck wrote:
> >>>> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
> >>>>>
> >>>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
> >>>>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
> >>>>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
> >>>>> config: riscv-randconfig-a001-20200308 (attached as .config)
> >>>>> compiler: riscv64-linux-gcc (GCC) 7.5.0
> >>>>> reproduce:
> >>>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
> >>>>>         chmod +x ~/bin/make.cross
> >>>>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
> >>>>>         # save the attached .config to linux build tree
> >>>>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
> >>>>>
> >>>>> If you fix the issue, kindly add following tag
> >>>>> Reported-by: kbuild test robot <lkp@intel.com>
> >>>>>
> >>>>> All errors (new ones prefixed by >>):
> >>>>>
> >>>>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
> >>>>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
> >>>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >>>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
> >>>>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
> >>>>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
> >>>>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
> >>>>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
> >>>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
> >>>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
> >>>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
> >>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
> >>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
> >>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
> >>>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
> >>>>
> >>>> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
> >>>> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
> >>>> shouldn't be possible since in drivers/virtio/Kconfig we have the
> >>>> following:
> >>>> config VIRTIO_BALLOON
> >>>>         tristate "Virtio balloon driver"
> >>>>         depends on VIRTIO
> >>>>         select MEMORY_BALLOON
> >>>>         select PAGE_REPORTING
> >>>
> >>> IMHO that's perfectly valid. You might want to have ballooning without
> >>> page compaction (MEMORY_BALLOON). Same with PAGE_REPORTING.
> >>>
> >>> AFAIK, "select" will still allow you to disable these things - which
> >>> used to work fine with MEMORY_BALLOON (did that myself when debugging a
> >>> compaction issue).
> >>>
> >>
> >> Correction: I disabled BALLOON_COMPACTION back then ... so ignore my
> >> comment regarding that :)
> >>
> >> But we should be able to build VIRTIO_BALLOON without PAGE_REPORTING
> >> somehow IMHO.
> >
> > I have moved all VIRTIO driver selection to defconfigs for RISC-V which was
> > the case before.
> >
> > Here's the patch:
> > https://patchwork.kernel.org/patch/11429217/
>
> Make perfect sense. Still I think we might want to have the option to
> build without page reporting in the future, similar to building without
> balloon compaction (which is another discussion).

As far as page reporting it would be pretty simple to make it so that
we can build without having it enabled. It would just depend on how we
want to go about it.

My past experience has been that you end up having to create a third
Kconfig option that depends on VIRTIO_BALLOON and selects the other
config item. Then it is just a matter of figuring out if we want to
use the new define as a wrapper in the virtio balloon driver, or if we
want to create stubbed-out versions of page reporting and balloon
compaction.

- Alex


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

* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
  2020-03-10 15:08           ` Alexander Duyck
@ 2020-03-10 15:13             ` David Hildenbrand
  0 siblings, 0 replies; 14+ messages in thread
From: David Hildenbrand @ 2020-03-10 15:13 UTC (permalink / raw)
  To: Alexander Duyck
  Cc: Anup Patel, kbuild test robot, linux-riscv, Anup Patel,
	Atish Patra, Palmer Dabbelt, Alistair Francis,
	Linux Memory Management List, Andrew Morton, Michael S. Tsirkin

On 10.03.20 16:08, Alexander Duyck wrote:
> On Tue, Mar 10, 2020 at 5:13 AM David Hildenbrand <david@redhat.com> wrote:
>>
>> On 10.03.20 13:02, Anup Patel wrote:
>>> On Tue, Mar 10, 2020 at 3:56 PM David Hildenbrand <david@redhat.com> wrote:
>>>>
>>>> On 10.03.20 11:22, David Hildenbrand wrote:
>>>>> On 10.03.20 03:19, Alexander Duyck wrote:
>>>>>> On Sun, Mar 8, 2020 at 7:54 PM kbuild test robot <lkp@intel.com> wrote:
>>>>>>>
>>>>>>> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master
>>>>>>> head:   b86a6a241b7c60ca7a6ca4fb3c0d2aedbbf2c1b6
>>>>>>> commit: 120359931943d2b801ce51a1a045dcc0a5d1a55b [7003/7050] Merge branch 'akpm-current/current'
>>>>>>> config: riscv-randconfig-a001-20200308 (attached as .config)
>>>>>>> compiler: riscv64-linux-gcc (GCC) 7.5.0
>>>>>>> reproduce:
>>>>>>>         wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
>>>>>>>         chmod +x ~/bin/make.cross
>>>>>>>         git checkout 120359931943d2b801ce51a1a045dcc0a5d1a55b
>>>>>>>         # save the attached .config to linux build tree
>>>>>>>         GCC_VERSION=7.5.0 make.cross ARCH=riscv
>>>>>>>
>>>>>>> If you fix the issue, kindly add following tag
>>>>>>> Reported-by: kbuild test robot <lkp@intel.com>
>>>>>>>
>>>>>>> All errors (new ones prefixed by >>):
>>>>>>>
>>>>>>>    drivers/virtio/virtio_balloon.o: In function `leak_balloon':
>>>>>>>    drivers/virtio/virtio_balloon.c:281: undefined reference to `balloon_page_dequeue'
>>>>>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
>>>>>>>    drivers/virtio/virtio_balloon.o: In function `virtio_cread32':
>>>>>>>    include/linux/virtio_config.h:423: undefined reference to `balloon_page_alloc'
>>>>>>>    drivers/virtio/virtio_balloon.o: In function `fill_balloon':
>>>>>>>>> drivers/virtio/virtio_balloon.c:233: undefined reference to `balloon_page_enqueue'
>>>>>>>    drivers/virtio/virtio_balloon.o: In function `__virtio_test_bit':
>>>>>>>>> include/linux/virtio_config.h:113: undefined reference to `page_reporting_register'
>>>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_remove':
>>>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:139: undefined reference to `drm_dev_unplug'
>>>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:140: undefined reference to `drm_atomic_helper_shutdown'
>>>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.c:141: undefined reference to `drm_dev_put'
>>>>>>>    drivers/gpu/drm/virtio/virtgpu_drv.o: In function `virtio_gpu_probe':
>>>>>>
>>>>>> It looks like somehow the config has CONFIG_VIRTIO_BALLOON enabled,
>>>>>> but didn't select CONFIG_MEMORY_BALLOON nor CONFIG_PAGE_REPORTING That
>>>>>> shouldn't be possible since in drivers/virtio/Kconfig we have the
>>>>>> following:
>>>>>> config VIRTIO_BALLOON
>>>>>>         tristate "Virtio balloon driver"
>>>>>>         depends on VIRTIO
>>>>>>         select MEMORY_BALLOON
>>>>>>         select PAGE_REPORTING
>>>>>
>>>>> IMHO that's perfectly valid. You might want to have ballooning without
>>>>> page compaction (MEMORY_BALLOON). Same with PAGE_REPORTING.
>>>>>
>>>>> AFAIK, "select" will still allow you to disable these things - which
>>>>> used to work fine with MEMORY_BALLOON (did that myself when debugging a
>>>>> compaction issue).
>>>>>
>>>>
>>>> Correction: I disabled BALLOON_COMPACTION back then ... so ignore my
>>>> comment regarding that :)
>>>>
>>>> But we should be able to build VIRTIO_BALLOON without PAGE_REPORTING
>>>> somehow IMHO.
>>>
>>> I have moved all VIRTIO driver selection to defconfigs for RISC-V which was
>>> the case before.
>>>
>>> Here's the patch:
>>> https://patchwork.kernel.org/patch/11429217/
>>
>> Make perfect sense. Still I think we might want to have the option to
>> build without page reporting in the future, similar to building without
>> balloon compaction (which is another discussion).
> 
> As far as page reporting it would be pretty simple to make it so that
> we can build without having it enabled. It would just depend on how we
> want to go about it.
> 
> My past experience has been that you end up having to create a third
> Kconfig option that depends on VIRTIO_BALLOON and selects the other
> config item. Then it is just a matter of figuring out if we want to

Yes, came to the same conclusion.

> use the new define as a wrapper in the virtio balloon driver, or if we
> want to create stubbed-out versions of page reporting and balloon
> compaction.

At least balloon compaction has stubs but still requires special
handling in the balloon drivers (e.g., skip balloon mount etc.)

Nothing urgent.

-- 
Thanks,

David / dhildenb



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

end of thread, other threads:[~2020-03-10 15:13 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-09  2:54 [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister' kbuild test robot
2020-03-10  0:53 ` Andrew Morton
2020-03-10  1:00   ` Alexander Duyck
2020-03-10  2:19 ` Alexander Duyck
2020-03-10  6:08   ` Michael S. Tsirkin
2020-03-10  7:56     ` Christian Borntraeger
2020-03-10  8:43     ` Anup Patel
2020-03-10  9:07       ` Michael S. Tsirkin
2020-03-10 10:22   ` David Hildenbrand
2020-03-10 10:26     ` David Hildenbrand
2020-03-10 12:02       ` Anup Patel
2020-03-10 12:13         ` David Hildenbrand
2020-03-10 15:08           ` Alexander Duyck
2020-03-10 15:13             ` David Hildenbrand

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).