lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Sat, 16 Feb 2008 13:52:16 -0800
From:	Arjan van de Ven <arjan@...ux.intel.com>
To:	Laurent Riffard <laurent.riffard@...e.fr>
CC:	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org, Stuart Bennett <sb476@....ac.uk>,
	"Brown, Len" <len.brown@...el.com>
Subject: Re: 2.6.25-rc2-mm1: WARNING at arch/x86/mm/ioremap.c:129

Laurent Riffard wrote:
> Le 16.02.2008 09:25, Andrew Morton a écrit :
>> ftp://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.25-rc2/2.6.25-rc2-mm1/ 
>>
> 
> Got this in dmesg output:
> 
> ------------[ cut here ]------------
> WARNING: at arch/x86/mm/ioremap.c:129 __ioremap+0xc7/0x182()
> Modules linked in:
> Pid: 1, comm: swapper Not tainted 2.6.25-rc2-mm1 #40
> [<c0118955>] warn_on_slowpath+0x41/0x6d
> [<c0131d0a>] ? trace_hardirqs_on+0xb/0xd
> [<c01fdd89>] ? acpi_os_release_object+0x8/0xc
> [<c02188d4>] ? acpi_ut_delete_object_desc+0x39/0x3e
> [<c0217f05>] ? acpi_ut_delete_internal_obj+0x2c1/0x2c9
> [<c0131d0a>] ? trace_hardirqs_on+0xb/0xd
> [<c0131cde>] ? trace_hardirqs_on_caller+0xdf/0x100
> [<c0131d0a>] ? trace_hardirqs_on+0xb/0xd
> [<c01129c5>] __ioremap+0xc7/0x182
> [<c0112a99>] ioremap_nocache+0xa/0xc
> [<c02a6877>] acpi_os_map_memory+0x11/0x1a
> [<c020b697>] acpi_ex_system_memory_space_handler+0xd3/0x228
> [<c0203bd8>] ? acpi_ev_address_space_dispatch+0x142/0x1a8
> [<c020b5c4>] ? acpi_ex_system_memory_space_handler+0x0/0x228
> [<c0203bfd>] acpi_ev_address_space_dispatch+0x167/0x1a8
> [<c02083dd>] acpi_ex_access_region+0x1e4/0x270
> [<c02085bc>] acpi_ex_field_datum_io+0x153/0x2a1
> [<c0158ac0>] ? cache_alloc_debugcheck_after+0xe9/0x165
> [<c020879b>] acpi_ex_extract_from_field+0x91/0x224
> [<c0206bcf>] ? acpi_ex_read_data_from_field+0x163/0x1b0
> [<c0206bec>] acpi_ex_read_data_from_field+0x180/0x1b0
> [<c020d256>] acpi_ex_resolve_node_to_value+0x1aa/0x230
> [<c0207a32>] acpi_ex_resolve_to_value+0x270/0x2aa
> [<c0209e47>] acpi_ex_resolve_operands+0x24e/0x52f
> [<c0200827>] acpi_ds_exec_end_op+0xb7/0x4f4
> [<c0212d51>] acpi_ps_parse_loop+0x5e5/0x79c
> [<c02120dc>] acpi_ps_parse_aml+0xb2/0x2dd
> [<c021350c>] acpi_ps_execute_method+0x13d/0x20d
> [<c020fb72>] acpi_ns_evaluate+0x10e/0x1b0
> [<c02164ca>] acpi_ut_evaluate_object+0x57/0x1a1
> [<c02166ce>] acpi_ut_execute_STA+0x22/0x7b
> [<c0218d61>] ? acpi_ut_release_mutex+0x85/0x8f
> [<c020f45d>] acpi_ns_get_device_callback+0x5a/0x121
> [<c021173e>] acpi_ns_walk_namespace+0xfa/0x114
> [<c020f381>] acpi_get_devices+0x47/0x5d
> [<c020f403>] ? acpi_ns_get_device_callback+0x0/0x121
> [<c021ce4a>] ? ec_parse_device+0x0/0x6e
> [<c03a4460>] acpi_ec_ecdt_probe+0xaa/0x10a
> [<c03a404b>] acpi_init+0x73/0x21e
> [<c023e5bb>] ? class_create+0x4b/0x64
> [<c0390652>] kernel_init+0xa3/0x1f3
> [<c0103a4e>] ? restore_nocheck_notrace+0x0/0xe
> [<c03905af>] ? kernel_init+0x0/0x1f3
> [<c03905af>] ? kernel_init+0x0/0x1f3
> [<c01045a7>] kernel_thread_helper+0x7/0x10
> =======================
> ---[ end trace 4eaa2a86a8e2da22 ]---
> 
> The offending code in arch/x86/mm/ioremap.c is:
> 101 static void __iomem *__ioremap(unsigned long phys_addr, unsigned 
> long size,
> 102                                enum ioremap_mode mode)
> 103 {
> ...
> 119         /*
> 120          * Don't allow anybody to remap normal RAM that we're using..
> 121          */
> 122         for (pfn = phys_addr >> PAGE_SHIFT; pfn < max_pfn_mapped &&
> 123              (pfn << PAGE_SHIFT) < last_addr; pfn++) {
> 124                 if (page_is_ram(pfn) && pfn_valid(pfn) &&
> 125                     !PageReserved(pfn_to_page(pfn)))
> 126                         return NULL;
> 127         }
> 128 129         WARN_ON_ONCE(page_is_ram(pfn));
> 130
> The WARN_ON was introduced by git-agpgart.patch.
> 
> CC'd Stuart Bennett and Arjan van dev Ven.
> 
> attached: full dmesg and config.
> ~~
> laurent
> 
> 
> ------------------------------------------------------------------------
> 
> Linux version 2.6.25-rc2-mm1 (laurent@...imero) (gcc version 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)) #40 PREEMPT Sat Feb 16 21:34:19 CET 2008
> BIOS-provided physical RAM map:
>  BIOS-e820: 0000000000000000 - 000000000009fc00 (usable)
>  BIOS-e820: 000000000009fc00 - 00000000000a0000 (reserved)
>  BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
>  BIOS-e820: 0000000000100000 - 000000001ffec000 (usable)
>  BIOS-e820: 000000001ffec000 - 000000001ffef000 (ACPI data)
>  BIOS-e820: 000000001ffef000 - 000000001ffff000 (reserved)
>  BIOS-e820: 000000001ffff000 - 0000000020000000 (ACPI NVS)
>  BIOS-e820: 00000000ffff0000 - 0000000100000000 (reserved)
> 511MB LOWMEM available.
> Scan SMP from c0000000 for 1024 bytes.
> Scan SMP from c009fc00 for 1024 bytes.
> Scan SMP from c00f0000 for 65536 bytes.
> Scan SMP from c009fc00 for 1024 bytes.
> Entering add_active_range(0, 0, 131052) 0 entries of 256 used
> sizeof(struct page) = 32
> Zone PFN ranges:
>   DMA             0 ->     4096
>   Normal       4096 ->   131052
> Movable zone start PFN for each node
> early_node_map[1] active PFN ranges
>     0:        0 ->   131052
> On node 0 totalpages: 131052
> Node 0 memmap at 0xc1000000 size 4194304 first pfn 0xc1000000
>   DMA zone: 32 pages used for memmap
>   DMA zone: 0 pages reserved
>   DMA zone: 4064 pages, LIFO batch:0
>   Normal zone: 991 pages used for memmap
>   Normal zone: 125965 pages, LIFO batch:31
>   Movable zone: 0 pages used for memmap
> DMI 2.3 present.
> ACPI: RSDP 000F6A80, 0014 (r0 ASUS  )
> ACPI: RSDT 1FFEC000, 002C (r1 ASUS   A7V133-C 30303031 MSFT 31313031)
> ACPI: FACP 1FFEC080, 0074 (r1 ASUS   A7V133-C 30303031 MSFT 31313031)
> ACPI: DSDT 1FFEC100, 2CE1 (r1   ASUS A7V133-C     1000 MSFT  100000B)
> ACPI: FACS 1FFFF000, 0040
> ACPI: BOOT 1FFEC040, 0028 (r1 ASUS   A7V133-C 30303031 MSFT 31313031)
> ACPI: PM-Timer IO Port: 0xe408
> Allocating PCI resources starting at 30000000 (gap: 20000000:dfff0000)
> PM: Registered nosave memory: 000000000009f000 - 00000000000a0000
> PM: Registered nosave memory: 00000000000a0000 - 00000000000f0000
> PM: Registered nosave memory: 00000000000f0000 - 0000000000100000
> Built 1 zonelists in Zone order, mobility grouping on.  Total pages: 130029
> Kernel command line: root=/dev/mapper/vglinux1-lv_ubuntu2 ro locale=fr_FR video=radeonfb:1280x1024@60 resume=/dev/mapper/vglinux1-lvswap
> Local APIC disabled by BIOS -- you can enable it with "lapic"
> mapped APIC to ffffb000 (01406000)
> Enabling fast FPU save and restore... done.
> Enabling unmasked SIMD FPU exception support... done.
> Initializing CPU#0
> Preemptible RCU implementation.
> CPU 0 irqstacks, hard=c03c6000 soft=c03c5000
> PID hash table entries: 2048 (order: 11, 8192 bytes)
> Detected 1410.240 MHz processor.
> Console: colour VGA+ 80x25
> console [tty0] enabled
> Lock dependency validator: Copyright (c) 2006 Red Hat, Inc., Ingo Molnar
> ... MAX_LOCKDEP_SUBCLASSES:    8
> ... MAX_LOCK_DEPTH:          30
> ... MAX_LOCKDEP_KEYS:        2048
> ... CLASSHASH_SIZE:           1024
> ... MAX_LOCKDEP_ENTRIES:     8192
> ... MAX_LOCKDEP_CHAINS:      16384
> ... CHAINHASH_SIZE:          8192
>  memory used by lock dependency info: 992 kB
>  per task-struct memory footprint: 1200 bytes
> ------------------------
> | Locking API testsuite:
> ----------------------------------------------------------------------------
>                                  | spin |wlock |rlock |mutex | wsem | rsem |
>   --------------------------------------------------------------------------
>                      A-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>                  A-B-B-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>              A-B-B-C-C-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>              A-B-C-A-B-C deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>          A-B-B-C-C-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>          A-B-C-D-B-D-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>          A-B-C-D-B-C-D-A deadlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>                     double unlock:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>                   initialize held:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>                  bad unlock order:  ok  |  ok  |  ok  |  ok  |  ok  |  ok  |
>   --------------------------------------------------------------------------
>               recursive read-lock:             |  ok  |             |  ok  |
>            recursive read-lock #2:             |  ok  |             |  ok  |
>             mixed read-write-lock:             |  ok  |             |  ok  |
>             mixed write-read-lock:             |  ok  |             |  ok  |
>   --------------------------------------------------------------------------
>      hard-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
>      soft-irqs-on + irq-safe-A/12:  ok  |  ok  |  ok  |
>      hard-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
>      soft-irqs-on + irq-safe-A/21:  ok  |  ok  |  ok  |
>        sirq-safe-A => hirqs-on/12:  ok  |  ok  |  ok  |
>        sirq-safe-A => hirqs-on/21:  ok  |  ok  |  ok  |
>          hard-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
>          soft-safe-A + irqs-on/12:  ok  |  ok  |  ok  |
>          hard-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
>          soft-safe-A + irqs-on/21:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #1/123:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #1/132:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #1/213:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #1/231:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #1/312:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #1/321:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #2/123:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #2/132:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #2/213:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #2/231:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #2/312:  ok  |  ok  |  ok  |
>     hard-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
>     soft-safe-A + unsafe-B #2/321:  ok  |  ok  |  ok  |
>       hard-irq lock-inversion/123:  ok  |  ok  |  ok  |
>       soft-irq lock-inversion/123:  ok  |  ok  |  ok  |
>       hard-irq lock-inversion/132:  ok  |  ok  |  ok  |
>       soft-irq lock-inversion/132:  ok  |  ok  |  ok  |
>       hard-irq lock-inversion/213:  ok  |  ok  |  ok  |
>       soft-irq lock-inversion/213:  ok  |  ok  |  ok  |
>       hard-irq lock-inversion/231:  ok  |  ok  |  ok  |
>       soft-irq lock-inversion/231:  ok  |  ok  |  ok  |
>       hard-irq lock-inversion/312:  ok  |  ok  |  ok  |
>       soft-irq lock-inversion/312:  ok  |  ok  |  ok  |
>       hard-irq lock-inversion/321:  ok  |  ok  |  ok  |
>       soft-irq lock-inversion/321:  ok  |  ok  |  ok  |
>       hard-irq read-recursion/123:  ok  |
>       soft-irq read-recursion/123:  ok  |
>       hard-irq read-recursion/132:  ok  |
>       soft-irq read-recursion/132:  ok  |
>       hard-irq read-recursion/213:  ok  |
>       soft-irq read-recursion/213:  ok  |
>       hard-irq read-recursion/231:  ok  |
>       soft-irq read-recursion/231:  ok  |
>       hard-irq read-recursion/312:  ok  |
>       soft-irq read-recursion/312:  ok  |
>       hard-irq read-recursion/321:  ok  |
>       soft-irq read-recursion/321:  ok  |
> -------------------------------------------------------
> Good, all 218 testcases passed! |
> ---------------------------------
> Dentry cache hash table entries: 65536 (order: 6, 262144 bytes)
> Inode-cache hash table entries: 32768 (order: 5, 131072 bytes)
> Memory: 510712k/524208k available (1723k kernel code, 12936k reserved, 895k data, 200k init, 0k highmem)
> virtual kernel memory layout:
>     fixmap  : 0xfffb5000 - 0xfffff000   ( 296 kB)
>     vmalloc : 0xe0800000 - 0xfffb3000   ( 503 MB)
>     lowmem  : 0xc0000000 - 0xdffec000   ( 511 MB)
>       .init : 0xc0390000 - 0xc03c2000   ( 200 kB)
>       .data : 0xc02aecc8 - 0xc038eca0   ( 895 kB)
>       .text : 0xc0100000 - 0xc02aecc8   (1723 kB)
> Checking if this processor honours the WP bit even in supervisor mode...Ok.
> CPA: page pool initialized 16 of 16 pages preallocated
> Calibrating delay using timer specific routine.. 2824.66 BogoMIPS (lpj=5649325)
> Mount-cache hash table entries: 512
> CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
> CPU: L2 Cache: 256K (64 bytes/line)
> Intel machine check architecture supported.
> Intel machine check reporting enabled on CPU#0.
> Compat vDSO mapped to ffffe000.
> CPU: AMD Athlon(TM) XP 1600+ stepping 02
> Checking 'hlt' instruction... OK.
> Freeing SMP alternatives: 0k freed
> ACPI: Core revision 20070126
> Parsing all Control Methods:
> Table [DSDT](id 0001) - 356 Objects with 38 Devices 115 Methods 24 Regions
>  tbxface-0598 [00] tb_load_namespace     : ACPI Tables successfully acquired
> ACPI: setting ELCR to 0200 (from 0820)
> evxfevnt-0091 [00] enable                : Transition to ACPI mode successful
> khelper used greatest stack depth: 3144 bytes left
> net_namespace: 304 bytes
> NET: Registered protocol family 16
> ACPI: bus type pci registered
> khelper used greatest stack depth: 3032 bytes left
> PCI: PCI BIOS revision 2.10 entry at 0xf1180, last bus=1
> PCI: Using configuration type 1
> Setting up standard PCI resources
> evgpeblk-0956 [00] ev_create_gpe_block   : GPE 00 to 0F [_GPE] 2 regs on int 0x9
> evgpeblk-1052 [00] ev_initialize_gpe_bloc: Found 4 Wake, Enabled 0 Runtime GPEs in this block
> ACPI: EC: Look up EC in DSDT
> ------------[ cut here ]------------
> WARNING: at arch/x86/mm/ioremap.c:129 __ioremap+0xc7/0x182()
> Modules linked in:
> Pid: 1, comm: swapper Not tainted 2.6.25-rc2-mm1 #40
>  [<c0118955>] warn_on_slowpath+0x41/0x6d
>  [<c0131d0a>] ? trace_hardirqs_on+0xb/0xd
>  [<c01fdd89>] ? acpi_os_release_object+0x8/0xc
>  [<c02188d4>] ? acpi_ut_delete_object_desc+0x39/0x3e
>  [<c0217f05>] ? acpi_ut_delete_internal_obj+0x2c1/0x2c9
>  [<c0131d0a>] ? trace_hardirqs_on+0xb/0xd
>  [<c0131cde>] ? trace_hardirqs_on_caller+0xdf/0x100
>  [<c0131d0a>] ? trace_hardirqs_on+0xb/0xd
>  [<c01129c5>] __ioremap+0xc7/0x182
>  [<c0112a99>] ioremap_nocache+0xa/0xc
>  [<c02a6877>] acpi_os_map_memory+0x11/0x1a
>  [<c020b697>] acpi_ex_system_memory_space_handler+0xd3/0x228
>  [<c0203bd8>] ? acpi_ev_address_space_dispatch+0x142/0x1a8
>  [<c020b5c4>] ? acpi_ex_system_memory_space_handler+0x0/0x228
>  [<c0203bfd>] acpi_ev_address_space_dispatch+0x167/0x1a8
>  [<c02083dd>] acpi_ex_access_region+0x1e4/0x270
>  [<c02085bc>] acpi_ex_field_datum_io+0x153/0x2a1
>  [<c0158ac0>] ? cache_alloc_debugcheck_after+0xe9/0x165
>  [<c020879b>] acpi_ex_extract_from_field+0x91/0x224
>  [<c0206bcf>] ? acpi_ex_read_data_from_field+0x163/0x1b0
>  [<c0206bec>] acpi_ex_read_data_from_field+0x180/0x1b0
>  [<c020d256>] acpi_ex_resolve_node_to_value+0x1aa/0x230
>  [<c0207a32>] acpi_ex_resolve_to_value+0x270/0x2aa
>  [<c0209e47>] acpi_ex_resolve_operands+0x24e/0x52f

Len: This WARN_ON says that ACPI is trying to call ioremap() on memory that the e820_table
lists as "kernel owned". Do you know why ACPI would do this? Would ACPI get upset if
the kernel would tell it to take a hike?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ