[arch] WARNING: CPU: 0 PID: 0 at kernel/memremap.c:31 memremap()

Dan Williams dan.j.williams at intel.com
Wed Jul 22 16:56:41 PDT 2015


[ note: this patch is in a dev branch for test coverage, safe to
disregard for now ]

On Wed, Jul 22, 2015 at 4:32 PM, kernel test robot
<fengguang.wu at intel.com> wrote:
> Greetings,
>
> 0day kernel testing robot got the below dmesg and the first bad commit is
>
> git://git.kernel.org/pub/scm/linux/kernel/git/djbw/nvdimm.git pmem-api
>
> commit 163f9409a57082aed03fbeeb321fbf18bdaf5f42
> Author:     Dan Williams <dan.j.williams at intel.com>
> AuthorDate: Wed Jul 22 18:09:01 2015 -0400
> Commit:     Dan Williams <dan.j.williams at intel.com>
> CommitDate: Wed Jul 22 18:09:01 2015 -0400
>
>     arch: introduce memremap(), replace ioremap_cache()
>
>     Existing users of ioremap_cache() are mapping memory that is known in
>     advance to not have i/o side effects.  These users are forced to cast
>     away the __iomem annotation, or otherwise neglect to fix the sparse
>     errors thrown when dereferencing pointers to this memory.  Provide
>     memremap() as a non __iomem annotated ioremap_*() in the case when
>     ioremap is otherwise a pointer to memory.
>
>     The ARCH_HAS_MEMREMAP kconfig symbol is introduced for archs to assert
>     that it is safe to recast / reuse the return value from ioremap as a
>     normal pointer to memory.  In other words, archs that mandate specific
>     accessors for __iomem are not memremap() capable and drivers that care,
>     like pmem, can add a dependency to disable themselves on these archs.
>
>     Note, that memremap is a break from the ioremap implementation pattern
>     of adding a new memremap_<type>() for each mapping type.  Instead,
>     the implementation defines flags that are passed to the central
>     memremap() implementation.
>
>     Outside of ioremap() and ioremap_nocache(), the expectation is that most
>     calls to ioremap_<type>() are seeking memory-like semantics (e.g.
>     speculative reads, and prefetching permitted).  These callsites can be
>     moved to memremap() over time.
>
>     Cc: Arnd Bergmann <arnd at arndb.de>
>     Acked-by: Andy Shevchenko <andy.shevchenko at gmail.com>
>     Signed-off-by: Dan Williams <dan.j.williams at intel.com>
>
> +------------------------------------------------+------------+------------+------------+
> |                                                | dc5d38e432 | 163f9409a5 | 5dfe2d5864 |
> +------------------------------------------------+------------+------------+------------+
> | boot_successes                                 | 63         | 0          | 0          |
> | boot_failures                                  | 0          | 26         | 19         |
> | WARNING:at_kernel/memremap.c:#memremap()       | 0          | 26         | 19         |
> | backtrace:acpi_load_tables                     | 0          | 26         | 19         |
> | backtrace:acpi_early_init                      | 0          | 26         | 19         |
> | IP-Config:Auto-configuration_of_network_failed | 0          | 0          | 2          |
> +------------------------------------------------+------------+------------+------------+
>
> [    0.227312] ACPI: Core revision 20150619
> [    0.227690] memremap: acpi_os_map_iomem
> [    0.228021] ------------[ cut here ]------------
> [    0.228406] WARNING: CPU: 0 PID: 0 at kernel/memremap.c:31 memremap+0x73/0x159()
> [    0.229202] memremap attempted on unknown/mixed range 0x000000000ffe0000 size: 4096
> [    0.229829] Modules linked in:
> [    0.230106] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.2.0-rc3-00007-g163f940 #1
> [    0.230718]  00000000 00000000 c175bf04 c1489068 c175bf30 c175bf20 c103a1ae 0000001f
> [    0.231456]  c10f6407 00001000 00000001 00000001 c175bf38 c103a1f0 00000009 c175bf30
> [    0.232242]  c16b3ecb c175bf4c c175bf68 c10f6407 c16b3f04 0000001f c16b3ecb c175bf54
> [    0.232985] Call Trace:
> [    0.233196]  [<c1489068>] dump_stack+0x48/0x60
> [    0.233570]  [<c103a1ae>] warn_slowpath_common+0x89/0xa0
> [    0.234016]  [<c10f6407>] ? memremap+0x73/0x159
> [    0.234396]  [<c103a1f0>] warn_slowpath_fmt+0x2b/0x2f
> [    0.234816]  [<c10f6407>] memremap+0x73/0x159
> [    0.235190]  [<c1486181>] acpi_os_map_iomem+0x10b/0x15f
> [    0.235660]  [<c14861e2>] acpi_os_map_memory+0xd/0xf
> [    0.236089]  [<c1293d5c>] acpi_tb_acquire_table+0x35/0x5a
> [    0.236538]  [<c1293e41>] acpi_tb_validate_table+0x22/0x37
> [    0.237001]  [<c1841255>] acpi_load_tables+0x38/0x146
> [    0.237424]  [<c184080e>] acpi_early_init+0x64/0xd4
> [    0.237830]  [<c1817b14>] start_kernel+0x3e1/0x447
> [    0.238232]  [<c18172bb>] i386_start_kernel+0x85/0x89
> [    0.238734] ---[ end trace cb88537fdc8fa200 ]---
> [    0.239133] ACPI Exception: AE_NO_ACPI_TABLES, While loading namespace from ACPI tables (20150619/tbxfload-80)
>
> git bisect start 5dfe2d5864e91244e7befaa2317519ea15dc9c89 52721d9d3334c1cb1f76219a161084094ec634dc --
> git bisect good cfc652fabeee43adf800889a5a4a935a9af090a7  # 07:04     20+      0  arch, drivers: don't include <asm/io.h> directly, use <linux/io.h> instead
> git bisect good dc5d38e432ff171125f746d80a037692feb16fc9  # 07:11     22+      0  intel_iommu: fix leaked ioremap mapping
> git bisect  bad 163f9409a57082aed03fbeeb321fbf18bdaf5f42  # 07:17      0-     22  arch: introduce memremap(), replace ioremap_cache()
> # first bad commit: [163f9409a57082aed03fbeeb321fbf18bdaf5f42] arch: introduce memremap(), replace ioremap_cache()
> git bisect good dc5d38e432ff171125f746d80a037692feb16fc9  # 07:19     63+      0  intel_iommu: fix leaked ioremap mapping
> # extra tests with DEBUG_INFO
> git bisect  bad 163f9409a57082aed03fbeeb321fbf18bdaf5f42  # 07:24      0-     29  arch: introduce memremap(), replace ioremap_cache()
> # extra tests on HEAD of nvdimm/pmem-api
> git bisect  bad 5dfe2d5864e91244e7befaa2317519ea15dc9c89  # 07:24      0-     19  pmem: convert to generic memremap
> # extra tests on tree/branch nvdimm/pmem-api
> git bisect  bad 5dfe2d5864e91244e7befaa2317519ea15dc9c89  # 07:24      0-     19  pmem: convert to generic memremap
> # extra tests on tree/branch linus/master
> git bisect good 5a5ca73ac0a73c876b62858f0753a25ee430e370  # 07:26     66+      2  Merge tag 'arm64-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm64/linux
> # extra tests on tree/branch linux-next/master
> git bisect good 72a68fd733c8b6cd2e0ebc0586a9103067cd4ed7  # 07:29     65+      0  Add linux-next specific files for 20150722
>
>
> This script may reproduce the error.
>
> ----------------------------------------------------------------------------
> #!/bin/bash
>
> kernel=$1
> initrd=yocto-minimal-i386.cgz
>
> wget --no-clobber https://github.com/fengguang/reproduce-kernel-bug/raw/master/initrd/$initrd
>
> kvm=(
>         qemu-system-x86_64
>         -enable-kvm
>         -cpu Haswell,+smep,+smap
>         -kernel $kernel
>         -initrd $initrd
>         -m 256
>         -smp 1
>         -device e1000,netdev=net0
>         -netdev user,id=net0
>         -boot order=nc
>         -no-reboot
>         -watchdog i6300esb
>         -rtc base=localtime
>         -serial stdio
>         -display none
>         -monitor null
> )
>
> append=(
>         hung_task_panic=1
>         earlyprintk=ttyS0,115200
>         systemd.log_level=err
>         debug
>         apic=debug
>         sysrq_always_enabled
>         rcupdate.rcu_cpu_stall_timeout=100
>         panic=-1
>         softlockup_panic=1
>         nmi_watchdog=panic
>         oops=panic
>         load_ramdisk=2
>         prompt_ramdisk=0
>         console=ttyS0,115200
>         console=tty0
>         vga=normal
>         root=/dev/ram0
>         rw
>         drbd.minor_count=8
> )
>
> "${kvm[@]}" --append "${append[*]}"
> ----------------------------------------------------------------------------
>
> ---
> 0-DAY kernel test infrastructure                Open Source Technology Center
> https://lists.01.org/pipermail/lkp                          Intel Corporation



More information about the linux-arm-kernel mailing list