[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <6AA91984-7DF3-4820-91DF-DD6CA251B638@fb.com>
Date: Fri, 1 Apr 2022 22:22:00 +0000
From: Song Liu <songliubraving@...com>
To: Christoph Hellwig <hch@...radead.org>,
"rick.p.edgecombe@...el.com" <rick.p.edgecombe@...el.com>,
Nicholas Piggin <npiggin@...il.com>,
Claudio Imbrenda <imbrenda@...ux.ibm.com>
CC: Song Liu <song@...nel.org>,
Linux Memory Management List <linux-mm@...ck.org>,
bpf <bpf@...r.kernel.org>, Networking <netdev@...r.kernel.org>,
X86 ML <x86@...nel.org>, Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
"andrii@...nel.org" <andrii@...nel.org>,
Kernel Team <Kernel-team@...com>,
"akpm@...ux-foundation.org" <akpm@...ux-foundation.org>,
"pmenzel@...gen.mpg.de" <pmenzel@...gen.mpg.de>
Subject: Re: [PATCH bpf 0/4] introduce HAVE_ARCH_HUGE_VMALLOC_FLAG for
bpf_prog_pack
+ Nicholas and Claudio,
> On Mar 31, 2022, at 4:59 PM, Song Liu <songliubraving@...com> wrote:
>
> Hi Christoph,
>
>> On Mar 30, 2022, at 10:37 PM, Christoph Hellwig <hch@...radead.org> wrote:
>>
>> On Wed, Mar 30, 2022 at 03:56:38PM -0700, Song Liu wrote:
>>> We prematurely enabled HAVE_ARCH_HUGE_VMALLOC for x86_64, which could cause
>>> issues [1], [2].
>>>
>>
>> Please fix the underlying issues instead of papering over them and
>> creating a huge maintainance burden for others.
After reading the code a little more, I wonder what would be best strategy.
IIUC, most of the kernel is not ready for huge page backed vmalloc memory.
For example, all the module_alloc cannot work with huge pages at the moment.
And the error Paul Menzel reported in drm_fb_helper.c will probably hit
powerpc with 5.17 kernel as-is? (trace attached below)
Right now, we have VM_NO_HUGE_VMAP to let a user to opt out of huge pages.
However, given there are so many users of vmalloc, vzalloc, etc., we
probably do need a flag for the user to opt-in?
Does this make sense? Any recommendations are really appreciated.
Thanks,
Song
[ 1.687983] BUG: Bad page state in process systemd-udevd pfn:102e03
[ 1.687992] fbcon: Taking over console
[ 1.688007] page:(____ptrval____) refcount:0 mapcount:0 mapping:0000000000000000 index:0x3 pfn:0x102e03
[ 1.688011] head:(____ptrval____) order:9 compound_mapcount:0 compound_pincount:0
[ 1.688013] flags: 0x2fffc000010000(head|node=0|zone=2|lastcpupid=0x3fff)
[ 1.688018] raw: 002fffc000000000 ffffe815040b8001 ffffe815040b80c8 0000000000000000
[ 1.688020] raw: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
[ 1.688022] head: 002fffc000010000 0000000000000000 dead000000000122 0000000000000000
[ 1.688023] head: 0000000000000000 0000000000000000 00000000ffffffff 0000000000000000
[ 1.688024] page dumped because: corrupted mapping in tail page
[ 1.688025] Modules linked in: r8169(+) k10temp snd_pcm(+) xhci_hcd snd_timer realtek ohci_hcd ehci_pci(+) i2c_piix4 ehci_hcd radeon(+) snd sg drm_ttm_helper ttm soundcore coreboot_table acpi_cpufreq fuse ipv6 autofs4
[ 1.688045] CPU: 1 PID: 151 Comm: systemd-udevd Not tainted 5.16.0-11615-gfac54e2bfb5b #319
[ 1.688048] Hardware name: ASUS F2A85-M_PRO/F2A85-M_PRO, BIOS 4.16-337-gb87986e67b 03/25/2022
[ 1.688050] Call Trace:
[ 1.688051] <TASK>
[ 1.688053] dump_stack_lvl+0x34/0x44
[ 1.688059] bad_page.cold+0x63/0x94
[ 1.688063] free_tail_pages_check+0xd1/0x110
[ 1.688067] ? _raw_spin_lock+0x13/0x30
[ 1.688071] free_pcp_prepare+0x251/0x2e0
[ 1.688075] free_unref_page+0x1d/0x110
[ 1.688078] __vunmap+0x28a/0x380
[ 1.688082] drm_fbdev_cleanup+0x5f/0xb0
[ 1.688085] drm_fbdev_fb_destroy+0x15/0x30
[ 1.688087] unregister_framebuffer+0x1d/0x30
[ 1.688091] drm_client_dev_unregister+0x69/0xe0
[ 1.688095] drm_dev_unregister+0x2e/0x80
[ 1.688098] drm_dev_unplug+0x21/0x40
[ 1.688100] simpledrm_remove+0x11/0x20
[ 1.688103] platform_remove+0x1f/0x40
[ 1.688106] __device_release_driver+0x17a/0x240
[ 1.688109] device_release_driver+0x24/0x30
[ 1.688112] bus_remove_device+0xd8/0x140
[ 1.688115] device_del+0x18b/0x3f0
[ 1.688118] ? _raw_spin_unlock_irqrestore+0x1b/0x30
[ 1.688121] ? try_to_wake_up+0x94/0x5b0
[ 1.688124] platform_device_del.part.0+0x13/0x70
[ 1.688127] platform_device_unregister+0x1c/0x30
[ 1.688130] drm_aperture_detach_drivers+0xa1/0xd0
[ 1.688134] drm_aperture_remove_conflicting_pci_framebuffers+0x3f/0x60
[ 1.688137] radeon_pci_probe+0x54/0xf0 [radeon]
[ 1.688212] local_pci_probe+0x45/0x80
[ 1.688216] ? pci_match_device+0xd7/0x130
[ 1.688219] pci_device_probe+0xc2/0x1d0
[ 1.688223] really_probe+0x1f5/0x3d0
[ 1.688226] __driver_probe_device+0xfe/0x180
[ 1.688229] driver_probe_device+0x1e/0x90
[ 1.688232] __driver_attach+0xc0/0x1c0
[ 1.688235] ? __device_attach_driver+0xe0/0xe0
[ 1.688237] ? __device_attach_driver+0xe0/0xe0
[ 1.688239] bus_for_each_dev+0x78/0xc0
[ 1.688242] bus_add_driver+0x149/0x1e0
[ 1.688245] driver_register+0x8f/0xe0
[ 1.688248] ? 0xffffffffc051d000
[ 1.688250] do_one_initcall+0x44/0x200
[ 1.688254] ? kmem_cache_alloc_trace+0x170/0x2c0
[ 1.688257] do_init_module+0x5c/0x260
[ 1.688262] __do_sys_finit_module+0xb4/0x120
[ 1.688266] __do_fast_syscall_32+0x6b/0xe0
[ 1.688270] do_fast_syscall_32+0x2f/0x70
[ 1.688272] entry_SYSCALL_compat_after_hwframe+0x45/0x4d
[ 1.688275] RIP: 0023:0xf7e51549
[ 1.688278] Code: 03 74 c0 01 10 05 03 74 b8 01 10 06 03 74 b4 01 10 07 03 74 b0 01 10 08 03 74 d8 01 00 00 00 00 00 51 52 55 89 cd 0f 05 cd 80 <5d> 5a 59 c3 90 90 90 90 8d b4 26 00 00 00 00 8d b4 26 00 00 00 00
[ 1.688281] RSP: 002b:00000000ffa1666c EFLAGS: 00200292 ORIG_RAX: 000000000000015e
[ 1.688285] RAX: ffffffffffffffda RBX: 0000000000000010 RCX: 00000000f7e30e09
[ 1.688287] RDX: 0000000000000000 RSI: 00000000f9a705d0 RDI: 00000000f9a6f6a0
[ 1.688288] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000000
[ 1.688290] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
[ 1.688291] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
[ 1.688294] </TASK>
[ 1.688355] Disabling lock debugging due to kernel taint
Powered by blists - more mailing lists