linux-riscv.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* Re: [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister'
       [not found] <202003091047.yO0wlUGy%lkp@intel.com>
@ 2020-03-10  2:19 ` Alexander Duyck
  2020-03-10  6:08   ` Michael S. Tsirkin
  2020-03-10 10:22   ` David Hildenbrand
  0 siblings, 2 replies; 11+ 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: Linux Memory Management List, Andrew Morton, 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] 11+ 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 ` [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister' 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; 11+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  6:08 UTC (permalink / raw)
  To: Alexander Duyck
  Cc: anup.patel, kbuild test robot, Linux Memory Management List,
	palmerdabbelt, Christian Borntraeger, atish.patra,
	alistair.francis, linux-riscv, Andrew Morton

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] 11+ 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; 11+ messages in thread
From: Christian Borntraeger @ 2020-03-10  7:56 UTC (permalink / raw)
  To: Michael S. Tsirkin, Alexander Duyck
  Cc: anup.patel, kbuild test robot, Linux Memory Management List,
	palmerdabbelt, atish.patra, alistair.francis, linux-riscv,
	Andrew Morton


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] 11+ 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; 11+ messages in thread
From: Anup Patel @ 2020-03-10  8:43 UTC (permalink / raw)
  To: Michael S. Tsirkin
  Cc: Anup Patel, kbuild test robot, Christian Borntraeger,
	Palmer Dabbelt, Alexander Duyck, Linux Memory Management List,
	Alistair Francis, linux-riscv, Atish Patra, 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] 11+ 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; 11+ messages in thread
From: Michael S. Tsirkin @ 2020-03-10  9:07 UTC (permalink / raw)
  To: Anup Patel
  Cc: Anup Patel, kbuild test robot, Christian Borntraeger,
	Palmer Dabbelt, Alexander Duyck, Linux Memory Management List,
	Alistair Francis, linux-riscv, Atish Patra, 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] 11+ 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 ` [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister' 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; 11+ 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: Linux Memory Management List, Andrew Morton, 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] 11+ 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; 11+ 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: Linux Memory Management List, Andrew Morton, 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] 11+ 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; 11+ messages in thread
From: Anup Patel @ 2020-03-10 12:02 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: Anup Patel, kbuild test robot, Linux Memory Management List,
	Michael S. Tsirkin, Palmer Dabbelt, Alexander Duyck, Atish Patra,
	Alistair Francis, linux-riscv, Andrew Morton

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] 11+ 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; 11+ messages in thread
From: David Hildenbrand @ 2020-03-10 12:13 UTC (permalink / raw)
  To: Anup Patel
  Cc: Anup Patel, kbuild test robot, Linux Memory Management List,
	Michael S. Tsirkin, Palmer Dabbelt, Alexander Duyck, Atish Patra,
	Alistair Francis, linux-riscv, Andrew Morton

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] 11+ 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; 11+ messages in thread
From: Alexander Duyck @ 2020-03-10 15:08 UTC (permalink / raw)
  To: David Hildenbrand
  Cc: Anup Patel, kbuild test robot, Linux Memory Management List,
	Anup Patel, Palmer Dabbelt, Atish Patra, Alistair Francis,
	linux-riscv, Michael S. Tsirkin, Andrew Morton

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] 11+ 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; 11+ messages in thread
From: David Hildenbrand @ 2020-03-10 15:13 UTC (permalink / raw)
  To: Alexander Duyck
  Cc: Anup Patel, kbuild test robot, Linux Memory Management List,
	Anup Patel, Palmer Dabbelt, Atish Patra, Alistair Francis,
	linux-riscv, Michael S. Tsirkin, Andrew Morton

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] 11+ messages in thread

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

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <202003091047.yO0wlUGy%lkp@intel.com>
2020-03-10  2:19 ` [linux-next:master 7003/7050] include/linux/virtio_config.h:113: undefined reference to `page_reporting_unregister' 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).