1. 14 12月, 2012 13 次提交
    • J
      72d5f2da
    • X
      [libata] fix Null pointer dereference on disk error · 26cd4d65
      Xiaotian Feng 提交于
      Following oops were observed when disk error happened:
      
      [ 4272.896937] sd 0:0:0:0: [sda] Unhandled error code
      [ 4272.896939] sd 0:0:0:0: [sda] Result: hostbyte=DID_BAD_TARGET driverbyte=DRIVER_OK
      [ 4272.896942] sd 0:0:0:0: [sda] CDB: Read(10): 28 00 00 5a de a7 00 00 08 00
      [ 4272.896951] end_request: I/O error, dev sda, sector 5955239
      [ 4291.574947] BUG: unable to handle kernel NULL pointer dereference at (null)
      [ 4291.658305] IP: [] ahci_activity_show+0x1/0x40
      [ 4291.730090] PGD 76dbbc067 PUD 6c4fba067 PMD 0
      [ 4291.783408] Oops: 0000 [#1] SMP
      [ 4291.822100] last sysfs file: /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/sw_activity
      [ 4291.934235] CPU 9
      [ 4291.958301] Pid: 27942, comm: hwinfo ......
      
      ata_scsi_find_dev could return NULL, so ata_scsi_activity_{show,store} should check if atadev is NULL.
      Signed-off-by: NXiaotian Feng <dannyfeng@tencent.com>
      Cc: James Bottomley <JBottomley@Parallels.com>
      Cc: stable@kernel.org
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      26cd4d65
    • W
      ahci: convert ata_link_printk() to ata_link_warn() · 39f80acb
      Wei Yongjun 提交于
      Using ata_link_warn() instead of ata_link_printk().
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      39f80acb
    • W
      pata_imx: convert ata_dev_printk() to ata_dev_info() · 22c8be31
      Wei Yongjun 提交于
      Using ata_dev_info() instead of ata_dev_printk().
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      22c8be31
    • W
      ARM: ep93xx: convert ata_<foo>_printk() to ata_<foo>_<level>() · 99da09fc
      Wei Yongjun 提交于
      Using ata_<foo>_<level>() instead of ata_<foo>_printk().
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      99da09fc
    • B
      ahci_platform: make structs static · 071d3ad3
      Brian Norris 提交于
      These structs are used only for ahci_platform.c, so they should be
      static. Thanks to Fengguang for the (automated) suggestion.
      Signed-off-by: NBrian Norris <computersforpeace@gmail.com>
      Cc: Fengguang Wu <fengguang.wu@intel.com>
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      071d3ad3
    • J
      Revert "pata_octeon_cf: perform host detach, removal on exit" · 11ace0c1
      Jeff Garzik 提交于
      This reverts commit 1645bf1b.
      
      Brian Norris writes:
        > David Daney writes:
      
        > I can seem to find it.  Without knowing what that does, I would be inclined
        > to NACK the whole thing.
      
        A NACK is probably the right thing. I was mostly converting a few
        other drivers which used some simple, common patterns to use my new
        common code, but this driver was missing it altogether. It looks like
        there may be bigger issues, though, as you point out.
      
        > This patch is likely to be incomplete as the driver is also missing the
        > module_exit() things.
        >
        > It might be simpler to just make the driver "bool" instead of "tristate" in
        > the Kconfig.
      
        As noted earlier, I don't have much interest in this driver. I agree
        that there are some other issues with the driver; I think it leaks
        memory if it is ever allowed to unload, for one. Feel free to submit
        an alternative patch to prevent this driver from being built as a
        module.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      11ace0c1
    • J
      Revert "libata: check SATA_SETTINGS log with HW Feature Ctrl" · 8349e5ae
      Jeff Garzik 提交于
      This reverts commit de90cd71.
      
      Shane Huang writes:
      
        Please suspend this patch because I just received two new
        DevSlp drives but found word 78 bit 5 is _not_ set.
      
        I'm checking with the drive vendor whether he gave me
        the wrong information. If bit 5 is not the necessary and
        sufficient condition, I will implement another patch to
        replace ata_device->sata_settings into ->devslp_timing.
      Signed-off-by: NJeff Garzik <jgarzik@redhat.com>
      8349e5ae
    • E
      tuntap: dont use skb after netif_rx_ni(skb) · 49974420
      Eric Dumazet 提交于
      On Wed, 2012-12-12 at 23:16 -0500, Dave Jones wrote:
      > Since todays net merge, I see this when I start openvpn..
      >
      > general protection fault: 0000 [#1] PREEMPT SMP
      > Modules linked in: ip6t_REJECT nf_conntrack_ipv6 nf_defrag_ipv6 xt_conntrack nf_conntrack ip6table_filter ip6_tables xfs iTCO_wdt iTCO_vendor_support snd_emu10k1 snd_util_mem snd_ac97_codec coretemp ac97_bus microcode snd_hwdep snd_seq pcspkr snd_pcm snd_page_alloc snd_timer lpc_ich i2c_i801 snd_rawmidi mfd_core snd_seq_device snd e1000e soundcore emu10k1_gp gameport i82975x_edac edac_core vhost_net tun macvtap macvlan kvm_intel kvm binfmt_misc nfsd auth_rpcgss nfs_acl lockd sunrpc btrfs libcrc32c zlib_deflate firewire_ohci sata_sil firewire_core crc_itu_t radeon i2c_algo_bit drm_kms_helper ttm drm i2c_core floppy
      > CPU 0
      > Pid: 1381, comm: openvpn Not tainted 3.7.0+ #14                  /D975XBX
      > RIP: 0010:[<ffffffff815b54a4>]  [<ffffffff815b54a4>] skb_flow_dissect+0x314/0x3e0
      > RSP: 0018:ffff88007d0d9c48  EFLAGS: 00010206
      > RAX: 000000000000055d RBX: 6b6b6b6b6b6b6b4b RCX: 1471030a0180040a
      > RDX: 0000000000000005 RSI: 00000000ffffffe0 RDI: ffff8800ba83fa80
      > RBP: ffff88007d0d9cb8 R08: 0000000000000000 R09: 0000000000000000
      > R10: 0000000000000000 R11: 0000000000000101 R12: ffff8800ba83fa80
      > R13: 0000000000000008 R14: ffff88007d0d9cc8 R15: ffff8800ba83fa80
      > FS:  00007f6637104800(0000) GS:ffff8800bf600000(0000) knlGS:0000000000000000
      > CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      > CR2: 00007f563f5b01c4 CR3: 000000007d140000 CR4: 00000000000007f0
      > DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      > DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      > Process openvpn (pid: 1381, threadinfo ffff88007d0d8000, task ffff8800a540cd60)
      > Stack:
      >  ffff8800ba83fa80 0000000000000296 0000000000000000 0000000000000000
      >  ffff88007d0d9cc8 ffffffff815bcff4 ffff88007d0d9ce8 ffffffff815b1831
      >  ffff88007d0d9ca8 00000000703f6364 ffff8800ba83fa80 0000000000000000
      > Call Trace:
      >  [<ffffffff815bcff4>] ? netif_rx+0x114/0x4c0
      >  [<ffffffff815b1831>] ? skb_copy_datagram_from_iovec+0x61/0x290
      >  [<ffffffff815b672a>] __skb_get_rxhash+0x1a/0xd0
      >  [<ffffffffa03b9538>] tun_get_user+0x418/0x810 [tun]
      >  [<ffffffff8135f468>] ? delay_tsc+0x98/0xf0
      >  [<ffffffff8109605c>] ? __rcu_read_unlock+0x5c/0xa0
      >  [<ffffffffa03b9a41>] tun_chr_aio_write+0x81/0xb0 [tun]
      >  [<ffffffff81145011>] ? __buffer_unlock_commit+0x41/0x50
      >  [<ffffffff811db917>] do_sync_write+0xa7/0xe0
      >  [<ffffffff811dc01f>] vfs_write+0xaf/0x190
      >  [<ffffffff811dc375>] sys_write+0x55/0xa0
      >  [<ffffffff81705540>] tracesys+0xdd/0xe2
      > Code: 41 8b 44 24 68 41 2b 44 24 6c 01 de 29 f0 83 f8 03 0f 8e a0 00 00 00 48 63 de 49 03 9c 24 e0 00 00 00 48 85 db 0f 84 72 fe ff ff <8b> 03 41 89 46 08 b8 01 00 00 00 e9 43 fd ff ff 0f 1f 40 00 48
      > RIP  [<ffffffff815b54a4>] skb_flow_dissect+0x314/0x3e0
      >  RSP <ffff88007d0d9c48>
      > ---[ end trace 6d42c834c72c002e ]---
      >
      >
      > Faulting instruction is
      >
      >    0:	8b 03                	mov    (%rbx),%eax
      >
      > rbx is slab poison (-20) so this looks like a use-after-free here...
      >
      >                         flow->ports = *ports;
      >  314:   8b 03                   mov    (%rbx),%eax
      >  316:   41 89 46 08             mov    %eax,0x8(%r14)
      >
      > in the inlined skb_header_pointer in skb_flow_dissect
      >
      > 	Dave
      >
      
      commit 96442e42 (tuntap: choose the txq based on rxq) added
      a use after free.
      
      Cache rxhash in a temp variable before calling netif_rx_ni()
      Reported-by: NDave Jones <davej@redhat.com>
      Signed-off-by: NEric Dumazet <edumazet@google.com>
      Cc: Jason Wang <jasowang@redhat.com>
      Acked-by: NJason Wang <jasowang@redhat.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      49974420
    • T
      VIDEO: Newport Fix console crashes · fa4dbbc6
      Thomas Bogendoerfer 提交于
      Because of commit e84de0c6 [MIPS: GIO bus
      support for SGI IP22/28] newport con is now taking over console from
      dummy con, therefore it's necessary to resize the VC to the correct size
      to avoid crashes and garbage on console
      Signed-off-by: NThomas Bogendoerfer <tsbogend@alpha.franken.de>
      Cc: linux-mips@linux-mips.org
      Cc: linux-fbdev@vger.kernel.org
      Cc: FlorianSchandinat@gmx.de
      Patchwork: https://patchwork.linux-mips.org/patch/4138/Acked-by: NFlorian Tobias Schandinat <FlorianSchandinat@gmx.de>
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      fa4dbbc6
    • D
      MIPS/EDAC: Improve OCTEON EDAC support. · e1ced097
      David Daney 提交于
      Some initialization errors are reported with the existing OCTEON EDAC
      support patch.  Also some parts have more than one memory controller.
      
      Fix the errors and add multiple controllers if present.
      Signed-off-by: NDavid Daney <david.daney@cavium.com>
      e1ced097
    • D
      ata: pata_octeon_cf: Use correct byte order for DMA in when built little-endian. · 1007c4bc
      David Daney 提交于
      We need to set the 'endian' bit in this case.
      Acked-by: NJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: NDavid Daney <david.daney@cavium.com>
      1007c4bc
    • D
      MIPS/OCTEON/ata: Convert pata_octeon_cf.c to use device tree. · 43f01da0
      David Daney 提交于
      The patch needs to eliminate the definition of OCTEON_IRQ_BOOTDMA so
      that the device tree code can map the interrupt, so in order to not
      temporarily break things, we do a single patch to both the interrupt
      registration code and the pata_octeon_cf driver.
      
      Also rolled in is a conversion to use hrtimers and corrections to the
      timing calculations.
      Acked-by: NJeff Garzik <jgarzik@redhat.com>
      Signed-off-by: NDavid Daney <david.daney@cavium.com>
      43f01da0
  2. 13 12月, 2012 10 次提交
  3. 12 12月, 2012 17 次提交
    • A
      Revert "HID: sensors: add to special driver list" · 68fd32b8
      Alexander Holler 提交于
      Those IDs aren't necessary anymore.
      
      This reverts commit c8147d9e.
      Signed-off-by: NAlexander Holler <holler@ahsoftware.de>
      Acked-by: N"Pandruvada, Srinivas" <srinivas.pandruvada@intel.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      68fd32b8
    • A
      HID: sensors: autodetect USB HID sensor hubs · 83499b52
      Alexander Holler 提交于
      It should not be necessary to add IDs for HID sensor hubs to lists in
      hid-core.c and hid-sensor-hub.c. So instead of a whitelist, autodetect such USB
      HID sensor hubs, based on a collection of type physical inside a useage page of
      type sensor. If some sensor hubs stil must be usable as raw devices, a
      blacklist might be created.
      Signed-off-by: NAlexander Holler <holler@ahsoftware.de>
      Acked-by: N"Pandruvada, Srinivas" <srinivas.pandruvada@intel.com>
      Signed-off-by: NJiri Kosina <jkosina@suse.cz>
      83499b52
    • R
      MIPS: Cavium: Add EDAC support. · f65aad41
      Ralf Baechle 提交于
      Drivers for EDAC on Cavium.  Supported subsystems are:
      
       o CPU primary caches.  These are parity protected only, so only error
         reporting.
       o Second level cache - ECC protected, provides SECDED.
       o Memory: ECC / SECDEC if used with suitable DRAM modules.  The driver will
         will only initialize if ECC is enabled on a system so is safe to run on
         non-ECC memory.
       o PCI: Parity error reporting
      
      Since it is very hard to test this sort of code the implementation is very
      conservative and uses polling where possible for now.
      Signed-off-by: NRalf Baechle <ralf@linux-mips.org>
      Reviewed-by: NBorislav Petkov <borislav.petkov@amd.com>
      f65aad41
    • T
      OMAPDSS: DISPC: remove dispc fck uses · 8105c94b
      Tomi Valkeinen 提交于
      The previous patch changes dispc to get the dispc fck rate from dss core
      driver. This was the only use of the dispc fck in dispc, and thus we can
      now remove the clock handling.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      8105c94b
    • T
      OMAPDSS: DISPC: get dss clock rate from dss driver · 5aaee69d
      Tomi Valkeinen 提交于
      Dispc currently gets dispc's fck with clk_get() and uses clk_get_rate()
      to get the rate for scaling calculations. This causes a problem with
      common clock framework, as omapdss uses the dispc functions inside a
      spinlock, and common clock framework uses a mutex in clk_get_rate().
      
      Looking at the DSS clock tree, the above use of the dispc fck is not
      quite correct. The DSS_FCLK from PRCM goes to DSS core block, which has
      a mux to select the clock for DISPC from various options, so the current
      use of dispc fck bypasses that. Fortunately we never change the dispc
      clock mux for now.
      
      To fix the issue with clk_get_rate(), this patch caches the dss clock
      rate in dss.c when it is set. Dispc will then ask for the clock rate
      from dss. While this is not very elegant, it does fix the issue, and
      it's not totally wrong when considering that the dispc fck actually
      comes via dss.
      
      In the future we should probably look into common clock framework and
      see if that could be used to represent the DSS clock tree properly.
      Signed-off-by: NTomi Valkeinen <tomi.valkeinen@ti.com>
      5aaee69d
    • Z
      Thermal: Fix DEFAULT_THERMAL_GOVERNOR · 1f53ef17
      Zhang Rui 提交于
      Fix DEFAULT_THERMAL_GOVERNOR to be consistant with the
      default governor selected in kernel config file.
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      1f53ef17
    • Z
      Thermal: fix a NULL pointer dereference when generic thermal layer is built as a module · d567c686
      Zhang Rui 提交于
      [   12.761956] BUG: unable to handle kernel NULL pointer dereference at 0000000000000018
      [   12.762016] IP: [<ffffffffa0005277>] handle_thermal_trip+0x47/0x130 [thermal_sys]
      [   12.762060] PGD 1fec74067 PUD 1fee5b067 PMD 0
      [   12.762127] Oops: 0000 [#1] SMP
      [   12.762177] Modules linked in: hid_generic crc32c_intel usbhid hid firewire_ohci(+) e1000e(+) firewire_core crc_itu_t xhci_hcd(+) thermal(+) fan thermal_sys hwmon
      [   12.762423] CPU 1
      [   12.762443] Pid: 187, comm: modprobe Tainted: G       A     3.7.0-thermal-module+ #25                  /DH77DF
      [   12.762496] RIP: 0010:[<ffffffffa0005277>]  [<ffffffffa0005277>] handle_thermal_trip+0x47/0x130 [thermal_sys]
      [   12.762682] RSP: 0018:ffff8801fe7ddc18  EFLAGS: 00010282
      [   12.762704] RAX: 0000000000000000 RBX: ffff8801ff3e9c00 RCX: ffff8801fdc39800
      [   12.762728] RDX: ffff8801fe7ddc24 RSI: 0000000000000001 RDI: ffff8801ff3e9c00
      [   12.762764] RBP: ffff8801fe7ddc48 R08: 0000000004000000 R09: ffffffffa001f568
      [   12.762797] R10: ffffffff81363083 R11: 0000000000000001 R12: 0000000000000001
      [   12.762832] R13: 0000000000000000 R14: 0000000000000001 R15: ffff8801fde73e68
      [   12.762866] FS:  00007f5548516700(0000) GS:ffff88021f240000(0000) knlGS:0000000000000000
      [   12.762912] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [   12.762946] CR2: 0000000000000018 CR3: 00000001fefe2000 CR4: 00000000001407e0
      [   12.762979] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
      [   12.763014] DR3: 0000000000000000 DR6: 00000000ffff0ff0 DR7: 0000000000000400
      [   12.763048] Process modprobe (pid: 187, threadinfo ffff8801fe7dc000, task ffff8801fe5bdb40)
      [   12.763095] Stack:
      [   12.763122]  0000000000019640 00000000fdc39800 ffff8801fe7ddc48 ffff8801ff3e9c00
      [   12.763225]  0000000000000002 0000000000000000 ffff8801fe7ddc78 ffffffffa00053e7
      [   12.763338]  ffff8801ff3e9c00 0000000000006c98 ffffffffa0007480 ffff8801ff3e9c00
      [   12.763440] Call Trace:
      [   12.763470]  [<ffffffffa00053e7>] thermal_zone_device_update+0x77/0xa0 [thermal_sys]
      [   12.763515]  [<ffffffffa0006d38>] thermal_zone_device_register+0x788/0xa88 [thermal_sys]
      [   12.763562]  [<ffffffffa001f394>] acpi_thermal_add+0x360/0x4c8 [thermal]
      [   12.763598]  [<ffffffff8133902a>] acpi_device_probe+0x50/0x190
      [   12.763632]  [<ffffffff811bd793>] ? sysfs_create_link+0x13/0x20
      [   12.763666]  [<ffffffff813cc41b>] driver_probe_device+0x7b/0x240
      [   12.763699]  [<ffffffff813cc68b>] __driver_attach+0xab/0xb0
      [   12.763732]  [<ffffffff813cc5e0>] ? driver_probe_device+0x240/0x240
      [   12.763766]  [<ffffffff813ca836>] bus_for_each_dev+0x56/0x90
      [   12.763799]  [<ffffffff813cbf4e>] driver_attach+0x1e/0x20
      [   12.763831]  [<ffffffff813cbac0>] bus_add_driver+0x190/0x290
      [   12.763864]  [<ffffffffa0022000>] ? 0xffffffffa0021fff
      [   12.763896]  [<ffffffff813ccbea>] driver_register+0x7a/0x160
      [   12.763928]  [<ffffffffa0022000>] ? 0xffffffffa0021fff
      [   12.763960]  [<ffffffff813399fb>] acpi_bus_register_driver+0x43/0x45
      [   12.763995]  [<ffffffffa002203a>] acpi_thermal_init+0x3a/0x42 [thermal]
      [   12.764029]  [<ffffffff8100207f>] do_one_initcall+0x3f/0x170
      [   12.764063]  [<ffffffff810b1a5f>] sys_init_module+0x8f/0x200
      [   12.764097]  [<ffffffff815ff259>] system_call_fastpath+0x16/0x1b
      [   12.764129] Code: 48 8b 87 c8 02 00 00 41 89 f4 48 8d 55 dc ff 50 28 44 8b 6d dc 41 8d 45 fe 83 f8 01 76 5e 48 8b 83 d8 02 00 00 44 89 e6 48 89 df <ff> 50 18 4c 8d a3 10 03 00 00 4c 89 e7 e8 87 f1 5e e1 8b 83 bc
      [   12.765164] RIP  [<ffffffffa0005277>] handle_thermal_trip+0x47/0x130 [thermal_sys]
      [   12.765223]  RSP <ffff8801fe7ddc18>
      [   12.765252] CR2: 0000000000000018
      [   12.765284] ---[ end trace 7723294cdfb00d2a ]---
      
      This is because thermal_zone_device_update() is invoked before
      any thermal governors being registered.
      Signed-off-by: NZhang Rui <rui.zhang@intel.com>
      d567c686
    • D
      solos-pci: fix double-free of TX skb in DMA mode · cae49ede
      David Woodhouse 提交于
      We weren't clearing card->tx_skb[port] when processing the TX done interrupt.
      If there wasn't another skb ready to transmit immediately, this led to a
      double-free because we'd free it *again* next time we did have a packet to
      send.
      Signed-off-by: NDavid Woodhouse <David.Woodhouse@intel.com>
      Cc: stable@kernel.org
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      cae49ede
    • M
      bnx2: Fix accidental reversions. · fda4d85d
      Michael Chan 提交于
      Commit 4ce45e02
      "bnx2: Add BNX2 prefix to CHIP ID and name macros"
      
      accidentally reverted 2 commits to use pci_ioumap() and to make
      pci_error_handlers const.  This fixes those mistakes.
      Signed-off-by: NMichael Chan <mchan@broadcom.com>
      Signed-off-by: NDavid S. Miller <davem@davemloft.net>
      fda4d85d
    • L
      mm, memory-hotplug: dynamic configure movable memory and portion memory · 511c2aba
      Lai Jiangshan 提交于
      Add online_movable and online_kernel for logic memory hotplug.  This is
      the dynamic version of "movablecore" & "kernelcore".
      
      We have the same reason to introduce it as to introduce "movablecore" &
      "kernelcore".  It has the same motive as "movablecore" & "kernelcore", but
      it is dynamic/running-time:
      
      o We can configure memory as kernelcore or movablecore after boot.
      
        Userspace workload is increased, we need more hugepage, we can't use
        "online_movable" to add memory and allow the system use more
        THP(transparent-huge-page), vice-verse when kernel workload is increase.
      
        Also help for virtualization to dynamic configure host/guest's memory,
        to save/(reduce waste) memory.
      
        Memory capacity on Demand
      
      o When a new node is physically online after boot, we need to use
        "online_movable" or "online_kernel" to configure/portion it as we
        expected when we logic-online it.
      
        This configuration also helps for physically-memory-migrate.
      
      o all benefit as the same as existed "movablecore" & "kernelcore".
      
      o Preparing for movable-node, which is very important for power-saving,
        hardware partitioning and high-available-system(hardware fault
        management).
      
      (Note, we don't introduce movable-node here.)
      
      Action behavior:
      When a memoryblock/memorysection is onlined by "online_movable", the kernel
      will not have directly reference to the page of the memoryblock,
      thus we can remove that memory any time when needed.
      
      When it is online by "online_kernel", the kernel can use it.
      When it is online by "online", the zone type doesn't changed.
      
      Current constraints:
      Only the memoryblock which is adjacent to the ZONE_MOVABLE
      can be online from ZONE_NORMAL to ZONE_MOVABLE.
      
      [akpm@linux-foundation.org: use min_t, cleanups]
      Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
      Cc: Jiang Liu <jiang.liu@huawei.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Minchan Kim <minchan.kim@gmail.com>
      Cc: Mel Gorman <mgorman@suse.de>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Yinghai Lu <yinghai@kernel.org>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      511c2aba
    • L
      drivers/base/node.c: cleanup node_state_attr[] · fcf07d22
      Lai Jiangshan 提交于
      use [index] = init_value
      use N_xxxxx instead of hardcode.
      
      Make it more readability and easier to add new state.
      Signed-off-by: NLai Jiangshan <laijs@cn.fujitsu.com>
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fcf07d22
    • J
      bootmem: fix wrong call parameter for free_bootmem() · 81df9bff
      Joonsoo Kim 提交于
      It is strange that alloc_bootmem() returns a virtual address and
      free_bootmem() requires a physical address.  Anyway, free_bootmem()'s
      first parameter should be physical address.
      
      There are some call sites for free_bootmem() with virtual address.  So fix
      them.
      
      [akpm@linux-foundation.org: improve free_bootmem() and free_bootmem_pate() documentation]
      Signed-off-by: NJoonsoo Kim <js1304@gmail.com>
      Cc: Haavard Skinnemoen <hskinnemoen@gmail.com>
      Cc: Hans-Christian Egtvedt <egtvedt@samfundet.no>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
      Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      81df9bff
    • D
      mm, oom: change type of oom_score_adj to short · a9c58b90
      David Rientjes 提交于
      The maximum oom_score_adj is 1000 and the minimum oom_score_adj is -1000,
      so this range can be represented by the signed short type with no
      functional change.  The extra space this frees up in struct signal_struct
      will be used for per-thread oom kill flags in the next patch.
      Signed-off-by: NDavid Rientjes <rientjes@google.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Reviewed-by: NMichal Hocko <mhocko@suse.cz>
      Cc: Anton Vorontsov <anton.vorontsov@linaro.org>
      Cc: Oleg Nesterov <oleg@redhat.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      a9c58b90
    • Y
      mm: cleanup register_node() · fa264375
      Yasuaki Ishimatsu 提交于
      register_node() is defined as extern in include/linux/node.h.  But the
      function is only called from register_one_node() in driver/base/node.c.
      
      So the patch defines register_node() as static.
      Signed-off-by: NYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Acked-by: NDavid Rientjes <rientjes@google.com>
      Acked-by: NKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      fa264375
    • R
      virtio_balloon: introduce migration primitives to balloon pages · e2250429
      Rafael Aquini 提交于
      Memory fragmentation introduced by ballooning might reduce significantly
      the number of 2MB contiguous memory blocks that can be used within a guest,
      thus imposing performance penalties associated with the reduced number of
      transparent huge pages that could be used by the guest workload.
      
      Besides making balloon pages movable at allocation time and introducing
      the necessary primitives to perform balloon page migration/compaction,
      this patch also introduces the following locking scheme, in order to
      enhance the syncronization methods for accessing elements of struct
      virtio_balloon, thus providing protection against concurrent access
      introduced by parallel memory migration threads.
      
       - balloon_lock (mutex) : synchronizes the access demand to elements of
                                struct virtio_balloon and its queue operations;
      
      [yongjun_wei@trendmicro.com.cn: fix missing unlock on error in fill_balloon()]
      [akpm@linux-foundation.org: avoid having multiple return points in fill_balloon()]
      [akpm@linux-foundation.org: fix printk warning]Signed-off-by: Rafael Aquini <aquini@redhat.com>
      Acked-by: NMichael S. Tsirkin <mst@redhat.com>
      Cc: Rusty Russell <rusty@rustcorp.com.au>
      Cc: Rik van Riel <riel@redhat.com>
      Cc: Mel Gorman <mel@csn.ul.ie>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
      Cc: Minchan Kim <minchan@kernel.org>
      Signed-off-by: NWei Yongjun <yongjun_wei@trendmicro.com.cn>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      e2250429
    • Y
      memory-hotplug: suppress "Device nodeX does not have a release() function" warning · 8c7b5b4e
      Yasuaki Ishimatsu 提交于
      When calling unregister_node(), the function shows following message at
      device_release().
      
      "Device 'node2' does not have a release() function, it is broken and must
      be fixed."
      
      The reason is node's device struct does not have a release() function.
      
      So the patch registers node_device_release() to the device's release()
      function for suppressing the warning message.  Additionally, the patch
      adds memset() to initialize a node struct into register_node().  Because
      the node struct is part of node_devices[] array and it cannot be freed by
      node_device_release().  So if system reuses the node struct, it has a
      garbage.
      Signed-off-by: NYasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Jiang Liu <liuj97@gmail.com>
      Cc: Minchan Kim <minchan.kim@gmail.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8c7b5b4e
    • W
      numa: convert static memory to dynamically allocated memory for per node device · 8732794b
      Wen Congyang 提交于
      We use a static array to store struct node.  In many cases, we don't have
      too many nodes, and some memory will be unused.  Convert it to per-device
      dynamically allocated memory.
      Signed-off-by: NWen Congyang <wency@cn.fujitsu.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Jiang Liu <liuj97@gmail.com>
      Cc: Minchan Kim <minchan.kim@gmail.com>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Yasuaki Ishimatsu <isimatu.yasuaki@jp.fujitsu.com>
      Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      8732794b