1. 15 11月, 2005 4 次提交
    • S
      [PATCH] x86-64/i386: Intel HT, Multi core detection fixes · 94605eff
      Siddha, Suresh B 提交于
      Fields obtained through cpuid vector 0x1(ebx[16:23]) and
      vector 0x4(eax[14:25], eax[26:31]) indicate the maximum values and might not
      always be the same as what is available and what OS sees.  So make sure
      "siblings" and "cpu cores" values in /proc/cpuinfo reflect the values as seen
      by OS instead of what cpuid instruction says. This will also fix the buggy BIOS
      cases (for example where cpuid on a single core cpu says there are "2" siblings,
      even when HT is disabled in the BIOS.
      http://bugzilla.kernel.org/show_bug.cgi?id=4359)
      Signed-off-by: NSuresh Siddha <suresh.b.siddha@intel.com>
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      94605eff
    • A
      [PATCH] x86_64: Speed up numa_node_id by putting it directly into the PDA · 69d81fcd
      Andi Kleen 提交于
      Not go from the CPU number to an mapping array.
      Mode number is often used now in fast paths.
      
      This also adds a generic numa_node_id to all the topology includes
      
      Suggested by Eric Dumazet
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      69d81fcd
    • A
      [PATCH] x86_64: Remove obsolete ARCH_HAS_ATOMIC_UNSIGNED and page_flags_t · 07808b74
      Andi Kleen 提交于
      Has been introduced for x86-64 at some point to save memory
      in struct page, but has been obsolete for some time. Just
      remove it.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      07808b74
    • A
      [PATCH] x86_64: Add 4GB DMA32 zone · a2f1b424
      Andi Kleen 提交于
      Add a new 4GB GFP_DMA32 zone between the GFP_DMA and GFP_NORMAL zones.
      
      As a bit of historical background: when the x86-64 port
      was originally designed we had some discussion if we should
      use a 16MB DMA zone like i386 or a 4GB DMA zone like IA64 or
      both. Both was ruled out at this point because it was in early
      2.4 when VM is still quite shakey and had bad troubles even
      dealing with one DMA zone.  We settled on the 16MB DMA zone mainly
      because we worried about older soundcards and the floppy.
      
      But this has always caused problems since then because
      device drivers had trouble getting enough DMA able memory. These days
      the VM works much better and the wide use of NUMA has proven
      it can deal with many zones successfully.
      
      So this patch adds both zones.
      
      This helps drivers who need a lot of memory below 4GB because
      their hardware is not accessing more (graphic drivers - proprietary
      and free ones, video frame buffer drivers, sound drivers etc.).
      Previously they could only use IOMMU+16MB GFP_DMA, which
      was not enough memory.
      
      Another common problem is that hardware who has full memory
      addressing for >4GB misses it for some control structures in memory
      (like transmit rings or other metadata).  They tended to allocate memory
      in the 16MB GFP_DMA or the IOMMU/swiotlb then using pci_alloc_consistent,
      but that can tie up a lot of precious 16MB GFPDMA/IOMMU/swiotlb memory
      (even on AMD systems the IOMMU tends to be quite small) especially if you have
      many devices.  With the new zone pci_alloc_consistent can just put
      this stuff into memory below 4GB which works better.
      
      One argument was still if the zone should be 4GB or 2GB. The main
      motivation for 2GB would be an unnamed not so unpopular hardware
      raid controller (mostly found in older machines from a particular four letter
      company) who has a strange 2GB restriction in firmware. But
      that one works ok with swiotlb/IOMMU anyways, so it doesn't really
      need GFP_DMA32. I chose 4GB to be compatible with IA64 and because
      it seems to be the most common restriction.
      
      The new zone is so far added only for x86-64.
      
      For other architectures who don't set up this
      new zone nothing changes. Architectures can set a compatibility
      define in Kconfig CONFIG_DMA_IS_DMA32 that will define GFP_DMA32
      as GFP_DMA. Otherwise it's a nop because on 32bit architectures
      it's normally not needed because GFP_NORMAL (=0) is DMA able
      enough.
      
      One problem is still that GFP_DMA means different things on different
      architectures. e.g. some drivers used to have #ifdef ia64  use GFP_DMA
      (trusting it to be 4GB) #elif __x86_64__ (use other hacks like
      the swiotlb because 16MB is not enough) ... . This was quite
      ugly and is now obsolete.
      
      These should be now converted to use GFP_DMA32 unconditionally. I haven't done
      this yet. Or best only use pci_alloc_consistent/dma_alloc_coherent
      which will use GFP_DMA32 transparently.
      Signed-off-by: NAndi Kleen <ak@suse.de>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a2f1b424
  2. 05 11月, 2005 3 次提交
    • J
      [libata] ATAPI pad allocation fixes/cleanup · 6037d6bb
      Jeff Garzik 提交于
      Use ata_pad_{alloc,free} in two drivers, to factor out common code.
      
      Add ata_pad_{alloc,free} to two other drivers, which needed the padding
      but had not been updated.
      6037d6bb
    • C
      [PATCH] nvidiafb: Geforce 7800 series support added · 7015faa7
      Calin A. Culianu 提交于
      This adds support for the Nvidia Geforce 7800 series of cards to the
      nvidiafb framebuffer driver.  All it does is add the PCI device id for
      the 7800, 7800 GTX, 7800 GO, and 7800 GTX GO cards to the module device
      table for the nvidiafb.ko driver, so that nvidiafb.ko will actually work
      on these cards.
      
      I also added the relevant PCI device ids to linux/pci_ids.h
      
      I tested it on my 7800 GTX here and it works like a charm.  I now can
      get framebuffer support on this card! Woo hoo!! Nothing like 200x75 text
      mode to make your eyes BLEED.  ;)
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      7015faa7
    • T
      NFSv4: Fix problem with OPEN_DOWNGRADE · d530838b
      Trond Myklebust 提交于
       RFC 3530 states that for OPEN_DOWNGRADE "The share_access and share_deny
       bits specified must be exactly equal to the union of the share_access and
       share_deny bits specified for some subset of the OPENs in effect for
       current openowner on the current file.
      
       Setattr is currently violating the NFSv4 rules for OPEN_DOWNGRADE in that
       it may cause a downgrade from OPEN4_SHARE_ACCESS_BOTH to
       OPEN4_SHARE_ACCESS_WRITE despite the fact that there exists no open file
       with O_WRONLY access mode.
      
       Fix the problem by replacing nfs4_find_state() with a modified version of
       nfs_find_open_context().
      Signed-off-by: NTrond Myklebust <Trond.Myklebust@netapp.com>
      d530838b
  3. 03 11月, 2005 5 次提交
  4. 01 11月, 2005 2 次提交
  5. 31 10月, 2005 26 次提交
    • R
      [SERIAL] Fix port numbering · 913ade51
      Russell King 提交于
      The PORT_* macros must be uniquely numbered.  This fixes the
      definitions.
      Signed-off-by: NRussell King <rmk+kernel@arm.linux.org.uk>
      913ade51
    • O
      451cbaa1
    • T
      [PATCH] fix missing includes · 4e57b681
      Tim Schmielau 提交于
      I recently picked up my older work to remove unnecessary #includes of
      sched.h, starting from a patch by Dave Jones to not include sched.h
      from module.h. This reduces the number of indirect includes of sched.h
      by ~300. Another ~400 pointless direct includes can be removed after
      this disentangling (patch to follow later).
      However, quite a few indirect includes need to be fixed up for this.
      
      In order to feed the patches through -mm with as little disturbance as
      possible, I've split out the fixes I accumulated up to now (complete for
      i386 and x86_64, more archs to follow later) and post them before the real
      patch.  This way this large part of the patch is kept simple with only
      adding #includes, and all hunks are independent of each other.  So if any
      hunk rejects or gets in the way of other patches, just drop it.  My scripts
      will pick it up again in the next round.
      Signed-off-by: NTim Schmielau <tim@physik3.uni-rostock.de>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4e57b681
    • O
      [PATCH] cleanup the usage of SEND_SIG_xxx constants · 621d3121
      Oleg Nesterov 提交于
      This patch simplifies some checks for magic siginfo values.  It should not
      change the behaviour in any way.
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      621d3121
    • P
      [PATCH] sched: hardcode non-smp set_cpus_allowed · 4098f991
      Paul Jackson 提交于
      Simplify the UP (1 CPU) implementatin of set_cpus_allowed.
      
      The one CPU is hardcoded to be cpu 0 - so just test for that bit, and avoid
      having to pick up the cpu_online_map.
      
      Also, unexport cpu_online_map: it was only needed for set_cpus_allowed().
      Signed-off-by: NPaul Jackson <pj@sgi.com>
      Acked-by: NIngo Molnar <mingo@elte.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      4098f991
    • P
      [PATCH] RCU torture-testing kernel module · a241ec65
      Paul E. McKenney 提交于
      This patch is a rewrite of the one submitted on October 1st, using modules
      (http://marc.theaimsgroup.com/?l=linux-kernel&m=112819093522998&w=2).
      
      This rewrite adds a tristate CONFIG_RCU_TORTURE_TEST, which enables an
      intense torture test of the RCU infratructure.  This is needed due to the
      continued changes to the RCU infrastructure to accommodate dynamic ticks,
      CPU hotplug, realtime, and so on.  Most of the code is in a separate file
      that is compiled only if the CONFIG variable is set.  Documentation on how
      to run the test and interpret the output is also included.
      
      This code has been tested on i386 and ppc64, and an earlier version of the
      code has received extensive testing on a number of architectures as part of
      the PREEMPT_RT patchset.
      Signed-off-by: N"Paul E. McKenney" <paulmck@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a241ec65
    • N
      [PATCH] include/linux/kernel.h:BUILD_BUG_ON(): fix a comment · c0398ee6
      Nikita Danilov 提交于
      Fix comment describing BUILD_BUG_ON: BUG_ON is not an assertion
      (unfortunately).
      Signed-off-by: NNikita Danilov <nikita@clusterfs.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      c0398ee6
    • P
      [PATCH] modules: fix sparse warning for every MODULE_PARM · 52303e8b
      Pavel Roskin 提交于
      sparse complains about every MODULE_PARM used in a module: warning: symbol
      '__parm_foo' was not declared.  Should it be static?
      
      The fix is to split declaration and initialization.  While MODULE_PARM is
      obsolete, it's not something sparse should report.
      Signed-off-by: NPavel Roskin <proski@gnu.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      52303e8b
    • M
      [PATCH] fuse: remove unused define · 6ea05db0
      Miklos Szeredi 提交于
      Setting ctime is implicit in all setattr cases, so the FATTR_CTIME
      definition is unnecessary.
      
      It is used by neither the kernel nor by userspace.
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      6ea05db0
    • D
      [PATCH] Keys: Add LSM hooks for key management [try #3] · 29db9190
      David Howells 提交于
      The attached patch adds LSM hooks for key management facilities. The notable
      changes are:
      
       (1) The key struct now supports a security pointer for the use of security
           modules. This will permit key labelling and restrictions on which
           programs may access a key.
      
       (2) Security modules get a chance to note (or abort) the allocation of a key.
      
       (3) The key permission checking can now be enhanced by the security modules;
           the permissions check consults LSM if all other checks bear out.
      
       (4) The key permissions checking functions now return an error code rather
           than a boolean value.
      
       (5) An extra permission has been added to govern the modification of
           attributes (UID, GID, permissions).
      
      Note that there isn't an LSM hook specifically for each keyctl() operation,
      but rather the permissions hook allows control of individual operations based
      on the permission request bits.
      
      Key management access control through LSM is enabled by automatically if both
      CONFIG_KEYS and CONFIG_SECURITY are enabled.
      
      This should be applied on top of the patch ensubjected:
      
      	[PATCH] Keys: Possessor permissions should be additive
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      Signed-off-by: NChris Wright <chrisw@osdl.org>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      29db9190
    • P
      [PATCH] cpusets: automatic numa mempolicy rebinding · 68860ec1
      Paul Jackson 提交于
      This patch automatically updates a tasks NUMA mempolicy when its cpuset
      memory placement changes.  It does so within the context of the task,
      without any need to support low level external mempolicy manipulation.
      
      If a system is not using cpusets, or if running on a system with just the
      root (all-encompassing) cpuset, then this remap is a no-op.  Only when a
      task is moved between cpusets, or a cpusets memory placement is changed
      does the following apply.  Otherwise, the main routine below,
      rebind_policy() is not even called.
      
      When mixing cpusets, scheduler affinity, and NUMA mempolicies, the
      essential role of cpusets is to place jobs (several related tasks) on a set
      of CPUs and Memory Nodes, the essential role of sched_setaffinity is to
      manage a jobs processor placement within its allowed cpuset, and the
      essential role of NUMA mempolicy (mbind, set_mempolicy) is to manage a jobs
      memory placement within its allowed cpuset.
      
      However, CPU affinity and NUMA memory placement are managed within the
      kernel using absolute system wide numbering, not cpuset relative numbering.
      
      This is ok until a job is migrated to a different cpuset, or what's the
      same, a jobs cpuset is moved to different CPUs and Memory Nodes.
      
      Then the CPU affinity and NUMA memory placement of the tasks in the job
      need to be updated, to preserve their cpuset-relative position.  This can
      be done for CPU affinity using sched_setaffinity() from user code, as one
      task can modify anothers CPU affinity.  This cannot be done from an
      external task for NUMA memory placement, as that can only be modified in
      the context of the task using it.
      
      However, it easy enough to remap a tasks NUMA mempolicy automatically when
      a task is migrated, using the existing cpuset mechanism to trigger a
      refresh of a tasks memory placement after its cpuset has changed.  All that
      is needed is the old and new nodemask, and notice to the task that it needs
      to rebind its mempolicy.  The tasks mems_allowed has the old mask, the
      tasks cpuset has the new mask, and the existing
      cpuset_update_current_mems_allowed() mechanism provides the notice.  The
      bitmap/cpumask/nodemask remap operators provide the cpuset relative
      calculations.
      
      This patch leaves open a couple of issues:
      
       1) Updating vma and shmfs/tmpfs/hugetlbfs memory policies:
      
          These mempolicies may reference nodes outside of those allowed to
          the current task by its cpuset.  Tasks are migrated as part of jobs,
          which reside on what might be several cpusets in a subtree.  When such
          a job is migrated, all NUMA memory policy references to nodes within
          that cpuset subtree should be translated, and references to any nodes
          outside that subtree should be left untouched.  A future patch will
          provide the cpuset mechanism needed to mark such subtrees.  With that
          patch, we will be able to correctly migrate these other memory policies
          across a job migration.
      
       2) Updating cpuset, affinity and memory policies in user space:
      
          This is harder.  Any placement state stored in user space using
          system-wide numbering will be invalidated across a migration.  More
          work will be required to provide user code with a migration-safe means
          to manage its cpuset relative placement, while preserving the current
          API's that pass system wide numbers, not cpuset relative numbers across
          the kernel-user boundary.
      Signed-off-by: NPaul Jackson <pj@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      68860ec1
    • P
      [PATCH] cpusets: bitmap and mask remap operators · fb5eeeee
      Paul Jackson 提交于
      In the forthcoming task migration support, a key calculation will be
      mapping cpu and node numbers from the old set to the new set while
      preserving cpuset-relative offset.
      
      For example, if a task and its pages on nodes 8-11 are being migrated to
      nodes 24-27, then pages on node 9 (the 2nd node in the old set) should be
      moved to node 25 (the 2nd node in the new set.)
      
      As with other bitmap operations, the proper way to code this is to provide
      the underlying calculation in lib/bitmap.c, and then to provide the usual
      cpumask and nodemask wrappers.
      
      This patch provides that.  These operations are termed 'remap' operations.
      Both remapping a single bit and a set of bits is supported.
      Signed-off-by: NPaul Jackson <pj@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      fb5eeeee
    • P
      [PATCH] cpusets: dual semaphore locking overhaul · 053199ed
      Paul Jackson 提交于
      Overhaul cpuset locking.  Replace single semaphore with two semaphores.
      
      The suggestion to use two locks was made by Roman Zippel.
      
      Both locks are global.  Code that wants to modify cpusets must first
      acquire the exclusive manage_sem, which allows them read-only access to
      cpusets, and holds off other would-be modifiers.  Before making actual
      changes, the second semaphore, callback_sem must be acquired as well.  Code
      that needs only to query cpusets must acquire callback_sem, which is also a
      global exclusive lock.
      
      The earlier problems with double tripping are avoided, because it is
      allowed for holders of manage_sem to nest the second callback_sem lock, and
      only callback_sem is needed by code called from within __alloc_pages(),
      where the double tripping had been possible.
      
      This is not quite the same as a normal read/write semaphore, because
      obtaining read-only access with intent to change must hold off other such
      attempts, while allowing read-only access w/o such intention.  Changing
      cpusets involves several related checks and changes, which must be done
      while allowing read-only queries (to avoid the double trip), but while
      ensuring nothing changes (holding off other would be modifiers.)
      
      This overhaul of cpuset locking also makes careful use of task_lock() to
      guard access to the task->cpuset pointer, closing a couple of race
      conditions noticed while reading this code (thanks, Roman).  I've never
      seen these races fail in any use or test.
      
      See further the comments in the code.
      Signed-off-by: NPaul Jackson <pj@sgi.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      053199ed
    • A
      [PATCH] add_timer() of a pending timer is illegal · 15d2bace
      Andrew Morton 提交于
      In the recent timer rework we lost the check for an add_timer() of an
      already-pending timer.  That check was useful for networking, so put it back.
      
      Cc: "David S. Miller" <davem@davemloft.net>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      15d2bace
    • C
      [PATCH] unify sys_ptrace prototype · dfb7dac3
      Christoph Hellwig 提交于
      Make sure we always return, as all syscalls should.  Also move the common
      prototype to <linux/syscalls.h>
      Signed-off-by: NChristoph Hellwig <hch@lst.de>
      Signed-off-by: NMiklos Szeredi <miklos@szeredi.hu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      dfb7dac3
    • O
      [PATCH] kill sigqueue->lock · 19a4fcb5
      Oleg Nesterov 提交于
      This lock is used in sigqueue_free(), but it is always equal to
      current->sighand->siglock, so we don't need to keep it in the struct
      sigqueue.
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      19a4fcb5
    • E
      [PATCH] reduce sizeof(struct file) · 2f512016
      Eric Dumazet 提交于
      Now that RCU applied on 'struct file' seems stable, we can place f_rcuhead
      in a memory location that is not anymore used at call_rcu(&f->f_rcuhead,
      file_free_rcu) time, to reduce the size of this critical kernel object.
      
      The trick I used is to move f_rcuhead and f_list in an union called f_u
      
      The callers are changed so that f_rcuhead becomes f_u.fu_rcuhead and f_list
      becomes f_u.f_list
      Signed-off-by: NEric Dumazet <dada1@cosmosbay.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2f512016
    • A
      [PATCH] remove timer debug field · dfc4f94d
      Andrew Morton 提交于
      Remove timer_list.magic and associated debugging code.
      
      I originally added this when a spinlock was added to timer_list - this meant
      that an all-zeroes timer became illegal and init_timer() was required.
      
      That spinlock isn't even there any more, although timer.base must now be
      initialised.
      
      I'll keep this debugging code in -mm.
      Signed-off-by: NAlexey Dobriyan <adobriyan@gmail.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      dfc4f94d
    • J
      [PATCH] NTP shift_right cleanup · 1bb34a41
      john stultz 提交于
      Create a macro shift_right() that avoids the numerous ugly conditionals in the
      NTP code that look like:
      
              if(a < 0)
                      b = -(-a >> shift);
              else
                      b = a >> shift;
      
      Replacing it with:
      
              b = shift_right(a, shift);
      
      This should have zero effect on the logic, however it should probably have
      a bit of testing just to be sure.
      
      Also replace open-coded min/max with the macros.
      
      Signed-off-by : John Stultz <johnstul@us.ibm.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      1bb34a41
    • A
      [PATCH] Add kthread_stop_sem() · 61e1a9ea
      Alan Stern 提交于
      Enhance the kthread API by adding kthread_stop_sem, for use in stopping
      threads that spend their idle time waiting on a semaphore.
      Signed-off-by: NAlan Stern <stern@rowland.harvard.edu>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      61e1a9ea
    • O
      [PATCH] introduce setup_timer() helper · a8db2db1
      Oleg Nesterov 提交于
      Every user of init_timer() also needs to initialize ->function and ->data
      fields.  This patch adds a simple setup_timer() helper for that.
      
      The schedule_timeout() is patched as an example of usage.
      Signed-off-by: NOleg Nesterov <oleg@tv-sign.ru>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      a8db2db1
    • J
      [PATCH] ext3: Fix unmapped buffers in transaction's lists · aaa4059b
      Jan Kara 提交于
      Fix the problem (BUG 4964) with unmapped buffers in transaction's
      t_sync_data list.  The problem is we need to call filesystem's own
      invalidatepage() from block_write_full_page().
      
      block_write_full_page() must call filesystem's invalidatepage().  Otherwise
      following nasty race can happen:
      
         proc 1                                        proc 2
         ------                                        ------
      - write some new data to 'offset'
        => bh gets to the transactions data list
                                                    - starts truncate
                                                      => i_size set to new size
      - mpage_writepages()
        - ext3_ordered_writepage() to 'offset'
          - block_write_full_page()
            - page->index > end_index+1
              - block_invalidatepage()
                - discard_buffer()
                  - clear_buffer_mapped()
      
      - commit triggers and finds unmapped buffer - BOOM!
      Signed-off-by: NJan Kara <jack@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      aaa4059b
    • S
      [PATCH] introduce .valid callback for pm_ops · eb9289eb
      Shaohua Li 提交于
      Add pm_ops.valid callback, so only the available pm states show in
      /sys/power/state.  And this also makes an earlier states error report at
      enter_state before we do actual suspend/resume.
      
      Signed-off-by: Shaohua Li<shaohua.li@intel.com>
      Acked-by: Pavel Machek<pavel@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      eb9289eb
    • R
      [PATCH] swsusp: rework memory freeing on resume · 2c1b4a5c
      Rafael J. Wysocki 提交于
      The following patch makes swsusp use the PG_nosave and PG_nosave_free flags to
      mark pages that should be freed in case of an error during resume.
      
      This allows us to simplify the code and to use swsusp_free() in all of the
      swsusp's resume error paths, which makes them actually work.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      2c1b4a5c
    • R
      [PATCH] swsusp: move snapshot functionality to separate file · 25761b6e
      Rafael J. Wysocki 提交于
      The following patch moves the functionality of swsusp related to creating and
      handling the snapshot of memory to a separate file, snapshot.c
      
      This should enable us to untangle the code in the future and eventually to
      implement some parts of swsusp.c in the user space.
      
      The patch does not change the code.
      Signed-off-by: NRafael J. Wysocki <rjw@sisk.pl>
      Signed-off-by: NPavel Machek <pavel@suse.cz>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      25761b6e
    • A
      [PATCH] introduce get_cpu_sysdev() to retrieve a sysfs entry for a cpu. · ad74557a
      Ashok Raj 提交于
      Some modules creating sysfs entries under /sys/devices/system/cpu/cpuX/
      need to know the parent sysfs entry to make devices under them.  This will
      just return the sysfs entry for a given cpu.
      
      sysfs entries showing under each cpu sysfs can be easily created if such
      entries can be created by registering a sysfs driver for cpuclass.  The
      issue is when the entry is created the CPU may not be online, hence we
      would need to defer the creation until the online notification comes.
      
      Current users: cache entries for Intel CPU's and cpufreq subsystem.
      Signed-off-by: NAshok Raj <ashok.raj@intel.com>
      Signed-off-by: NVenkatesh Pallipadi <venkatesh.pallipadi@intel.com>
      Cc: Dave Jones <davej@codemonkey.org.uk>
      Cc: Zwane Mwaikambo <zwane@holomorphy.com>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      ad74557a