06 Aug, 2009

5 commits

  • Currently SELinux enforcement of controls on the ability to map low memory
    is determined by the mmap_min_addr tunable. This patch causes SELinux to
    ignore the tunable and instead use a seperate Kconfig option specific to how
    much space the LSM should protect.

    The tunable will now only control the need for CAP_SYS_RAWIO and SELinux
    permissions will always protect the amount of low memory designated by
    CONFIG_LSM_MMAP_MIN_ADDR.

    This allows users who need to disable the mmap_min_addr controls (usual reason
    being they run WINE as a non-root user) to do so and still have SELinux
    controls preventing confined domains (like a web server) from being able to
    map some area of low memory.

    Signed-off-by: Eric Paris
    Signed-off-by: James Morris

    Eric Paris
     
  • Currently SELinux does not check CAP_SYS_RAWIO in the file_mmap hook. This
    means there is no DAC check on the ability to mmap low addresses in the
    memory space. This function adds the DAC check for CAP_SYS_RAWIO while
    maintaining the selinux check on mmap_zero. This means that processes
    which need to mmap low memory will need CAP_SYS_RAWIO and mmap_zero but will
    NOT need the SELinux sys_rawio capability.

    Signed-off-by: Eric Paris
    Signed-off-by: James Morris

    Eric Paris
     
  • Currently we duplicate the mmap_min_addr test in cap_file_mmap and in
    security_file_mmap if !CONFIG_SECURITY. This patch moves cap_file_mmap
    into commoncap.c and then calls that function directly from
    security_file_mmap ifndef CONFIG_SECURITY like all of the other capability
    checks are done.

    Signed-off-by: Eric Paris
    Acked-by: Serge Hallyn
    Signed-off-by: James Morris

    Eric Paris
     
  • James Morris
     
  • Elsewhere the sin_family field holds a value with a name of the form
    AF_..., so it seems reasonable to do so here as well. Also the values of
    PF_INET and AF_INET are the same.

    The semantic patch that makes this change is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @@
    struct sockaddr_in sip;
    @@

    (
    sip.sin_family ==
    - PF_INET
    + AF_INET
    |
    sip.sin_family !=
    - PF_INET
    + AF_INET
    |
    sip.sin_family =
    - PF_INET
    + AF_INET
    )
    //

    Signed-off-by: Julia Lawall
    Acked-by: Casey Schaufler
    Signed-off-by: James Morris

    Julia Lawall
     

05 Aug, 2009

31 commits

  • * 'upstream' of git://ftp.linux-mips.org/pub/scm/upstream-linus: (32 commits)
    MIPS: Wire up accept4 syscall.
    MIPS: VPE: Delete unused function get_tc_unused().
    MIPS: VPE: Fix bogus indentation.
    MIPS: VPE: Make various functions static.
    MIPS: VPE: Free relocation chain on error.
    MIPS: VPE: Fix compiler warning.
    MIPS: Module: Make error messages unique.
    MIPS: Octeon: Run IPI code with interrupts disabled.
    MIPS: Jazz: Fix read buffer overflow
    MIPS: Use DIV_ROUND_CLOSEST
    MIPS: MTX-1: Request button GPIO before setting its direction
    MIPS: AR7: Override CFLAGS with -Werror
    MIPS: AR7: Remove unused tnetd7200_get_clock function
    MIPS: AR7: Use DMA_BIT_MASK(nn) instead of deprecated DMA_nnBIT_MASK
    MIPS: AR7: Fix build failures when CONFIG_SERIAL_8250 is not enabled
    MIPS: Fix read buffer overflow
    MIPS: AR7: Fix build warning on memory.c
    MIPS: Octeon PCIe: Make hardware and software bus numbers match.
    MIPS: RBTX4939: Fix IOC pin-enable register updating
    MIPS: Simplify and correct interrupt handling for MSP4200
    ...

    Linus Torvalds
     
  • * 'fix/hda' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6:
    ALSA: hda - Read buffer overflow
    ALSA: hda: Correct EAPD for Dell Inspiron 1525
    ALSA: hda: warn on spurious response
    ALSA: hda: remember last command for each codec
    ALSA: hda: read CORBWP inside reg_lock
    ALSA: hda: take reg_lock in azx_init_cmd_io/azx_free_cmd_io
    ALSA: hda: take cmd_mutex in probe_codec()
    ALSA: hda: track CIRB/CORB command/response states for each codec
    ALSA: hda - Fix quirk for Toshiba Satellite A135-S4527

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/tty-2.6:
    tty-ldisc: be more careful in 'put_ldisc' locking
    tty-ldisc: turn ldisc user count into a proper refcount
    tty-ldisc: make refcount be atomic_t 'users' count

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.dk/linux-2.6-block:
    Make SCSI SG v4 driver enabled by default and remove EXPERIMENTAL dependency, since udev depends on BSG
    block: Update topology documentation
    block: Stack optimal I/O size
    block: Add a wrapper for setting minimum request size without a queue
    block: Make blk_queue_stack_limits use the new stacking interface

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (47 commits)
    ehea: Fix napi list corruption on ifconfig down
    igbvf: Allow VF driver to correctly recognize failure to set mac
    3c59x: Fix build failure with gcc 3.2
    sky2: Avoid transmits during sky2_down()
    iwlagn: do not send key clear commands when rfkill enabled
    libertas: Read buffer overflow
    drivers/net/wireless: introduce missing kfree
    drivers/net/wireless/iwlwifi: introduce missing kfree
    zd1211rw: fix unaligned access in zd_mac_rx
    cfg80211: fix regression on beacon world roaming feature
    cfg80211: add two missing NULL pointer checks
    ixgbe: Patch to modify 82598 PCIe completion timeout values
    bluetooth: rfcomm_init bug fix
    mlx4_en: Fix double pci unmapping.
    mISDN: Fix handling of receive buffer size in L1oIP
    pcnet32: VLB support fixes
    pcnet32: remove superfluous NULL pointer check in pcnet32_probe1()
    net: restore the original spinlock to protect unicast list
    netxen: fix coherent dma mask setting
    mISDN: Read buffer overflow
    ...

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi-rc-fixes-2.6: (23 commits)
    [SCSI] sd: Avoid sending extended inquiry to legacy devices
    [SCSI] libsas: fix wide port hotplug issues
    [SCSI] libfc: fix a circular locking warning during sending RRQ
    [SCSI] qla4xxx: Remove hiwat code so scsi eh does not get escalated when we can make progress
    [SCSI] qla4xxx: Fix srb lookup in qla4xxx_eh_device_reset
    [SCSI] qla4xxx: Fix Driver Fault Recovery Completion
    [SCSI] qla4xxx: add timeout handler
    [SCSI] qla4xxx: Correct Extended Sense Data Errors
    [SCSI] libiscsi: disable bh in and abort handler.
    [SCSI] zfcp: Fix tracing of request id for abort requests
    [SCSI] zfcp: Fix wka port processing
    [SCSI] zfcp: avoid double notify in lowmem scenario
    [SCSI] zfcp: Add port only once to FC transport class
    [SCSI] zfcp: Recover from stalled outbound queue
    [SCSI] zfcp: Fix erp escalation procedure
    [SCSI] zfcp: Fix logic for physical port close
    [SCSI] zfcp: Use -EIO for SBAL allocation failures
    [SCSI] zfcp: Use unchained mode for small ct and els requests
    [SCSI] zfcp: Use correct flags for zfcp_erp_notify
    [SCSI] zfcp: Return -ENOMEM for allocation failures in zfcp_fsf
    ...

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp:
    amd64_edac: print debug statements only on error
    amd64_edac: fix ECC checking

    Linus Torvalds
     
  • * 'drm-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/airlied/drm-2.6:
    drm/ttm: Read buffer overflow
    drm/radeon: Read buffer overflow
    drm/ttm: Fix a sync object leak.
    drm/radeon/kms: fix memory leak in radeon_driver_load_kms
    drm/radeon/kms: fix nomodeset.
    drm/ttm: Fix a potential comparison of structs.
    drm/radeon/kms: fix rv515 VRAM initialisation.
    drm/radeon: add some new r7xx pci ids
    drm: Catch stop possible NULL pointer reference
    drm: Small logic fix in drm_mode_setcrtc

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/deller/parisc-2.6:
    parisc: hppb.c - fix printk format strings
    parisc: parisc-agp.c - use correct page_mask function
    parisc: sticore.c - check return values
    parisc: dino.c - check return value of pci_assign_resource()
    parisc: hp_sdc_mlc.c - check return value of down_trylock()
    parisc: includecheck fix for ccio-dma.c
    parisc: Set correct bit in protection flags
    parisc: isa-eeprom - Fix loff_t usage
    parisc: fixed faulty check in lba_pci
    parisc: Fix read buffer overflow in pdc_stable driver
    parisc: Fix GOT overflow during module load on 64bit kernel

    Linus Torvalds
     
  • flex_array_get() calculates an index value, then drops it on the floor;
    simply remove it.

    Signed-off-by: Jonathan Corbet
    Acked-by: Dave Hansen
    Signed-off-by: Linus Torvalds

    Jonathan Corbet
     
  • …x/kernel/git/tip/linux-2.6-tip

    * 'perfcounters-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    perf_counter: Set the CONFIG_PERF_COUNTERS default to y if CONFIG_PROFILING=y
    perf: Fix read buffer overflow
    perf top: Add mwait_idle_with_hints to skip_symbols[]
    perf tools: Fix faulty check
    perf report: Update for the new FORK/EXIT events
    perf_counter: Full task tracing
    perf_counter: Collapse inherit on read()
    tracing, perf_counter: Add help text to CONFIG_EVENT_PROFILE
    perf_counter tools: Fix link errors with older toolchains

    Linus Torvalds
     
  • …l/git/tip/linux-2.6-tip

    * 'sched-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    sched: Fix race in cpupri introduced by cpumask_var changes
    sched: Fix latencytop and sleep profiling vs group scheduling

    Linus Torvalds
     
  • …el/git/tip/linux-2.6-tip

    * 'timers-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    posix-timers: Fix oops in clock_nanosleep() with CLOCK_MONOTONIC_RAW

    Linus Torvalds
     
  • …nel/git/tip/linux-2.6-tip

    * 'tracing-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    tracing: Fix missing function_graph events when we splice_read from trace_pipe
    tracing: Fix invalid function_graph entry
    trace: stop tracer in oops_enter()
    ftrace: Only update $offset when we update $ref_func
    ftrace: Fix the conditional that updates $ref_func
    tracing: only truncate ftrace files when O_TRUNC is set
    tracing: show proper address for trace-printk format

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/sameo/mfd-2.6:
    mfd: twl4030 irq fixes

    Linus Torvalds
     
  • …git/tip/linux-2.6-tip

    * 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
    x86: Work around compilation warning in arch/x86/kernel/apm_32.c
    x86, UV: Complete IRQ interrupt migration in arch_enable_uv_irq()
    x86, 32-bit: Fix double accounting in reserve_top_address()
    x86: Don't use current_cpu_data in x2apic phys_pkg_id
    x86, UV: Fix UV apic mode
    x86, UV: Fix macros for accessing large node numbers
    x86, UV: Delete mapping of MMR rangs mapped by BIOS
    x86, UV: Handle missing blade-local memory correctly
    x86: fix assembly constraints in native_save_fl()
    x86, msr: execute on the correct CPU subset
    x86: Fix assert syntax in vmlinux.lds.S
    x86: Make 64-bit efi_ioremap use ioremap on MMIO regions
    x86: Add quirk to make Apple MacBook5,2 use reboot=pci
    x86: Fix CPA memtype reserving in the set_pages_array*() cases
    x86, pat: Fix set_memory_wc related corruption
    x86: fix section mismatch for i386 init code

    Linus Torvalds
     
  • * 'fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/davej/cpufreq:
    [CPUFREQ] Make cpufreq suspend code conditional on powerpc.
    [CPUFREQ] Fix a kobject reference bug related to managed CPUs
    [CPUFREQ] Do not set policy for offline cpus
    [CPUFREQ] Fix NULL pointer dereference regression in conservative governor

    Linus Torvalds
     
  • * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ryusuke/nilfs2:
    nilfs2: fix missing unlock in error path of nilfs_mdt_write_page
    nilfs2: fix oops due to inconsistent state in page with discrete b-tree nodes

    Linus Torvalds
     
  • * git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6:
    [CIFS] Update readme to reflect forceuid mount parms
    cifs: Read buffer overflow
    cifs: show noforceuid/noforcegid mount options (try #2)
    cifs: reinstate original behavior when uid=/gid= options are specified
    [CIFS] Updates fs/cifs/CHANGES
    cifs: fix error handling in mount-time DFS referral chasing code

    Linus Torvalds
     
  • Use 'atomic_dec_and_lock()' to make sure that we always hold the
    tty_ldisc_lock when the ldisc count goes to zero. That way we can never
    race against 'tty_ldisc_try()' increasing the count again.

    Reported-by: OGAWA Hirofumi
    Signed-off-by: Linus Torvalds
    Tested-by: Sergey Senozhatsky
    Signed-off-by: Greg Kroah-Hartman

    Linus Torvalds
     
  • By using the user count for the actual lifetime rules, we can get rid of
    the silly "wait_for_idle" logic, because any busy ldisc will
    automatically stay around until the last user releases it. This avoids
    a host of odd issues, and simplifies the code.

    So now, when the last ldisc reference is dropped, we just release the
    ldisc operations struct reference, and free the ldisc.

    It looks obvious enough, and it does work for me, but the counting
    _could_ be off. It probably isn't (bad counting in the new version would
    generally imply that the old code did something really bad, like free an
    ldisc with a non-zero count), but it does need some testing, and
    preferably somebody looking at it.

    With this change, both 'tty_ldisc_put()' and 'tty_ldisc_deref()' are
    just aliases for the new ref-counting 'put_ldisc()'. Both of them
    decrement the ldisc user count and free it if it goes down to zero.
    They're identical functions, in other words.

    But the reason they still exist as sepate functions is that one of them
    was exported (tty_ldisc_deref) and had a stupid name (so I don't want to
    use it as the main name), and the other one was used in multiple places
    (and I didn't want to make the patch larger just to rename the users).

    In addition to the refcounting, I did do some minimal cleanup. For
    example, now "tty_ldisc_try()" actually returns the ldisc it got under
    the lock, rather than returning true/false and then the caller would
    look up the ldisc again (now without the protection of the lock).

    That said, there's tons of dubious use of 'tty->ldisc' without obviously
    proper locking or refcounting left. I expressly did _not_ want to try to
    fix it all, keeping the patch minimal. There may or may not be bugs in
    that kind of code, but they wouldn't be _new_ bugs.

    That said, even if the bugs aren't new, the timing and lifetime will
    change. For example, some silly code may depend on the 'tty->ldisc'
    pointer not changing because they hold a refcount on the 'ldisc'. And
    that's no longer true - if you hold a ref on the ldisc, the 'ldisc'
    itself is safe, but tty->ldisc may change.

    So the proper locking (remains) to hold tty->ldisc_mutex if you expect
    tty->ldisc to be stable. That's not really a _new_ rule, but it's an
    example of something that the old code might have unintentionally
    depended on and hidden bugs.

    Whatever. The patch _looks_ sensible to me. The only users of
    ldisc->users are:
    - get_ldisc() - atomically increment the count

    - put_ldisc() - atomically decrements the count and releases if zero

    - tty_ldisc_try_get() - creates the ldisc, and sets the count to 1.
    The ldisc should then either be released, or be attached to a tty.

    Signed-off-by: Linus Torvalds
    Tested-by: OGAWA Hirofumi
    Tested-by: Sergey Senozhatsky
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Linus Torvalds
     
  • This is pure preparation of changing the ldisc reference counting to be
    a true refcount that defines the lifetime of the ldisc. But this is a
    purely syntactic change for now to make the next steps easier.

    This patch should make no semantic changes at all. But I wanted to make
    the ldisc refcount be an atomic (I will be touching it without locks
    soon enough), and I wanted to rename it so that there isn't quite as
    much confusion between 'ldo->refcount' (ldisk operations refcount) and
    'ld->refcount' (ldisc refcount itself) in the same file.

    So it's now an atomic 'ld->users' count. It still starts at zero,
    despite having a reference from 'tty->ldisc', but that will change once
    we turn it into a _real_ refcount.

    Signed-off-by: Linus Torvalds
    Tested-by: OGAWA Hirofumi
    Tested-by: Sergey Senozhatsky
    Acked-by: Alan Cox
    Signed-off-by: Greg Kroah-Hartman

    Linus Torvalds
     
  • …nce udev depends on BSG

    Make Block Layer SG support v4 the default, since recent udev versions
    depend on this to access serial numbers and other low level info properly.

    This should be backported to older kernels as well, since most distros have
    enabled this for a long time.

    Signed-off-by: John Stoffel <john@stoffel.org>
    Cc: stable@kernel.org
    Signed-off-by: Jens Axboe <jens.axboe@oracle.com>

    John Stoffel
     
  • This patch fixes the napi list handling when an ehea interface is shut
    down to avoid corruption of the napi list.

    Signed-off-by: Hannes Hering
    Signed-off-by: David S. Miller

    Hannes Hering
     
  • The VF driver was not correctly recognizing that it did not correctly set
    it's mac address. As a result the VF driver was unable to receive network
    traffic until being unloaded and reloaded. The issue was root caused to
    the fact that the CTS bit was not taken into account when checking for the
    request being NAKed.

    Signed-off-by: Alexander Duyck
    Signed-off-by: Jeff Kirsher
    Signed-off-by: David S. Miller

    Alexander Duyck
     
  • The suspend code runs with interrupts disabled, and the powerpc workaround we
    do in the cpufreq suspend hook calls the drivers ->get method.

    powernow-k8's ->get does an smp_call_function_single
    which needs interrupts enabled

    cpufreq's suspend/resume code was added in 42d4dc3f4e1e to work around
    a hardware problem on ppc powerbooks. If we make all this code
    conditional on powerpc, we avoid the issue above.

    Signed-off-by: Dave Jones

    Dave Jones
     
  • The first offline/online cycle is successful, the second not.
    Doing:
    echo 0 >cpu1/online
    echo 1 >cpu1/online
    echo 0 >cpu1/online

    The last command will trigger:
    Jul 22 14:39:50 linux kernel: [ 593.210125] ------------[ cut here ]------------
    Jul 22 14:39:50 linux kernel: [ 593.210139] WARNING: at lib/kref.c:43 kref_get+0x23/0x2b()
    Jul 22 14:39:50 linux kernel: [ 593.210144] Hardware name: To Be Filled By O.E.M.
    Jul 22 14:39:50 linux kernel: [ 593.210148] Modules linked in: powernow_k8
    Jul 22 14:39:50 linux kernel: [ 593.210158] Pid: 378, comm: kondemand/2 Tainted: G W 2.6.31-rc2 #38
    Jul 22 14:39:50 linux kernel: [ 593.210163] Call Trace:
    Jul 22 14:39:50 linux kernel: [ 593.210171] [] ? kref_get+0x23/0x2b
    Jul 22 14:39:50 linux kernel: [ 593.210181] [] warn_slowpath_common+0x77/0xa4
    Jul 22 14:39:50 linux kernel: [ 593.210190] [] warn_slowpath_null+0xf/0x11
    Jul 22 14:39:50 linux kernel: [ 593.210198] [] kref_get+0x23/0x2b
    Jul 22 14:39:50 linux kernel: [ 593.210206] [] kobject_get+0x1a/0x22
    Jul 22 14:39:50 linux kernel: [ 593.210214] [] cpufreq_cpu_get+0x8a/0xcb
    Jul 22 14:39:50 linux kernel: [ 593.210222] [] __cpufreq_driver_getavg+0x1d/0x67
    Jul 22 14:39:50 linux kernel: [ 593.210231] [] do_dbs_timer+0x158/0x27f
    Jul 22 14:39:50 linux kernel: [ 593.210240] [] worker_thread+0x200/0x313
    ...

    The output continues on every do_dbs_timer ondemand freq checking poll.
    This regression was introduced by git commit:
    3f4a782b5ce2698b1870b5a7b573cd721d4fce33

    The policy is released when the cpufreq device is removed in:
    __cpufreq_remove_dev():
    /* if this isn't the CPU which is the parent of the kobj, we
    * only need to unlink, put and exit
    */

    Not creating the symlink is not sever at all.
    As long as:
    sysfs_remove_link(&sys_dev->kobj, "cpufreq");
    handles it gracefully that the symlink did not exist.
    Possibly no error should be returned at all, because ondemand
    governor would still provide the same functionality.
    Userspace in userspace gov case might be confused if the link
    is missing.

    Resolves http://bugzilla.kernel.org/show_bug.cgi?id=13903

    CC: Mathieu Desnoyers
    CC: Venkatesh Pallipadi
    Signed-off-by: Thomas Renninger
    Signed-off-by: Dave Jones

    Thomas Renninger
     
  • Suspend/Resume fails on multi socket, multi core systems because the cpufreq
    code erroneously sets the per_cpu policy_cpu value when a logical cpu is
    offline.

    This most notably results in missing sysfs files that are used to set the
    cpu frequencies of the various cpus.

    Signed-off-by: Prarit Bhargava
    Signed-off-by: Dave Jones

    Prarit Bhargava
     
  • Commit ee88415caf736b89500f16e0a545614541a45005
    introduced this regression when it removed enable bit in cpu_dbs_info_s.
    That added a possibility of dbs_cpufreq_notifier getting called for a
    CPU that is not yet managed by conservative governor. That will happen
    as the transition notifier is set as soon as one CPU switches to
    conservative governor and other CPUs can get a NULL pointer dereference
    without the enable bit check. Add the enable bit back again.

    Reported-by: Lermytte Christophe
    Signed-off-by: Venkatesh Pallipadi
    Signed-off-by: Dave Jones

    Pallipadi, Venkatesh
     
  • The TWL4030 IRQ handler has a bug which leads to spinlock lock-up. It is
    calling the 'unmask' function in a process context. :The mask/unmask/ack
    functions are only designed to be called from the IRQ handler code,
    or the proper API interfaces found in linux/interrupt.h.

    Also there is no need to have IRQ chaining mechanism. The right way to
    handle this is to claim the parent interrupt as a standard interrupt
    and arrange for handle_twl4030_pih to take care of the rest of the devices.

    Mail thread on this issue can be found at:
    http://marc.info/?l=linux-arm-kernel&m=124629940123396&w=2

    Signed-off-by: Russell King
    Tested-by: Santosh Shilimkar
    Acked-by: Tony Lindgren
    Signed-off-by: Samuel Ortiz

    Russell King
     
  • If user has already enabled profiling support in the kernel
    (for oprofile, old-style profiling of ftrace) then offer up
    perfcounters with a y default in interactive kconfig sessions.

    Still keep it off by default otherwise.

    Cc: Peter Zijlstra
    Cc: Linus Torvalds
    Signed-off-by: Ingo Molnar

    Ingo Molnar
     

04 Aug, 2009

4 commits

  • The following fix was initially inspired by David Howells fix
    few days back:

    http://lkml.org/lkml/2009/7/9/109

    However, Ingo disapproves such fixes as it's dangerous (it can
    hide future, relevant warnings) - in something as
    performance-uncritical.

    So, initialize 'err' to '0' to work around a GCC false positive
    warning:

    http://lkml.org/lkml/2009/7/18/89

    Signed-off-by: Subrata Modak
    Cc: Sachin P Sant
    Cc: David Howells
    Cc: Balbir Singh
    Cc: Stephen Rothwell
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Subrata Modak
     
  • In uv_setup_irq(), the call to create_irq() initially assigns
    IRQ vectors to cpu 0. The subsequent call to
    assign_irq_vector() in arch_enable_uv_irq() migrates the IRQ to
    another cpu and frees the cpu 0 vector - at least it will be
    freed as soon as the "IRQ move" completes.

    arch_enable_uv_irq() needs to send a cleanup IPI to complete
    the IRQ move. Otherwise, assignment of GRU interrupts on large
    systems (>200 cpus) will exhaust the cpu 0 interrupt vectors
    and initialization of the GRU driver will fail.

    Signed-off-by: Jack Steiner
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Jack Steiner
     
  • With VMALLOC_END included in the calculation of MAXMEM (as of
    2.6.28) it is no longer correct to also bump __VMALLOC_RESERVE
    in reserve_top_address(). Doing so results in needlessly small
    lowmem.

    Signed-off-by: Jan Beulich
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Jan Beulich
     
  • One system has socket 1 come up as BSP.

    kexeced kernel reports BSP as:

    [ 1.524550] Initializing cgroup subsys cpuacct
    [ 1.536064] initial_apicid:20
    [ 1.537135] ht_mask_width:1
    [ 1.538128] core_select_mask:f
    [ 1.539126] core_plus_mask_width:5
    [ 1.558479] CPU: Physical Processor ID: 0
    [ 1.559501] CPU: Processor Core ID: 0
    [ 1.560539] CPU: L1 I cache: 32K, L1 D cache: 32K
    [ 1.579098] CPU: L2 cache: 256K
    [ 1.580085] CPU: L3 cache: 24576K
    [ 1.581108] CPU 0/0x20 -> Node 0
    [ 1.596193] CPU 0 microcode level: 0xffff0008

    It doesn't have correct physical processor id and will get an
    error:

    [ 38.840859] CPU0 attaching sched-domain:
    [ 38.848287] domain 0: span 0,8,72 level SIBLING
    [ 38.851151] groups: 0 8 72
    [ 38.858137] domain 1: span 0,8-15,72-79 level MC
    [ 38.868944] groups: 0,8,72 9,73 10,74 11,75 12,76 13,77 14,78 15,79
    [ 38.881383] ERROR: parent span is not a superset of domain->span
    [ 38.890724] domain 2: span 0-7,64-71 level CPU
    [ 38.899237] ERROR: domain->groups does not contain CPU0
    [ 38.909229] groups: 8-15,72-79
    [ 38.912547] ERROR: groups don't span domain->span
    [ 38.919665] domain 3: span 0-127 level NODE
    [ 38.930739] groups: 0-7,64-71 8-15,72-79 16-23,80-87 24-31,88-95 32-39,96-103 40-47,104-111 48-55,112-119 56-63,120-127

    it turns out: we can not use current_cpu_data in phys_pgd_id
    for x2apic.

    identify_boot_cpu() is called by check_bugs() before
    smp_prepare_cpus() and till smp_prepare_cpus() current_cpu_data
    for bsp is assigned with boot_cpu_data.

    Just make phys_pkg_id for x2apic is aligned to xapic.

    Signed-off-by: Yinghai Lu
    Acked-by: Suresh Siddha
    Cc: Andrew Morton
    LKML-Reference:
    Signed-off-by: Ingo Molnar

    Yinghai Lu