1. 07 12月, 2006 9 次提交
  2. 05 12月, 2006 2 次提交
  3. 04 12月, 2006 3 次提交
  4. 03 12月, 2006 1 次提交
  5. 02 12月, 2006 8 次提交
  6. 30 11月, 2006 2 次提交
  7. 26 11月, 2006 1 次提交
  8. 23 11月, 2006 2 次提交
    • L
      [AGP] Allocate AGP pages with GFP_DMA32 by default · 66c669ba
      Linus Torvalds 提交于
      Not all graphic page remappers support physical addresses over the 4GB
      mark for remapping, so while some do (the AMD64 GART always did, and I
      just fixed the i965 to do so properly), we're safest off just forcing
      GFP_DMA32 allocations to make sure graphics pages get allocated in the
      low 32-bit address space by default.
      
      AGP sub-drivers that really care, and can do better, could just choose
      to implement their own allocator (or we could add another "64-bit safe"
      default allocator for their use), but quite frankly, you're not likely
      to care in practice.
      
      So for now, this trivial change means that we won't be allocating pages
      that we can't map correctly by mistake on x86-64.
      
      [ On traditional 32-bit x86, this could never happen, because GFP_KERNEL
        would never allocate any highmem memory anyway ]
      Acked-by: NAndi Kleen <ak@suse.de>
      Acked-by: NDave Jones <davej@redhat.com>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Keith Packard <keithp@keithp.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      66c669ba
    • L
      [AGP] Fix intel 965 AGP memory mapping function · 7d915a38
      Linus Torvalds 提交于
      This introduces a i965-specific "mask_memory()" function that knows
      about the extended physical addresses that the i965 supports.  This
      allows us to correctly map in physical memory in the >4GB range into the
      GTT.
      
      Also simplify/clean-up the i965 case for the aperture sizing by just
      returning the fixed 512kB size from "fetch_size()".  We don't really
      care that not all of the aperture may be visible - the only thing that
      cares about the aperture size is the Intel "stolen memory" calculation,
      which depends on the fixed size.
      
      Cc: Keith Packard <keithp@keithp.com>
      Cc: Eric Anholt <eric@anholt.net>
      Cc: Dave Jones <davej@redhat.com>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      7d915a38
  9. 22 11月, 2006 3 次提交
    • D
      WorkStruct: make allyesconfig · c4028958
      David Howells 提交于
      Fix up for make allyesconfig.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      c4028958
    • D
      WorkStruct: Pass the work_struct pointer instead of context data · 65f27f38
      David Howells 提交于
      Pass the work_struct pointer to the work function rather than context data.
      The work function can use container_of() to work out the data.
      
      For the cases where the container of the work_struct may go away the moment the
      pending bit is cleared, it is made possible to defer the release of the
      structure by deferring the clearing of the pending bit.
      
      To make this work, an extra flag is introduced into the management side of the
      work_struct.  This governs auto-release of the structure upon execution.
      
      Ordinarily, the work queue executor would release the work_struct for further
      scheduling or deallocation by clearing the pending bit prior to jumping to the
      work function.  This means that, unless the driver makes some guarantee itself
      that the work_struct won't go away, the work function may not access anything
      else in the work_struct or its container lest they be deallocated..  This is a
      problem if the auxiliary data is taken away (as done by the last patch).
      
      However, if the pending bit is *not* cleared before jumping to the work
      function, then the work function *may* access the work_struct and its container
      with no problems.  But then the work function must itself release the
      work_struct by calling work_release().
      
      In most cases, automatic release is fine, so this is the default.  Special
      initiators exist for the non-auto-release case (ending in _NAR).
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      65f27f38
    • D
      WorkStruct: Separate delayable and non-delayable events. · 52bad64d
      David Howells 提交于
      Separate delayable work items from non-delayable work items be splitting them
      into a separate structure (delayed_work), which incorporates a work_struct and
      the timer_list removed from work_struct.
      
      The work_struct struct is huge, and this limits it's usefulness.  On a 64-bit
      architecture it's nearly 100 bytes in size.  This reduces that by half for the
      non-delayable type of event.
      Signed-Off-By: NDavid Howells <dhowells@redhat.com>
      52bad64d
  10. 21 11月, 2006 1 次提交
  11. 18 11月, 2006 5 次提交
  12. 17 11月, 2006 1 次提交
    • Z
      [PATCH] ipmi: use platform_device_add() instead of platform_device_register()... · b48f5457
      Zhang, Yanmin 提交于
      [PATCH] ipmi: use platform_device_add() instead of platform_device_register() to register device allocated dynamically
      
      I got below warning when running 2.6.19-rc5-mm1 on my ia64 machine.
      
      WARNING at lib/kobject.c:172 kobject_init()
      
      Call Trace:
       [<a0000001000137c0>] show_stack+0x40/0xa0
                                      sp=e0000002ff9f7bc0 bsp=e0000002ff9f0d10
       [<a000000100013850>] dump_stack+0x30/0x60
                                      sp=e0000002ff9f7d90 bsp=e0000002ff9f0cf8
       [<a000000100407bb0>] kobject_init+0x90/0x160
                                      sp=e0000002ff9f7d90 bsp=e0000002ff9f0cd0
       [<a0000001005ae080>] device_initialize+0x40/0x1c0
                                      sp=e0000002ff9f7da0 bsp=e0000002ff9f0cb0
       [<a0000001005b88c0>] platform_device_register+0x20/0x60
                                      sp=e0000002ff9f7dd0 bsp=e0000002ff9f0c90
       [<a000000100592560>] try_smi_init+0xbc0/0x11e0
                                      sp=e0000002ff9f7dd0 bsp=e0000002ff9f0c50
       [<a000000100594900>] init_ipmi_si+0xaa0/0x12e0
                                      sp=e0000002ff9f7de0 bsp=e0000002ff9f0bd8
       [<a000000100009910>] init+0x350/0x780
                                      sp=e0000002ff9f7e00 bsp=e0000002ff9f0ba8
       [<a000000100011d30>] kernel_thread_helper+0x30/0x60
                                      sp=e0000002ff9f7e30 bsp=e0000002ff9f0b80
       [<a0000001000090c0>] start_kernel_thread+0x20/0x40
                                      sp=e0000002ff9f7e30 bsp=e0000002ff9f0b80
      WARNING at lib/kobject.c:172 kobject_init()
      
      Call Trace:
       [<a0000001000137c0>] show_stack+0x40/0xa0
                                      sp=e0000002ff9f7b40 bsp=e0000002ff9f0db0
       [<a000000100013850>] dump_stack+0x30/0x60
                                      sp=e0000002ff9f7d10 bsp=e0000002ff9f0d98
       [<a000000100407bb0>] kobject_init+0x90/0x160
                                      sp=e0000002ff9f7d10 bsp=e0000002ff9f0d70
       [<a0000001005ae080>] device_initialize+0x40/0x1c0
                                      sp=e0000002ff9f7d20 bsp=e0000002ff9f0d50
       [<a0000001005b88c0>] platform_device_register+0x20/0x60
                                      sp=e0000002ff9f7d50 bsp=e0000002ff9f0d30
       [<a00000010058ac00>] ipmi_register_smi+0xcc0/0x18e0
                                      sp=e0000002ff9f7d50 bsp=e0000002ff9f0c90
       [<a000000100592600>] try_smi_init+0xc60/0x11e0
                                      sp=e0000002ff9f7dd0 bsp=e0000002ff9f0c50
       [<a000000100594900>] init_ipmi_si+0xaa0/0x12e0
                                      sp=e0000002ff9f7de0 bsp=e0000002ff9f0bd8
       [<a000000100009910>] init+0x350/0x780
                                      sp=e0000002ff9f7e00 bsp=e0000002ff9f0ba8
       [<a000000100011d30>] kernel_thread_helper+0x30/0x60
                                      sp=e0000002ff9f7e30 bsp=e0000002ff9f0b80
       [<a0000001000090c0>] start_kernel_thread+0x20/0x40
                                      sp=e0000002ff9f7e30 bsp=e0000002ff9f0b80
      
      The root cause is the device struct is initialized twice.
      
      If the device is allocated dynamically by platform_device_alloc,
      platform_device_alloc will initialize struct device, then,
      platform_device_add should be used to register the device.
      
      The difference between platform_device_register and platform_device_add is
      platform_device_register will initiate the device while platform_device_add
      won't.
      Signed-off-by: NZhang Yanmin <yanmin.zhang@intel.com>
      Cc: Corey Minyard <minyard@acm.org>
      Cc: Greg KH <greg@kroah.com>
      Signed-off-by: NAndrew Morton <akpm@osdl.org>
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      b48f5457
  13. 15 11月, 2006 1 次提交
  14. 13 11月, 2006 1 次提交