Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S932744AbYCGUwN (ORCPT ); Fri, 7 Mar 2008 15:52:13 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1759685AbYCGUv4 (ORCPT ); Fri, 7 Mar 2008 15:51:56 -0500 Received: from perninha.conectiva.com.br ([200.140.247.100]:48961 "EHLO perninha.conectiva.com.br" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1759492AbYCGUvz (ORCPT ); Fri, 7 Mar 2008 15:51:55 -0500 Date: Fri, 7 Mar 2008 17:51:48 -0300 From: "Luiz Fernando N. Capitulino" To: Andi Kleen Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: Re: [PATCH] [0/13] General DMA zone rework Message-ID: <20080307175148.3a49d8d3@mandriva.com.br> In-Reply-To: <200803071007.493903088@firstfloor.org> References: <200803071007.493903088@firstfloor.org> Organization: Mandriva X-Mailer: Claws Mail 3.3.1 (GTK+ 2.12.8; i586-mandriva-linux-gnu) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 5475 Lines: 122 Em Fri, 7 Mar 2008 10:07:10 +0100 (CET) Andi Kleen escreveu: | I chose to implement a new "maskable memory" allocator to solve these | problems. The existing page buddy allocator is not really suited for | this because the data structures don't allow cheap allocation by physical | address boundary. These patches are supposed to work, I think? I've tried to give them a try but got some problems. First, the simple test case seems to fail miserably: """ testing mask alloc upto 24 bits gpm1 3 mask 3fffff size 20440 total 62KB failed gpm1 4 mask 3fffff size 24369 total 62KB failed gpm1 6 mask 3fffff size 15255 total 64KB failed gpm1 7 mask 3fffff size 12676 total 64KB failed gpm1 8 mask 3fffff size 23917 total 64KB failed gpm1 9 mask 3fffff size 11682 total 64KB failed gpm1 10 mask 3fffff size 23091 total 64KB failed gpm1 11 mask 3fffff size 16880 total 64KB failed gpm1 12 mask 3fffff size 17257 total 64KB failed gpm1 13 mask 3fffff size 8686 total 64KB failed gpm1 14 mask 3fffff size 9871 total 64KB failed gpm1 15 mask 3fffff size 19740 total 64KB failed gpm1 16 mask 3fffff size 11557 total 64KB failed gpm1 18 mask 3fffff size 23723 total 67KB failed gpm1 19 mask 3fffff size 16136 total 67KB failed gpm2 6 mask 3fffff size 4471 failed gpm2 7 mask 3fffff size 16868 failed gpm2 8 mask 3fffff size 22093 failed gpm2 9 mask 3fffff size 17666 failed gpm2 11 mask 3fffff size 14416 failed gpm2 12 mask 3fffff size 10825 failed gpm2 13 mask 3fffff size 3918 failed gpm2 14 mask 3fffff size 6255 failed gpm2 15 mask 3fffff size 2428 failed gpm2 16 mask 3fffff size 517 failed gpm2 18 mask 3fffff size 12890 failed gpm2 19 mask 3fffff size 3211 failed verify & free mask fffff mask 1fffff mask 3fffff mask 7fffff mask ffffff done """ Then boot up goes on and while init is running I get this: """ Starting udev: ------------[ cut here ]------------ kernel BUG at mm/mask-alloc.c:178! invalid opcode: 0000 [#1] Modules linked in: parport_pc(+) parport snd_via82xx(+) gameport snd_ac97_codec rtc_cmos ac97_bus rtc_core rtc_lib snd_pcm snd_timer snd_page_alloc snd_mpu401_uart snd_rawmidi snd_seq_device pcspkr snd soundcore evdev i2c_viapro i2c_core thermal button processor ohci1394 ide_cd_mod ieee1394 cdrom firewire_ohci shpchp via_agp firewire_core crc_itu_t agpgart pci_hotplug 8139too mii via82cxxx ide_disk ide_core ext3 jbd uhci_hcd ohci_hcd ehci_hcd usbcore Pid: 1088, comm: modprobe Not tainted (2.6.25-0.rc4.1mdv #1) EIP: 0060:[] EFLAGS: 00010206 CPU: 0 EIP is at alloc_pages_mask+0x74/0x3de EAX: 00000000 EBX: 00001000 ECX: df8fb854 EDX: 000004e2 ESI: 00000000 EDI: 00010000 EBP: dfbf9c44 ESP: dfbf9bec DS: 007b ES: 007b FS: 0000 GS: 0033 SS: 0068 Process modprobe (pid: 1088, ti=dfbf8000 task=dfb9c1a0 task.ti=dfbf8000) Stack: c0486858 004f1000 004f1000 dfbf9c04 00001000 000052d0 dfbf9c28 000fffff 00000001 000004e2 dfbf8000 00000000 c0496ea0 dfb9c1a0 00000000 dfbf9c40 c010ab33 00000000 c02c9250 00001000 00000000 00010000 dfbf9c54 c016d80b Call Trace: [] ? save_stack_trace+0x1c/0x3a [] ? get_pages_mask+0xe/0x23 [] ? dma_alloc_coherent+0xab/0xe5 [] ? save_stack_address+0x0/0x2c [] ? snd_dma_alloc_pages+0xef/0x1ef [snd_page_alloc] [] ? snd_malloc_sgbuf_pages+0xdd/0x170 [snd_page_alloc] [] ? trace_hardirqs_on+0xe6/0x11b [] ? __mutex_unlock_slowpath+0xf2/0x104 [] ? snd_dma_alloc_pages+0x1a9/0x1ef [snd_page_alloc] [] ? mutex_unlock+0x8/0xa [] ? snd_dma_get_reserved_buf+0xb4/0xbd [snd_page_alloc] [] ? snd_pcm_lib_preallocate_pages+0x5b/0x115 [snd_pcm] [] ? snd_pcm_lib_preallocate_pages_for_all+0x31/0x56 [snd_pcm] [] ? snd_via82xx_probe+0xb22/0xe6d [snd_via82xx] [] ? mutex_trylock+0xf3/0x10f [] ? snd_via82xx_mixer_free_ac97+0x0/0x12 [snd_via82xx] [] ? _spin_unlock+0x1d/0x20 [] ? pci_match_device+0x9a/0xa5 [] ? pci_device_probe+0x39/0x59 [] ? driver_probe_device+0x9f/0x119 [] ? __driver_attach+0x4a/0x7f [] ? bus_for_each_dev+0x39/0x5b [] ? driver_attach+0x14/0x16 [] ? __driver_attach+0x0/0x7f [] ? bus_add_driver+0x9d/0x1ae [] ? driver_register+0x47/0xa3 [] ? __pci_register_driver+0x40/0x6d [] ? alsa_card_via82xx_init+0x17/0x19 [snd_via82xx] [] ? sys_init_module+0x13b0/0x14a8 [] ? __request_region+0x0/0x90 [] ? sysenter_past_esp+0xb6/0xc9 [] ? trace_hardirqs_on+0xe6/0x11b [] ? sysenter_past_esp+0x6d/0xc9 ======================= Code: 00 74 1b 8b 45 b8 c7 45 d4 ff ff ff ff 48 c1 e8 0b ff 45 d4 d1 e8 75 f9 83 7d b8 0f 77 04 0f 0b eb fe f7 45 bc 05 40 00 00 74 04 <0f> 0b eb fe 8b 4d bc 80 cd 02 89 4d b0 d1 e9 89 4d ac ff 05 84 EIP: [] alloc_pages_mask+0x74/0x3de SS:ESP 0068:dfbf9bec ---[ end trace c02107712b611dcb ]--- """" How can I help to debug this? Btw, I've created a package to test this for my convenience (that's why you see 'mdv' in the kernel name), but it's a vanilla kernel with your patches on top. -- Luiz Fernando N. Capitulino -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/