15 Jul, 2011

2 commits

  • __absent_pages_in_range() was needlessly complex. Reimplement it
    using for_each_mem_pfn_range().

    Also, update zone_absent_pages_in_node() such that it doesn't call
    __absent_pages_in_range() with @zone_start_pfn which is larger than
    @zone_end_pfn.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310460395-30913-3-git-send-email-tj@kernel.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • Callback based iteration is cumbersome and much less useful than
    for_each_*() iterator. This patch implements for_each_mem_pfn_range()
    which replaces work_with_active_regions(). All the current users of
    work_with_active_regions() are converted.

    This simplifies walking over early_node_map and will allow converting
    internal logics in page_alloc to use iterator instead of walking
    early_node_map directly, which in turn will enable moving node
    information to memblock.

    powerpc change is only compile tested.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/20110714074610.GD3455@htj.dyndns.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     

14 Jul, 2011

6 commits

  • memblock_find_base() is a static function with two callers in
    memblock.c and memblock_find_in_range() is a wrapper around it which
    just changes the types and order of parameters.

    Make memblock_find_in_range() take phys_addr_t instead of u64 for
    consistency and replace memblock_find_base() with it.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310457490-3356-7-git-send-email-tj@kernel.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • 25818f0f28 (memblock: Make MEMBLOCK_ERROR be 0) thankfully made
    MEMBLOCK_ERROR 0 and there already are codes which expect error return
    to be 0. There's no point in keeping MEMBLOCK_ERROR around. End its
    misery.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310457490-3356-6-git-send-email-tj@kernel.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310457490-3356-5-git-send-email-tj@kernel.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • After node affine allocation fails, memblock_alloc_try_nid() calls
    memblock_alloc_base() with @max_addr set to MEMBLOCK_ALLOC_ANYWHERE.
    This is inconsistent with memblock_alloc() and what the function's
    sole user - sparc/mm/init_64 - expects, although it doesn't make any
    difference as sparc64 doesn't have highmem and ACCESSIBLE equals
    ANYWHERE.

    This patch makes memblock_alloc_try_nid() use ACCESSIBLE instead of
    ANYWHERE. This isn't complete as node affine allocation doesn't
    consider memblock.current_limit. It will be handled with future
    changes.

    This patch doesn't introduce any behavior difference.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310457490-3356-4-git-send-email-tj@kernel.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • a226f6c899 (FRV: Clean up bootmem allocator's page freeing algorithm)
    separated out __free_pages_bootmem() from free_all_bootmem_core().
    __free_pages_bootmem() takes @order argument but it assumes @order is
    either 0 or ilog2(BITS_PER_LONG). Note that all the current users
    match that assumption and this doesn't cause actual problems.

    Fix it by using 1 << order instead of BITS_PER_LONG.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310457490-3356-3-git-send-email-tj@kernel.org
    Cc: David Howells
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • The return value of memblock_x86_check_reserved_size() doesn't
    indicate whether there's an overlapping reservatoin or not. It
    indicates whether the caller needs to iterate further to discover all
    reserved portions of the specified area.

    efi_reserve_boot_esrvices() wants to check whether the boot services
    area overlaps with other reservations but incorrectly used
    membloc_x86_check_reserved_size(). Use memblock_is_region_reserved()
    instead.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/1310457490-3356-2-git-send-email-tj@kernel.org
    Cc: Yinghai Lu
    Cc: Benjamin Herrenschmidt
    Cc: Thomas Gleixner
    Cc: Ingo Molnar
    Cc: "H. Peter Anvin"
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     

13 Jul, 2011

2 commits

  • SPARSEMEM w/o VMEMMAP and DISCONTIGMEM, both used only on 32bit, use
    sections array to map pfn to nid which is limited in granularity. If
    NUMA nodes are laid out such that the mapping cannot be accurate, boot
    will fail triggering BUG_ON() in mminit_verify_page_links().

    On 32bit, it's 512MiB w/ PAE and SPARSEMEM. This seems to have been
    granular enough until commit 2706a0bf7b (x86, NUMA: Enable
    CONFIG_AMD_NUMA on 32bit too). Apparently, there is a machine which
    aligns NUMA nodes to 128MiB and has only AMD NUMA but not SRAT. This
    led to the following BUG_ON().

    On node 0 totalpages: 2096615
    DMA zone: 32 pages used for memmap
    DMA zone: 0 pages reserved
    DMA zone: 3927 pages, LIFO batch:0
    Normal zone: 1740 pages used for memmap
    Normal zone: 220978 pages, LIFO batch:31
    HighMem zone: 16405 pages used for memmap
    HighMem zone: 1853533 pages, LIFO batch:31
    BUG: Int 6: CR2 (null)
    EDI (null) ESI 00000002 EBP 00000002 ESP c1543ecc
    EBX f2400000 EDX 00000006 ECX (null) EAX 00000001
    err (null) EIP c16209aa CS 00000060 flg 00010002
    Stack: f2400000 00220000 f7200800 c1620613 00220000 01000000 04400000 00238000
    (null) f7200000 00000002 f7200b58 f7200800 c1620929 000375fe (null)
    f7200b80 c16395f0 00200a02 f7200a80 (null) 000375fe 00000002 (null)
    Pid: 0, comm: swapper Not tainted 2.6.39-rc5-00181-g2706a0b #17
    Call Trace:
    [] ? early_fault+0x2e/0x2e
    [] ? mminit_verify_page_links+0x12/0x42
    [] ? memmap_init_zone+0xaf/0x10c
    [] ? free_area_init_node+0x2b9/0x2e3
    [] ? free_area_init_nodes+0x3f2/0x451
    [] ? paging_init+0x112/0x118
    [] ? setup_arch+0x791/0x82f
    [] ? start_kernel+0x6a/0x257

    This patch implements node_map_pfn_alignment() which determines
    maximum internode alignment and update numa_register_memblks() to
    reject NUMA configuration if alignment exceeds the pfn -> nid mapping
    granularity of the memory model as determined by PAGES_PER_SECTION.

    This makes the problematic machine boot w/ flatmem by rejecting the
    NUMA config and provides protection against crazy NUMA configurations.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/20110712074534.GB2872@htj.dyndns.org
    LKML-Reference:
    Reported-and-Tested-by: Hans Rosenfeld
    Cc: Conny Seidel
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     
  • DISCONTIGMEM on x86-32 implements pfn -> nid mapping similarly to
    SPARSEMEM; however, it calls each mapping unit ELEMENT instead of
    SECTION. This patch renames it to SECTION so that PAGES_PER_SECTION
    is valid for both DISCONTIGMEM and SPARSEMEM. This will be used by
    the next patch to implement mapping granularity check.

    This patch is trivial constant rename.

    Signed-off-by: Tejun Heo
    Link: http://lkml.kernel.org/r/20110712074422.GA2872@htj.dyndns.org
    Cc: Hans Rosenfeld
    Signed-off-by: H. Peter Anvin

    Tejun Heo
     

12 Jul, 2011

11 commits


11 Jul, 2011

6 commits

  • [ 191.310008] WARNING: kmemcheck: Caught 32-bit read from freed memory (f0d25f14)
    [ 191.310011] c056d2f088000000105fd2f00000000050415353040000000000000000000000
    [ 191.310020] i i i i f f f f f f f f f f f f f f f f f f f f f f f f f f f f
    [ 191.310027] ^
    [ 191.310029]
    [ 191.310032] Pid: 737, comm: modprobe Not tainted 3.0.0-rc5+ #268 Hewlett-Packard HP Compaq 6005 Pro SFF PC/3047h
    [ 191.310036] EIP: 0060:[] EFLAGS: 00010286 CPU: 0
    [ 191.310039] EIP is at hp_wmi_perform_query+0x104/0x150 [hp_wmi]
    [ 191.310041] EAX: f0d25601 EBX: f0d25f00 ECX: 000121cf EDX: 000121ce
    [ 191.310043] ESI: f0d25f10 EDI: f0f97ea8 EBP: f0f97ec4 ESP: c173f34c
    [ 191.310045] DS: 007b ES: 007b FS: 00d8 GS: 0033 SS: 0068
    [ 191.310046] CR0: 8005003b CR2: f540c000 CR3: 30f30000 CR4: 000006d0
    [ 191.310048] DR0: 00000000 DR1: 00000000 DR2: 00000000 DR3: 00000000
    [ 191.310050] DR6: ffff4ff0 DR7: 00000400
    [ 191.310051] [] hp_wmi_dock_state+0x2b/0x40 [hp_wmi]
    [ 191.310054] [] hp_wmi_init+0x93/0x1a8 [hp_wmi]
    [ 191.310057] [] do_one_initcall+0x30/0x170
    [ 191.310061] [] sys_init_module+0xef/0x1a60
    [ 191.310064] [] sysenter_do_call+0x12/0x28
    [ 191.310067] [] 0xffffffff

    Signed-off-by: Eric Dumazet
    Signed-off-by: Matthew Garrett

    Eric Dumazet
     
  • Using buffer->output[1] without mutex_lock()

    Signed-off-by: Jose Alonso
    Signed-off-by: Matthew Garrett

    Jose Alonso
     
  • This reverts commit a3d77411e8b2ad661958c1fbee65beb476ec6d70,

    as it causes a mess in the wireless rfkill status on some models.
    It is probably a bad idea to toggle the rfkill for all dell models
    without the respect to the claim that it is hardware-controlled.

    Cc: stable@kernel.org
    Signed-off-by: Keng-Yu Lin
    Signed-off-by: Matthew Garrett

    Keng-Yu Lin
     
  • Patch 2e711c04dbbf7a7732a3f7073b1fc285d12b369d
    (PM: Remove sysdev suspend, resume and shutdown operations)
    deleted sysdev_suspend(), which was being relied on to call
    check_wakeup_irqs() in suspend. If check_wakeup_irqs() is not
    called, wake interrupts that are pending when suspend is
    entered may be lost. It also breaks IRQCHIP_MASK_ON_SUSPEND,
    which is handled in check_wakeup_irqs().

    This patch adds a call to check_wakeup_irqs() in syscore_suspend(),
    similar to what was deleted in sysdev_suspend().

    Signed-off-by: Colin Cross
    Signed-off-by: Rafael J. Wysocki

    Colin Cross
     
  • I came across a memory leak during a cyclic cpu-online-offline test.

    Signed-off-by: Yu Luming
    Cc: Len Brown
    Signed-off-by: Andrew Morton
    Signed-off-by: Dave Jones

    Luming Yu
     
  • * 'hwmon-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/staging:
    hwmon: (pmbus) Improve auto-detection of temperature status register
    hwmon: (lm95241) Fix negative temperature results
    hwmon: (lm95241) Fix chip detection code

    Linus Torvalds
     

10 Jul, 2011

9 commits

  • It is possible that a PMBus device supports the READ_TEMPERATURE2 and/or
    READ_TEMPERATURE3 registers but does not support READ_TEMPERATURE1.
    Improve temperature status register detection to address this condition.

    Reported-by: Jean Delvare
    Signed-off-by: Guenter Roeck
    Acked-by: Jean Delvare
    Cc: stable@kernel.org # 2.6.39+

    Guenter Roeck
     
  • Negative temperatures were returned in degrees C instead of milli-Degrees C.
    Also, negative temperatures were reported for remote temperature sensors even
    if the chip was configured for positive-only results.

    Fix by detecting temperature modes, and by treating negative temperatures
    similar to positive temperatures, with appropriate sign extension.

    Signed-off-by: Guenter Roeck
    Acked-by: Jean Delvare
    Cc: stable@kernel.org # 2.6.30+

    Guenter Roeck
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: hda - Fix a copmile warning
    ASoC: ak4642: fixup snd_soc_update_bits mask for PW_MGMT2
    ALSA: hda - Change all ADCs for dual-adc switching mode for Realtek
    ASoC: Manage WM8731 ACTIVE bit as a supply widget
    ASoC: Don't set invalid name string to snd_card->driver field
    ASoC: Ensure we delay long enough for WM8994 FLL to lock when starting
    ASoC: Tegra: I2S: Ensure clock is enabled when writing regs
    ASoC: Fix Blackfin I2S _pointer() implementation return in bounds values
    ASoC: tlv320aic3x: Do soft reset to codec when going to bias off state
    ASoC: tlv320aic3x: Don't sync first two registers from register cache
    audio: tlv320aic26: fix PLL register configuration

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6:
    PCI: conditional resource-reallocation through kernel parameter pci=realloc

    Linus Torvalds
     
  • * 'fixes' of master.kernel.org:/home/rmk/linux-2.6-arm:
    ARM: 6994/1: smp_twd: Fix typo in 'twd_timer_rate' printing
    ARM: 6987/1: l2x0: fix disabling function to avoid deadlock
    ARM: 6966/1: ep93xx: fix inverted RTS/DTR signals on uart1
    ARM: 6980/1: mmci: use StartBitErr to detect bad connections
    ARM: 6979/1: mach-vt8500: add forgotten irq_data conversion
    ARM: move memory layout sanity checking before meminfo initialization
    ARM: 6990/1: MAINTAINERS: add entry for ARM PMU profiling and debugging
    ARM: 6989/1: perf: do not start the PMU when no events are present
    ARM: dmabounce: fix map_single() error return value

    Linus Torvalds
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm/radeon/kms: clean up multiple crtc handling for evergreen+ (v2)

    Linus Torvalds
     
  • When firewire-ohci is bound to a Pinnacle MovieBoard, eventually a
    "Register access failure" is logged and an interrupt storm or a kernel
    panic happens. https://bugzilla.kernel.org/show_bug.cgi?id=36622

    Until this is sorted out (if that is going to succeed at all), let's
    just prevent firewire-ohci from touching these devices.

    Signed-off-by: Stefan Richter
    Cc:

    Stefan Richter
     
  • Regression introduced in commit 724d9f1cfba.

    Prior to that, expand_dfs_referral would regenerate the mount data string
    and then call cifs_parse_mount_options to re-parse it (klunky, but it
    worked). The above commit moved cifs_parse_mount_options out of cifs_mount,
    so the re-parsing of the new mount options no longer occurred. Fix it by
    making expand_dfs_referral re-parse the mount options.

    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     
  • This needs to be done regardless of whether that KConfig option is set
    or not.

    Reported-by: Sven-Haegar Koch
    Signed-off-by: Jeff Layton
    Signed-off-by: Steve French

    Jeff Layton
     

09 Jul, 2011

4 commits