1. 22 Mar, 2012 40 commits
    • Linus Torvalds's avatar
      Merge branch 'drm-next' of git://people.freedesktop.org/~airlied/linux · be53bfdb
      Linus Torvalds authored
      Pull drm main changes from Dave Airlie:
       "This is the main drm pull request, I'm probably going to send two more
        smaller ones, will explain below.
      
        This contains a patch that is also in the fbdev tree, but it should be
        the same patch, it added an API for hot unplugging framebuffer
        devices, and I need that API for a new driver.
      
        It also contains some changes to the i2c tree which Jean has acked,
        and one change to moorestown platform stuff in x86.
      
        Highlights:
         - new drivers: UDL driver for USB displaylink devices, kms only,
           should support correct hotplug operations.
         - core: i2c speedups + better hotplug support, EDID overriding via
           firmware interface - allows user to load a firmware for a broken
           monitor/kvm from userspace, it even has documentation for it.
         - exynos: new HDMI audio + hdmi 1.4 + virtual output driver
         - gma500: code cleanup
         - radeon: cleanups, CS optimisations, streamout support and pageflip
           fix
         - nouveau: NVD9 displayport support + more reclocking work
         - i915: re-enabling GMBUS, finish gpu patch (might help hibernation
           who knows), missed irq fixes, stencil tiling fixes, interlaced
           support, aliasesd PPGTT support for SNB/IVB, swizzling for SNB/IVB,
           semaphore fixes
      
        As well as the usual bunch of cleanups and fixes all over the place.
      
        I've got two things I'd like to merge a bit later:
      
         a) AMD support for all their new radeonhd 7000 series GPU and APUs.
            AMD dropped this a bit late due to insane internal review
            processes, (please AMD just follow Intel and let open source guys
            ship stuff early) however I don't want to penalise people who own
            this hardware (since its been on sale for 3-4 months and GPU hw
            doesn't exactly have a lifetime in years) and consign them to
            using closed drivers for longer than necessary.  The changes are
            well contained and just plug into the driver new gpu functionality
            so they should be fairly regression proof.  I just want to give
            them a bit of a run on the hw AMD kindly sent me.
      
         b) drm prime/dma-buf interface code.  This is just infrastructure
            code to expose the dma-buf stuff to drm drivers and to userspace.
            I'm not planning on pushing any driver support in this cycle
            (except maybe exynos), but I'd like to get the infrastructure code
            in so for the next cycle I can start getting the driver support
            into the individual drivers.  We have started driver support for
            i915, nouveau and udl along with I think exynos and omap in
            staging.  However this code relies on the dma-buf tree being
            pulled into your tree first since it needs the latest interfaces
            from that tree.  I'll push to get that tree sent asap.
      
        (oh and any warnings you see in i915 are gcc's fault from what anyone
        can see)."
      
      Fix up trivial conflicts in arch/x86/platform/mrst/mrst.c due to the new
      msic_thermal_platform_data() thermal function being added next to the
      tc35876x_platform_data() i2c device function..
      
      * 'drm-next' of git://people.freedesktop.org/~airlied/linux: (326 commits)
        drm/i915: use DDC_ADDR instead of hard-coding it
        drm/radeon: use DDC_ADDR instead of hard-coding it
        drm: remove unneeded redefinition of DDC_ADDR
        drm/exynos: added virtual display driver.
        drm: allow loading an EDID as firmware to override broken monitor
        drm/exynos: enable hdmi audio feature
        drm/exynos: add default pixel format for plane
        drm/exynos: cleanup exynos_hdmi.h
        drm/exynos: add is_local member in exynos_drm_subdrv struct
        drm/exynos: add subdrv open/close functions
        drm/exynos: remove module of exynos drm subdrv
        drm/exynos: release pending pageflip events when closed
        drm/exynos: added new funtion to get/put dma address.
        drm/exynos: update gem and buffer framework.
        drm/exynos: added mode_fixup feature and code clean.
        drm/exynos: add HDMI version 1.4 support
        drm/exynos: remove exynos_mixer.h
        gma500: Fix mmap frambuffer
        drm/radeon: Drop radeon_gem_object_(un)pin.
        drm/radeon: Restrict offset for legacy display engine.
        ...
      be53bfdb
    • Linus Torvalds's avatar
      Merge tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · b2094ef8
      Linus Torvalds authored
      Pull updates of sound stuff from Takashi Iwai:
       "Here is the first big update chunk of sound stuff for 3.4-rc1.
      
        In the common sound infrastructure, there are a few changes for
        dynamic PCM support (used in ASoC) and a few clean-ups.  Majority of
        changes are found, as usual, in HD-audio and ASoC.
      
        Some highlights of HD-audio changes:
      
         - All the long-standing static quirk codes for Realtek codec were
           finally removed by fixing and extending the Realtek auto-parser.
      
         - The mute-LED control is standardized over all HD-audio codec
           drivers using the extended vmaster hook.
      
         - The vmaster slave mixer elements are initialized to 0dB as default
           so that the user won't be annoyed by the silent output after
           updates, e.g.  due to the additions of new elements.
      
         - Other many fix-ups for the misc HD-audio devices.
      
        In the ASoC side, this is a very active release, including a quite a
        few framework enhancements.  Some highlights:
      
         - Support for widgets not associated with a CODEC, an important part
           of the dynamic PCM framework.
      
         - A library factoring out the common code shared by dmaengine based
           DMA drivers contributed by Lars-Peter Clausen.  This will save a
           lot of code and make it much easier to deploy enhancements to
           dmaengine.
      
         - Support for binary controls, used for providing runtime
           configuration of algorithm coefficients.
      
         - A new DAPM widget type for regulator supplies allowing drivers for
           devices that can power down unused supplies while active to do
           without any per-driver code.
      
         - DAPM widgets for DAIs, initially giving a speed boost for playback
           startup and shutdown and also the basis for CODEC<->CODEC DAI link
           support.
      
         - Support for specifying the number of significant bits on audio
           interfaces, useful for allowing applications to know how much
           effort to put into generating data for a larger sample format.
      
         - Conversion of the FSI driver used on some SH processors to
           DMAEngine.
      
         - Conversion of EP93xx drivers to DMAEngine.
      
         - New CODEC drivers for Maxim MAX9768 and Wolfson Microelectronics
           WM2200.
      
         - Move audmux driver from arc/arm to sound/soc
      
         - McBSP move from arch/ to sound/ and updates
      
        Also, a few small updates and fixes for other drivers like au88x0,
        ymfpci, USB 6fire, USB usx2yaudio are included."
      
      * tag 'sound-3.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (446 commits)
        ASoC: wm8994: Provide VMID mode control and fix default sequence
        ASoC: wm8994: Add missing break in resume
        ASoC: wm_hubs: Don't actively manage LINEOUT_VMID_BUF
        ASoC: pxa-ssp: atomically set stream active masks
        ASoC: fsl: p1022ds: tell the WM8776 codec driver that it's the master
        ASoC: Samsung: Added to support mono recording
        ALSA: hda - Fix build with CONFIG_PM=n
        ALSA: au88x0 - Avoid possible Oops at unbinding
        ALSA: usb-audio - Fix build error by consitification of rate list
        ASoC: core: Fix obscure leak of runtime array
        ALSA: pcm - Avoid GFP_ATOMIC in snd_pcm_link()
        ALSA: pcm: Constify the list in snd_pcm_hw_constraint_list
        ASoC: wm8996: Add 44.1kHz support
        ALSA: hda - Fix build of patch_sigmatel.c without CONFIG_SND_HDA_POWER_SAVE
        ASoC: mx27vis-aic32x4: Convert it to platform driver
        ALSA: hda - fix printing of high HDMI sample rates
        ALSA: ymfpci - Fix legacy registers on S3/S4 resume
        ALSA: control - Fixe a trailing white space error
        ALSA: hda - Add expose_enum_ctl flag to snd_hda_add_vmaster_hook()
        ALSA: hda - Add "Mute-LED Mode" enum control
        ...
      b2094ef8
    • Linus Torvalds's avatar
      Merge tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6 · 424a6f6e
      Linus Torvalds authored
      SCSI updates from James Bottomley:
       "The update includes the usual assortment of driver updates (lpfc,
        qla2xxx, qla4xxx, bfa, bnx2fc, bnx2i, isci, fcoe, hpsa) plus a huge
        amount of infrastructure work in the SAS library and transport class
        as well as an iSCSI update.  There's also a new SCSI based virtio
        driver."
      
      * tag 'scsi-misc' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-misc-2.6: (177 commits)
        [SCSI] qla4xxx: Update driver version to 5.02.00-k15
        [SCSI] qla4xxx: trivial cleanup
        [SCSI] qla4xxx: Fix sparse warning
        [SCSI] qla4xxx: Add support for multiple session per host.
        [SCSI] qla4xxx: Export CHAP index as sysfs attribute
        [SCSI] scsi_transport: Export CHAP index as sysfs attribute
        [SCSI] qla4xxx: Add support to display CHAP list and delete CHAP entry
        [SCSI] iscsi_transport: Add support to display CHAP list and delete CHAP entry
        [SCSI] pm8001: fix endian issue with code optimization.
        [SCSI] pm8001: Fix possible racing condition.
        [SCSI] pm8001: Fix bogus interrupt state flag issue.
        [SCSI] ipr: update PCI ID definitions for new adapters
        [SCSI] qla2xxx: handle default case in qla2x00_request_firmware()
        [SCSI] isci: improvements in driver unloading routine
        [SCSI] isci: improve phy event warnings
        [SCSI] isci: debug, provide state-enum-to-string conversions
        [SCSI] scsi_transport_sas: 'enable' phys on reset
        [SCSI] libsas: don't recover end devices attached to disabled phys
        [SCSI] libsas: fixup target_port_protocols for expanders that don't report sata
        [SCSI] libsas: set attached device type and target protocols for local phys
        ...
      424a6f6e
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending · 1ab142d4
      Linus Torvalds authored
      Pull SCSI target updates from Nicholas Bellinger:
       "This contains the usual set of updates and bugfixes to target-core +
        existing fabric module code, along with a handful of the patches
        destined for v3.3 stable.
      
        It also contains the necessary target-core infrastructure pieces
        required to run using tcm_qla2xxx.ko WWPNs with the new Qlogic Fibre
        Channel fabric module currently queued in target-pending/for-next-merge,
        and coming for round 2.
      
        The highlights for this series include:
      
         - Add target_submit_tmr() helper function for fabric task management
           (andy)
         - Convert tcm_fc to use target_submit_tmr() (andy)
         - Replace target core various cmd flags with a transport state (hch)
         - Convert loopback to use workqueue submission (hch)
         - Convert target core to use array_zalloc for tpg_lun_list (joern)
         - Convert target core to use array_zalloc for device_list (joern)
         - Add target core support for TMR_ABORT_TASK (nab)
         - Add target core se_sess->sess_kref + get/put helpers (nab)
         - Add target core se_node_acl->acl_kref for ->acl_free_comp usage
           (nab)
         - Convert iscsi-target to use target_put_session + sess_kref (nab)
         - Fix tcm_fc fc_exch memory leak in ft_send_resp_status (nab)
         - Fix ib_srpt srpt_handle_cmd send_ioctx->ioctx_kref leak on
           exception (nab)
         - Fix target core up handling of short INQUIRY buffers (roland)
         - Untangle target-core front-end and back-end meanings of max_sectors
           attribute (roland)
         - Set loopback residual field for SCSI commands (roland)
         - Fix target-core 16-bit target ports for SET TARGET PORT GROUPS
           emulation (roland)
      
        Thanks again to Andy, Christoph, Joern, Roland, and everyone who has
        contributed this round!"
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/nab/target-pending: (64 commits)
        ib_srpt: Fix srpt_handle_cmd send_ioctx->ioctx_kref leak on exception
        loopback: Fix transport_generic_allocate_tasks error handling
        iscsi-target: remove improper externs
        iscsi-target: Remove unused variables in iscsi_target_parameters.c
        target: remove obvious warnings
        target: Use array_zalloc for device_list
        target: Use array_zalloc for tpg_lun_list
        target: Fix sense code for unsupported SERVICE ACTION IN
        target: Remove hack to make READ CAPACITY(10) lie if thin provisioning is enabled
        target: Bump core version to v4.1.0-rc2-ml + fabric versions
        tcm_fc: Fix fc_exch memory leak in ft_send_resp_status
        target: Drop unused legacy target_core_fabric_ops API callers
        iscsi-target: Convert to use target_put_session + sess_kref
        target: Convert se_node_acl->acl_group removal to use ->acl_kref
        target: Add se_node_acl->acl_kref for ->acl_free_comp usage
        target: Add se_node_acl->acl_free_comp for NodeACL release path
        target: Add se_sess->sess_kref + get/put helpers
        target: Convert session_lock to irqsave
        target: Fix typo in drivers/target
        iscsi-target: Fix dynamic -> explict NodeACL pointer reference
        ...
      1ab142d4
    • Linus Torvalds's avatar
      Merge tag 'md-3.4' of git://neil.brown.name/md · 267d7b23
      Linus Torvalds authored
      Pull md updates for 3.4 from Neil Brown:
       "Mostly tidying up code in preparation for some bigger changes next
        time.
      
        A few bug fixes tagged for -stable.
      
        Main functionality change is that some RAID10 arrays can now grow to
        use extra space that may have been made available on the individual
        devices."
      
      Fixed up trivial conflicts with the k[un]map_atomic() cleanups in
      drivers/md/bitmap.c.
      
      * tag 'md-3.4' of git://neil.brown.name/md: (22 commits)
        md: Add judgement bb->unacked_exist in function md_ack_all_badblocks().
        md: fix clearing of the 'changed' flags for the bad blocks list.
        md/bitmap: discard CHUNK_BLOCK_SHIFT macro
        md/bitmap: remove unnecessary indirection when allocating.
        md/bitmap: remove some pointless locking.
        md/bitmap: change a 'goto' to a normal 'if' construct.
        md/bitmap: move printing of bitmap status to bitmap.c
        md/bitmap: remove some unused noise from bitmap.h
        md/raid10 - support resizing some RAID10 arrays.
        md/raid1: handle merge_bvec_fn in member devices.
        md/raid10: handle merge_bvec_fn in member devices.
        md: add proper merge_bvec handling to RAID0 and Linear.
        md: tidy up rdev_for_each usage.
        md/raid1,raid10: avoid deadlock during resync/recovery.
        md/bitmap: ensure to load bitmap when creating via sysfs.
        md: don't set md arrays to readonly on shutdown.
        md: allow re-add to failed arrays.
        md/raid5: use atomic_dec_return() instead of atomic_dec() and atomic_read().
        md: Use existed macros instead of numbers
        md/raid5: removed unused 'added_devices' variable.
        ...
      267d7b23
    • Linus Torvalds's avatar
      Merge branch 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 28f23d1f
      Linus Torvalds authored
      Pull x86 "urgent" leftovers from Ingo Molnar:
       "Pending x86/urgent bits that were not high prio enough to warrant
        -rc-less v3.3-final inclusion."
      
      * 'x86-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, efi: Fix pointer math issue in handle_ramdisks()
        x86/ioapic: Add register level checks to detect bogus io-apic entries
        x86, mce: Fix rcu splat in drain_mce_log_buffer()
        x86, memblock: Move mem_hole_size() to .init
      28f23d1f
    • Linus Torvalds's avatar
      Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 23904815
      Linus Torvalds authored
      Pull x86 platform changes from Ingo Molnar.
      
      Removes the Moorestown platform that nobody ever used.
      
      * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/platform: Move APIC ID validity check into platform APIC code
        x86/olpc/xo15/sci: Enable lid close wakeup control
        x86/geode/net5501: Add platform driver for Soekris Engineering net5501
        x86/geode/alix2: Supplement driver to include GPIO button support
        x86/mid/powerbtn: Use MSIC read/write instead of ipc_scu
        x86/mid/thermal: Turn off thermistor
        x86/mid/thermal: Add msic_thermal alias
        x86/mid/thermal: Convert to use Intel MSIC API
        x86/mid/scu_ipc: Remove Moorestown support
        x86/mid: Kill off Moorestown
        x86/mrst: Add msic_thermal platform support
        x86/config: Select MSIC MFD driver on Intel Medfield platform
        x86/mid: Remove Intel Moorestown
        x86/mrst: Set ISA bus type for fake MP IRQs
        x86/ioapic: Use legacy_pic to set correct gsi-irq mapping
      23904815
    • Linus Torvalds's avatar
      Merge branch 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 754b9800
      Linus Torvalds authored
      Pull MCE changes from Ingo Molnar.
      
      * 'x86-mce-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/mce: Fix return value of mce_chrdev_read() when erst is disabled
        x86/mce: Convert static array of pointers to per-cpu variables
        x86/mce: Replace hard coded hex constants with symbolic defines
        x86/mce: Recognise machine check bank signature for data path error
        x86/mce: Handle "action required" errors
        x86/mce: Add mechanism to safely save information in MCE handler
        x86/mce: Create helper function to save addr/misc when needed
        HWPOISON: Add code to handle "action required" errors.
        HWPOISON: Clean up memory_failure() vs. __memory_failure()
      754b9800
    • Linus Torvalds's avatar
      Merge branch 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 35cb8d9e
      Linus Torvalds authored
      Pull x86/fpu changes from Ingo Molnar.
      
      * 'x86-fpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        i387: Split up <asm/i387.h> into exported and internal interfaces
        i387: Uninline the generic FP helpers that we expose to kernel modules
      35cb8d9e
    • Linus Torvalds's avatar
      Merge branch 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 02c50256
      Linus Torvalds authored
      Pull x86/build changes from Ingo Molnar.
      
      * 'x86-build-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, build: Fix portability issues when cross-building
        x86, tools: Remove unneeded header files from tools/build.c
        USB: ffs-test: Don't duplicate {get,put}_unaligned*() functions
        x86, efi: Fix endian issues and unaligned accesses
        x86, boot: Restrict CFLAGS for hostprogs
        x86, mkpiggy: Don't open code put_unaligned_le32()
        x86, relocs: Don't open code put_unaligned_le32()
        tools/include: Add byteshift headers for endian access
      02c50256
    • Linus Torvalds's avatar
      Merge branch 'x86-eficross-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · f06fc0c0
      Linus Torvalds authored
      Pull x86/eficross (booting 32/64-bit kernel from 64/32-bit EFI) from Ingo Molnar
      
      * 'x86-eficross-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, efi: Allow basic init with mixed 32/64-bit efi/kernel
        x86, efi: Add basic error handling
        x86, efi: Cleanup config table walking
        x86, efi: Convert printk to pr_*()
        x86, efi: Refactor efi_init() a bit
      f06fc0c0
    • Linus Torvalds's avatar
      Merge branch 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 4c64616b
      Linus Torvalds authored
      Pull x86/debug changes from Ingo Molnar.
      
      * 'x86-debug-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Fix section warnings
        x86-64: Fix CFI data for common_interrupt()
        x86: Properly _init-annotate NMI selftest code
        x86/debug: Fix/improve the show_msr=<cpus> debug print out
      4c64616b
    • Linus Torvalds's avatar
      Merge branches 'x86-cpu-for-linus', 'x86-boot-for-linus',... · c5c7fb8f
      Linus Torvalds authored
      Merge branches 'x86-cpu-for-linus', 'x86-boot-for-linus', 'x86-cpufeature-for-linus', 'x86-process-for-linus' and 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
      
      Pull trivial x86 branches from Ingo Molnar: small one-liners to fix up
      details.
      
      * 'x86-cpu-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Remove some noise from boot log when starting cpus
      
      * 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, boot: Fix port argument to inl() function
      
      * 'x86-cpufeature-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86, cpufeature: Add CPU features from Intel document 319433-012A
      
      * 'x86-process-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86_64: Record stack pointer before task execution begins
      
      * 'x86-uv-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86/UV: Lower UV rtc clocksource rating
      c5c7fb8f
    • Linus Torvalds's avatar
      Merge branch 'x86-atomic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 1b674bf1
      Linus Torvalds authored
      Pull x86/atomic changes from Ingo Molnar.
      
      * 'x86-atomic-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: atomic64 assembly improvements
        x86: Adjust asm constraints in atomic64 wrappers
      1b674bf1
    • Linus Torvalds's avatar
      Merge branch 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · e17fdf5c
      Linus Torvalds authored
      Pull x86/asm changes from Ingo Molnar
      
      * 'x86-asm-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
        x86: Include probe_roms.h in probe_roms.c
        x86/32: Print control and debug registers for kerenel context
        x86: Tighten dependencies of CPU_SUP_*_32
        x86/numa: Improve internode cache alignment
        x86: Fix the NMI nesting comments
        x86-64: Improve insn scheduling in SAVE_ARGS_IRQ
        x86-64: Fix CFI annotations for NMI nesting code
        bitops: Add missing parentheses to new get_order macro
        bitops: Optimise get_order()
        bitops: Adjust the comment on get_order() to describe the size==0 case
        x86/spinlocks: Eliminate TICKET_MASK
        x86-64: Handle byte-wise tail copying in memcpy() without a loop
        x86-64: Fix memcpy() to support sizes of 4Gb and above
        x86-64: Fix memset() to support sizes of 4Gb and above
        x86-64: Slightly shorten copy_page()
      e17fdf5c
    • Linus Torvalds's avatar
      Merge branch 'akpm' (Andrew's patch-bomb) · 95211279
      Linus Torvalds authored
      Merge first batch of patches from Andrew Morton:
       "A few misc things and all the MM queue"
      
      * emailed from Andrew Morton <akpm@linux-foundation.org>: (92 commits)
        memcg: avoid THP split in task migration
        thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE
        memcg: clean up existing move charge code
        mm/memcontrol.c: remove unnecessary 'break' in mem_cgroup_read()
        mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event()
        mm/memcontrol.c: s/stealed/stolen/
        memcg: fix performance of mem_cgroup_begin_update_page_stat()
        memcg: remove PCG_FILE_MAPPED
        memcg: use new logic for page stat accounting
        memcg: remove PCG_MOVE_LOCK flag from page_cgroup
        memcg: simplify move_account() check
        memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat)
        memcg: kill dead prev_priority stubs
        memcg: remove PCG_CACHE page_cgroup flag
        memcg: let css_get_next() rely upon rcu_read_lock()
        cgroup: revert ss_id_lock to spinlock
        idr: make idr_get_next() good for rcu_read_lock()
        memcg: remove unnecessary thp check in page stat accounting
        memcg: remove redundant returns
        memcg: enum lru_list lru
        ...
      95211279
    • Linus Torvalds's avatar
      Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc · 5375871d
      Linus Torvalds authored
      Pull powerpc merge from Benjamin Herrenschmidt:
       "Here's the powerpc batch for this merge window.  It is going to be a
        bit more nasty than usual as in touching things outside of
        arch/powerpc mostly due to the big iSeriesectomy :-) We finally got
        rid of the bugger (legacy iSeries support) which was a PITA to
        maintain and that nobody really used anymore.
      
        Here are some of the highlights:
      
         - Legacy iSeries is gone.  Thanks Stephen ! There's still some bits
           and pieces remaining if you do a grep -ir series arch/powerpc but
           they are harmless and will be removed in the next few weeks
           hopefully.
      
         - The 'fadump' functionality (Firmware Assisted Dump) replaces the
           previous (equivalent) "pHyp assisted dump"...  it's a rewrite of a
           mechanism to get the hypervisor to do crash dumps on pSeries, the
           new implementation hopefully being much more reliable.  Thanks
           Mahesh Salgaonkar.
      
         - The "EEH" code (pSeries PCI error handling & recovery) got a big
           spring cleaning, motivated by the need to be able to implement a
           new backend for it on top of some new different type of firwmare.
      
           The work isn't complete yet, but a good chunk of the cleanups is
           there.  Note that this adds a field to struct device_node which is
           not very nice and which Grant objects to.  I will have a patch soon
           that moves that to a powerpc private data structure (hopefully
           before rc1) and we'll improve things further later on (hopefully
           getting rid of the need for that pointer completely).  Thanks Gavin
           Shan.
      
         - I dug into our exception & interrupt handling code to improve the
           way we do lazy interrupt handling (and make it work properly with
           "edge" triggered interrupt sources), and while at it found & fixed
           a wagon of issues in those areas, including adding support for page
           fault retry & fatal signals on page faults.
      
         - Your usual random batch of small fixes & updates, including a bunch
           of new embedded boards, both Freescale and APM based ones, etc..."
      
      I fixed up some conflicts with the generalized irq-domain changes from
      Grant Likely, hopefully correctly.
      
      * 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc: (141 commits)
        powerpc/ps3: Do not adjust the wrapper load address
        powerpc: Remove the rest of the legacy iSeries include files
        powerpc: Remove the remaining CONFIG_PPC_ISERIES pieces
        init: Remove CONFIG_PPC_ISERIES
        powerpc: Remove FW_FEATURE ISERIES from arch code
        tty/hvc_vio: FW_FEATURE_ISERIES is no longer selectable
        powerpc/spufs: Fix double unlocks
        powerpc/5200: convert mpc5200 to use of_platform_populate()
        powerpc/mpc5200: add options to mpc5200_defconfig
        powerpc/mpc52xx: add a4m072 board support
        powerpc/mpc5200: update mpc5200_defconfig to fit for charon board
        Documentation/powerpc/mpc52xx.txt: Checkpatch cleanup
        powerpc/44x: Add additional device support for APM821xx SoC and Bluestone board
        powerpc/44x: Add support PCI-E for APM821xx SoC and Bluestone board
        MAINTAINERS: Update PowerPC 4xx tree
        powerpc/44x: The bug fixed support for APM821xx SoC and Bluestone board
        powerpc: document the FSL MPIC message register binding
        powerpc: add support for MPIC message register API
        powerpc/fsl: Added aliased MSIIR register address to MSI node in dts
        powerpc/85xx: mpc8548cds - add 36-bit dts
        ...
      5375871d
    • Linus Torvalds's avatar
      Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu · b57cb723
      Linus Torvalds authored
      Pull m68knommu arch updates from Greg Ungerer:
       "Includes a cleanup of the non-MMU linker script (it now almost
        exclusively uses the well defined linker script support macros and
        definitions).  Some more merging of MMU and non-MMU common files
        (specifically the arch process.c, ptrace and time.c).  And a big
        cleanup of the massively duplicated ColdFire device definition code.
      
        Overall we remove about 2000 lines of code, and end up with a single
        set of platform device definitions for the serial ports, ethernet
        ports and QSPI ports common in most ColdFire SoCs.
      
        I expect you will get a merge conflict on arch/m68k/kernel/process.c,
        in cpu_idle().  It should be relatively strait forward to fixup."
      
      And cpu_idle() conflict resolution was indeed trivial (merging the
      nommu/mmu versions of process.c trivially conflicting with the
      conversion to use the schedule_preempt_disabled() helper function)
      
      * 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/gerg/m68knommu: (57 commits)
        m68knommu: factor more common ColdFire cpu reset code
        m68knommu: make 528x CPU reset register addressing consistent
        m68knommu: make 527x CPU reset register addressing consistent
        m68knommu: make 523x CPU reset register addressing consistent
        m68knommu: factor some common ColdFire cpu reset code
        m68knommu: move old ColdFire timers init from CPU init to timers code
        m68knommu: clean up init code in ColdFire 532x startup
        m68knommu: clean up init code in ColdFire 528x startup
        m68knommu: clean up init code in ColdFire 523x startup
        m68knommu: merge common ColdFire QSPI platform setup code
        m68knommu: make 532x QSPI platform addressing consistent
        m68knommu: make 528x QSPI platform addressing consistent
        m68knommu: make 527x QSPI platform addressing consistent
        m68knommu: make 5249 QSPI platform addressing consistent
        m68knommu: make 523x QSPI platform addressing consistent
        m68knommu: make 520x QSPI platform addressing consistent
        m68knommu: merge common ColdFire FEC platform setup code
        m68knommu: make 532x FEC platform addressing consistent
        m68knommu: make 528x FEC platform addressing consistent
        m68knommu: make 527x FEC platform addressing consistent
        ...
      b57cb723
    • Linus Torvalds's avatar
      Merge git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw · ad12ab25
      Linus Torvalds authored
      Pull gfs2 changes from Steven Whitehouse.
      
      * git://git.kernel.org/pub/scm/linux/kernel/git/steve/gfs2-3.0-nmw:
        GFS2: Change truncate page allocation to be GFP_NOFS
        GFS2: call gfs2_write_alloc_required for each chunk
        GFS2: Clean up log flush header writing
        GFS2: Remove a __GFP_NOFAIL allocation
        GFS2: Flush pending glock work when evicting an inode
        GFS2: make sure rgrps are up to date in func gfs2_blk2rgrpd
        GFS2: Eliminate sd_rindex_mutex
        GFS2: Unlock rindex mutex on glock error
        GFS2: Make bd_cmp() static
        GFS2: Sort the ordered write list
        GFS2: FITRIM ioctl support
        GFS2: Move two functions from log.c to lops.c
        GFS2: glock statistics gathering
      ad12ab25
    • Naoya Horiguchi's avatar
      memcg: avoid THP split in task migration · 12724850
      Naoya Horiguchi authored
      
      
      Currently we can't do task migration among memory cgroups without THP
      split, which means processes heavily using THP experience large overhead
      in task migration.  This patch introduces the code for moving charge of
      THP and makes THP more valuable.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Acked-by: default avatarHillf Danton <dhillf@gmail.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: David Rientjes <rientjes@google.com>
      Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      12724850
    • Naoya Horiguchi's avatar
      thp: add HPAGE_PMD_* definitions for !CONFIG_TRANSPARENT_HUGEPAGE · d8c37c48
      Naoya Horiguchi authored
      
      
      These macros will be used in a later patch, where all usages are expected
      to be optimized away without #ifdef CONFIG_TRANSPARENT_HUGEPAGE.  But to
      detect unexpected usages, we convert the existing BUG() to BUILD_BUG().
      
      [akpm@linux-foundation.org: fix build in mm/pgtable-generic.c]
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Acked-by: default avatarHillf Danton <dhillf@gmail.com>
      Reviewed-by: default avatarAndrea Arcangeli <aarcange@redhat.com>
      Reviewed-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarDavid Rientjes <rientjes@google.com>
      Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      d8c37c48
    • Naoya Horiguchi's avatar
      memcg: clean up existing move charge code · 8d32ff84
      Naoya Horiguchi authored
      
      
      - Replace lengthy function name is_target_pte_for_mc() with a shorter
        one in order to avoid ugly line breaks.
      
      - explicitly use MC_TARGET_* instead of simply using integers.
      Signed-off-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
      Cc: Hillf Danton <dhillf@gmail.com>
      Cc: David Rientjes <rientjes@google.com>
      Acked-by: default avatarHillf Danton <dhillf@gmail.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      8d32ff84
    • Jeff Liu's avatar
    • Anton Vorontsov's avatar
      mm/memcontrol.c: remove redundant BUG_ON() in mem_cgroup_usage_unregister_event() · 45f3e385
      Anton Vorontsov authored
      
      
      In the following code:
      
      	if (type == _MEM)
      		thresholds = &memcg->thresholds;
      	else if (type == _MEMSWAP)
      		thresholds = &memcg->memsw_thresholds;
      	else
      		BUG();
      
      	BUG_ON(!thresholds);
      
      The BUG_ON() seems redundant.
      Signed-off-by: default avatarAnton Vorontsov <anton.vorontsov@linaro.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      45f3e385
    • Andrew Morton's avatar
      mm/memcontrol.c: s/stealed/stolen/ · 13fd1dd9
      Andrew Morton authored
      
      
      A grammatical fix.
      
      Cc: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      13fd1dd9
    • KAMEZAWA Hiroyuki's avatar
      memcg: fix performance of mem_cgroup_begin_update_page_stat() · 4331f7d3
      KAMEZAWA Hiroyuki authored
      
      
      mem_cgroup_begin_update_page_stat() should be very fast because it's
      called very frequently.  Now, it needs to look up page_cgroup and its
      memcg....this is slow.
      
      This patch adds a global variable to check "any memcg is moving or not".
      With this, the caller doesn't need to visit page_cgroup and memcg.
      
      Here is a test result.  A test program makes page faults onto a file,
      MAP_SHARED and makes each page's page_mapcount(page) > 1, and free the
      range by madvise() and page fault again.  This program causes 26214400
      times of page fault onto a file(size was 1G.) and shows shows the cost of
      mem_cgroup_begin_update_page_stat().
      
      Before this patch for mem_cgroup_begin_update_page_stat()
      
          [kamezawa@bluextal test]$ time ./mmap 1G
      
          real    0m21.765s
          user    0m5.999s
          sys     0m15.434s
      
          27.46%     mmap  mmap               [.] reader
          21.15%     mmap  [kernel.kallsyms]  [k] page_fault
           9.17%     mmap  [kernel.kallsyms]  [k] filemap_fault
           2.96%     mmap  [kernel.kallsyms]  [k] __do_fault
           2.83%     mmap  [kernel.kallsyms]  [k] __mem_cgroup_begin_update_page_stat
      
      After this patch
      
          [root@bluextal test]# time ./mmap 1G
      
          real    0m21.373s
          user    0m6.113s
          sys     0m15.016s
      
      In usual path, calls to __mem_cgroup_begin_update_page_stat() goes away.
      
      Note: we may be able to remove this optimization in future if
            we can get pointer to memcg directly from struct page.
      
      [akpm@linux-foundation.org: don't return a void]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarGreg Thelen <gthelen@google.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Ying Han <yinghan@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      4331f7d3
    • KAMEZAWA Hiroyuki's avatar
      memcg: remove PCG_FILE_MAPPED · 2ff76f11
      KAMEZAWA Hiroyuki authored
      
      
      With the new lock scheme for updating memcg's page stat, we don't need a
      flag PCG_FILE_MAPPED which was duplicated information of page_mapped().
      
      [hughd@google.com: cosmetic fix]
      [hughd@google.com: add comment to MEM_CGROUP_CHARGE_TYPE_MAPPED case in __mem_cgroup_uncharge_common()]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarGreg Thelen <gthelen@google.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Ying Han <yinghan@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      2ff76f11
    • KAMEZAWA Hiroyuki's avatar
      memcg: use new logic for page stat accounting · 89c06bd5
      KAMEZAWA Hiroyuki authored
      
      
      Now, page-stat-per-memcg is recorded into per page_cgroup flag by
      duplicating page's status into the flag.  The reason is that memcg has a
      feature to move a page from a group to another group and we have race
      between "move" and "page stat accounting",
      
      Under current logic, assume CPU-A and CPU-B.  CPU-A does "move" and CPU-B
      does "page stat accounting".
      
      When CPU-A goes 1st,
      
                  CPU-A                           CPU-B
                                          update "struct page" info.
          move_lock_mem_cgroup(memcg)
          see pc->flags
          copy page stat to new group
          overwrite pc->mem_cgroup.
          move_unlock_mem_cgroup(memcg)
                                          move_lock_mem_cgroup(mem)
                                          set pc->flags
                                          update page stat accounting
                                          move_unlock_mem_cgroup(mem)
      
      stat accounting is guarded by move_lock_mem_cgroup() and "move" logic
      (CPU-A) doesn't see changes in "struct page" information.
      
      But it's costly to have the same information both in 'struct page' and
      'struct page_cgroup'.  And, there is a potential problem.
      
      For example, assume we have PG_dirty accounting in memcg.
      PG_..is a flag for struct page.
      PCG_ is a flag for struct page_cgroup.
      (This is just an example. The same problem can be found in any
       kind of page stat accounting.)
      
      	  CPU-A                               CPU-B
            TestSet PG_dirty
            (delay)                        TestClear PG_dirty
                                           if (TestClear(PCG_dirty))
                                                memcg->nr_dirty--
            if (TestSet(PCG_dirty))
                memcg->nr_dirty++
      
      Here, memcg->nr_dirty = +1, this is wrong.  This race was reported by Greg
      Thelen <gthelen@google.com>.  Now, only FILE_MAPPED is supported but
      fortunately, it's serialized by page table lock and this is not real bug,
      _now_,
      
      If this potential problem is caused by having duplicated information in
      struct page and struct page_cgroup, we may be able to fix this by using
      original 'struct page' information.  But we'll have a problem in "move
      account"
      
      Assume we use only PG_dirty.
      
               CPU-A                   CPU-B
          TestSet PG_dirty
          (delay)                    move_lock_mem_cgroup()
                                     if (PageDirty(page))
                                            new_memcg->nr_dirty++
                                     pc->mem_cgroup = new_memcg;
                                     move_unlock_mem_cgroup()
          move_lock_mem_cgroup()
          memcg = pc->mem_cgroup
          new_memcg->nr_dirty++
      
      accounting information may be double-counted.  This was original reason to
      have PCG_xxx flags but it seems PCG_xxx has another problem.
      
      I think we need a bigger lock as
      
           move_lock_mem_cgroup(page)
           TestSetPageDirty(page)
           update page stats (without any checks)
           move_unlock_mem_cgroup(page)
      
      This fixes both of problems and we don't have to duplicate page flag into
      page_cgroup.  Please note: move_lock_mem_cgroup() is held only when there
      are possibility of "account move" under the system.  So, in most path,
      status update will go without atomic locks.
      
      This patch introduces mem_cgroup_begin_update_page_stat() and
      mem_cgroup_end_update_page_stat() both should be called at modifying
      'struct page' information if memcg takes care of it.  as
      
           mem_cgroup_begin_update_page_stat()
           modify page information
           mem_cgroup_update_page_stat()
           => never check any 'struct page' info, just update counters.
           mem_cgroup_end_update_page_stat().
      
      This patch is slow because we need to call begin_update_page_stat()/
      end_update_page_stat() regardless of accounted will be changed or not.  A
      following patch adds an easy optimization and reduces the cost.
      
      [akpm@linux-foundation.org: s/lock/locked/]
      [hughd@google.com: fix deadlock by avoiding stat lock when anon]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Greg Thelen <gthelen@google.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Ying Han <yinghan@google.com>
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      89c06bd5
    • KAMEZAWA Hiroyuki's avatar
      memcg: remove PCG_MOVE_LOCK flag from page_cgroup · 312734c0
      KAMEZAWA Hiroyuki authored
      
      
      PCG_MOVE_LOCK is used for bit spinlock to avoid race between overwriting
      pc->mem_cgroup and page statistics accounting per memcg.  This lock helps
      to avoid the race but the race is very rare because moving tasks between
      cgroup is not a usual job.  So, it seems using 1bit per page is too
      costly.
      
      This patch changes this lock as per-memcg spinlock and removes
      PCG_MOVE_LOCK.
      
      If smaller lock is required, we'll be able to add some hashes but I'd like
      to start from this.
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarGreg Thelen <gthelen@google.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Ying Han <yinghan@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      312734c0
    • KAMEZAWA Hiroyuki's avatar
      memcg: simplify move_account() check · 619d094b
      KAMEZAWA Hiroyuki authored
      
      
      In memcg, for avoiding take-lock-irq-off at accessing page_cgroup, a
      logic, flag + rcu_read_lock(), is used.  This works as following
      
           CPU-A                     CPU-B
                                   rcu_read_lock()
          set flag
                                   if(flag is set)
                                         take heavy lock
                                   do job.
          synchronize_rcu()        rcu_read_unlock()
          take heavy lock.
      
      In recent discussion, it's argued that using per-cpu value for this flag
      just complicates the code because 'set flag' is very rare.
      
      This patch changes 'flag' implementation from percpu to atomic_t.  This
      will be much simpler.
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarGreg Thelen <gthelen@google.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Ying Han <yinghan@google.com>
      Cc: "Paul E. McKenney" <paulmck@us.ibm.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      619d094b
    • KAMEZAWA Hiroyuki's avatar
      memcg: remove EXPORT_SYMBOL(mem_cgroup_update_page_stat) · 9e335790
      KAMEZAWA Hiroyuki authored
      
      
      As described in the log, I guess EXPORT was for preparing dirty
      accounting.  But _now_, we don't need to export this.  Remove this for
      now.
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Reviewed-by: default avatarGreg Thelen <gthelen@google.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Cc: Ying Han <yinghan@google.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9e335790
    • Konstantin Khlebnikov's avatar
      memcg: kill dead prev_priority stubs · a710920c
      Konstantin Khlebnikov authored
      This code was removed in 25edde03
      
       ("vmscan: kill prev_priority
      completely")
      Signed-off-by: default avatarKonstantin Khlebnikov <khlebnikov@openvz.org>
      Acked-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      a710920c
    • KAMEZAWA Hiroyuki's avatar
      memcg: remove PCG_CACHE page_cgroup flag · b2402857
      KAMEZAWA Hiroyuki authored
      
      
      We record 'the page is cache' with the PCG_CACHE bit in page_cgroup.
      Here, "CACHE" means anonymous user pages (and SwapCache).  This doesn't
      include shmem.
      
      Considering callers, at charge/uncharge, the caller should know what the
      page is and we don't need to record it by using one bit per page.
      
      This patch removes PCG_CACHE bit and make callers of
      mem_cgroup_charge_statistics() to specify what the page is.
      
      About page migration: Mapping of the used page is not touched during migra
      tion (see page_remove_rmap) so we can rely on it and push the correct
      charge type down to __mem_cgroup_uncharge_common from end_migration for
      unused page.  The force flag was misleading was abused for skipping the
      needless page_mapped() / PageCgroupMigration() check, as we know the
      unused page is no longer mapped and cleared the migration flag just a few
      lines up.  But doing the checks is no biggie and it's not worth adding
      another flag just to skip them.
      
      [akpm@linux-foundation.org: checkpatch fixes]
      [hughd@google.com: fix PageAnon uncharging]
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Cc: Hugh Dickins <hughd@google.com>
      Cc: Ying Han <yinghan@google.com>
      Acked-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      b2402857
    • Hugh Dickins's avatar
      memcg: let css_get_next() rely upon rcu_read_lock() · ca464d69
      Hugh Dickins authored
      
      
      Remove lock and unlock around css_get_next()'s call to idr_get_next().
      memcg iterators (only users of css_get_next) already did rcu_read_lock(),
      and its comment demands that; but add a WARN_ON_ONCE to make sure of it.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      ca464d69
    • Hugh Dickins's avatar
      cgroup: revert ss_id_lock to spinlock · 42aee6c4
      Hugh Dickins authored
      Commit c1e2ee2d
      
       ("memcg: replace ss->id_lock with a rwlock") has now
      been seen to cause the unfair behavior we should have expected from
      converting a spinlock to an rwlock: softlockup in cgroup_mkdir(), whose
      get_new_cssid() is waiting for the wlock, while there are 19 tasks using
      the rlock in css_get_next() to get on with their memcg workload (in an
      artificial test, admittedly).  Yet lib/idr.c was made suitable for RCU
      way back: revert that commit, restoring ss->id_lock to a spinlock.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      42aee6c4
    • Hugh Dickins's avatar
      idr: make idr_get_next() good for rcu_read_lock() · 9f7de827
      Hugh Dickins authored
      
      
      Make one small adjustment to idr_get_next(): take the height from the top
      layer (stable under RCU) instead of from the root (unprotected by RCU), as
      idr_find() does: so that it can be used with RCU locking.  Copied comment
      on RCU locking from idr_find().
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Acked-by: default avatarLi Zefan <lizf@cn.fujitsu.com>
      Cc: Eric Dumazet <eric.dumazet@gmail.com>
      Acked-by: default avatarTejun Heo <tj@kernel.org>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      9f7de827
    • KAMEZAWA Hiroyuki's avatar
      memcg: remove unnecessary thp check in page stat accounting · 0e79dedd
      KAMEZAWA Hiroyuki authored
      Commit e94c8a9c
      
       ("memcg: make mem_cgroup_split_huge_fixup() more
      efficient") removed move_lock_page_cgroup().  So we do not have to check
      PageTransHuge in mem_cgroup_update_page_stat() and fallback into the
      locked accounting because both move_account() and thp split are done
      with compound_lock so they cannot race.
      
      The race between update vs.  move is protected by mem_cgroup_stealed.
      
      PageTransHuge pages shouldn't appear in this code path currently because
      we are tracking only file pages at the moment but later we are planning
      to track also other pages (e.g.  mlocked ones).
      Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Johannes Weiner <hannes@cmpxchg.org>
      Cc: Andrea Arcangeli <aarcange@redhat.com>
      Reviewed-by: default avatarAcked-by: Michal Hocko <mhocko@suse.cz>
      Cc: David Rientjes <rientjes@google.com>
      Acked-by: Ying Han<yinghan@google.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      0e79dedd
    • Hugh Dickins's avatar
      memcg: remove redundant returns · 1f2b71f4
      Hugh Dickins authored
      
      
      Remove redundant returns from ends of functions, and one blank line.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Reviewed-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Acked-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1f2b71f4
    • Hugh Dickins's avatar
      memcg: enum lru_list lru · f156ab93
      Hugh Dickins authored
      
      
      Mostly we use "enum lru_list lru": change those few "l"s to "lru"s.
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Reviewed-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Acked-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Acked-by: default avatarMichal Hocko <mhocko@suse.cz>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      f156ab93
    • Hugh Dickins's avatar
      memcg: lru_size instead of MEM_CGROUP_ZSTAT · 1eb49272
      Hugh Dickins authored
      
      
      I never understood why we need a MEM_CGROUP_ZSTAT(mz, idx) macro to
      obscure the LRU counts.  For easier searching? So call it lru_size
      rather than bare count (lru_length sounds better, but would be wrong,
      since each huge page raises lru_size hugely).
      Signed-off-by: default avatarHugh Dickins <hughd@google.com>
      Acked-by: default avatarKirill A. Shutemov <kirill@shutemov.name>
      Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
      Cc: Michal Hocko <mhocko@suse.cz>
      Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
      Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
      Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
      1eb49272