28 Jun, 2013

2 commits

  • Convert printks to pr_ (excludes printk(KERN_DEBUG...)
    to be more consistent throughout the xen subsystem.

    Add pr_fmt with KBUILD_MODNAME or "xen:" KBUILD_MODNAME
    Coalesce formats and add missing word spaces
    Add missing newlines
    Align arguments and reflow to 80 columns
    Remove DRV_NAME from formats as pr_fmt adds the same content

    This does change some of the prefixes of these messages
    but it also does make them more consistent.

    Signed-off-by: Joe Perches
    Signed-off-by: Konrad Rzeszutek Wilk

    Joe Perches
     
  • xen_hvm_post_suspend, xen_pre_suspend, xen_post_suspend are only used if
    CONFIG_HIBERNATE_CALLBACKS is defined, resulting in:

    drivers/xen/manage.c:46:13: warning: ‘xen_hvm_post_suspend’ defined but not used [-Wunused-function]
    drivers/xen/manage.c:52:13: warning: ‘xen_pre_suspend’ defined but not used [-Wunused-function]
    drivers/xen/manage.c:59:13: warning: ‘xen_post_suspend’ defined but not used [-Wunused-function]

    If the kernel config is missing CONFIG_HIBERNATE_CALLBACKS.

    Simply ifdef CONFIG_HIBERNATE_CALLBACKS the three functions.

    Signed-off-by: Stefano Stabellini
    Signed-off-by: Konrad Rzeszutek Wilk

    Stefano Stabellini
     

15 Jun, 2013

1 commit

  • There are two tool-stack that can instruct the Xen PCI frontend
    and backend to change states: 'xm' (Python code with a daemon),
    and 'xl' (C library - does not keep state changes).

    With the 'xm', the path to disconnect a single PCI device (xm pci-detach
    ) is:

    4(Connected)->7(Reconfiguring*)-> 8(Reconfigured)-> 4(Connected)->5(Closing*).

    The * is for states that the tool-stack sets. For 'xl', it is similar:

    4(Connected)->7(Reconfiguring*)-> 8(Reconfigured)-> 4(Connected)

    Both of them also tear down the XenBus structure, so the backend
    state ends up going in the 3(Initialised) and calls pcifront_xenbus_remove.

    When a PCI device is plugged back in (xm pci-attach )
    both of them follow the same pattern:

    2(InitWait*), 3(Initialized*), 4(Connected*)->4(Connected).

    [xen-pcifront ignores the 2,3 state changes and only acts when
    4 (Connected) has been reached]

    Note that this is for a _single_ PCI device. If there were two
    PCI devices and only one was disconnected 'xm' would show the same
    state changes.

    The problem is that git commit 3d925320e9e2de162bd138bf97816bda8c3f71be
    ("xen/pcifront: Use Xen-SWIOTLB when initting if required") introduced
    a mechanism to initialize the SWIOTLB when the Xen PCI front moves to
    Connected state. It also had some aggressive seatbelt code check that
    would warn the user if one tried to change to Connected state without
    hitting first the Closing state:

    pcifront pci-0: PCI frontend already installed!

    However, that code can be relaxed and we can continue on working
    even if the frontend is instructed to be the 'Connected' state with
    no devices and then gets tickled to be in 'Connected' state again.

    In other words, this 4(Connected)->5(Closing)->4(Connected) state
    was expected, while 4(Connected)->.... anything but 5(Closing)->4(Connected)
    was not. This patch removes that aggressive check and allows
    Xen pcifront to work with the 'xl' toolstack (for one or more
    PCI devices) and with 'xm' toolstack (for more than two PCI
    devices).

    Acked-by: Bjorn Helgaas
    Cc: linux-pci@vger.kernel.org
    Cc: stable@vger.kernel.org
    [v2: Added in the description about two PCI devices]
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     

10 Jun, 2013

10 commits

  • If the per-cpu time data structure has been onlined already and
    we are trying to online it again, then free the previous copy
    before blindly over-writting it.

    A developer naturally should not call this function multiple times
    but just in case.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • We don't check whether the per_cpu data structure has actually
    been freed in the past. This checks it and if it has been freed
    in the past then just continues on without double-freeing.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • When the user does:
    echo 0 > /sys/devices/system/cpu/cpu1/online
    echo 1 > /sys/devices/system/cpu/cpu1/online

    kmemleak reports:
    kmemleak: 7 new suspected memory leaks (see /sys/kernel/debug/kmemleak)

    One of the leaks is from xen/time:

    unreferenced object 0xffff88003fa51280 (size 32):
    comm "swapper/0", pid 1, jiffies 4294667339 (age 1027.789s)
    hex dump (first 32 bytes):
    74 69 6d 65 72 31 00 00 00 00 00 00 00 00 00 00 timer1..........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    backtrace:
    [] kmemleak_alloc+0x21/0x50
    [] __kmalloc_track_caller+0xec/0x2a0
    [] kvasprintf+0x5b/0x90
    [] kasprintf+0x38/0x40
    [] xen_setup_timer+0x51/0xf0
    [] xen_cpu_up+0x5f/0x3e8
    [] _cpu_up+0xd1/0x14b
    [] cpu_up+0xd9/0xec
    [] smp_init+0x4b/0xa3
    [] kernel_init_freeable+0xdb/0x1e6
    [] kernel_init+0x9/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] 0xffffffffffffffff

    This patch fixes it by stashing away the 'name' in the per-cpu
    data structure and freeing it when offlining the CPU.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • We don't do any code movement. We just encapsulate the struct clock_event_device
    in a new structure which contains said structure and a pointer to
    a char *name. The 'name' will be used in 'xen/time: Don't leak interrupt
    name when offlining'.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • When the user does:
    echo 0 > /sys/devices/system/cpu/cpu1/online
    echo 1 > /sys/devices/system/cpu/cpu1/online

    kmemleak reports:
    kmemleak: 7 new suspected memory leaks (see /sys/kernel/debug/kmemleak)

    unreferenced object 0xffff88003fa51260 (size 32):
    comm "swapper/0", pid 1, jiffies 4294667339 (age 1027.789s)
    hex dump (first 32 bytes):
    73 70 69 6e 6c 6f 63 6b 31 00 00 00 00 00 00 00 spinlock1.......
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    backtrace:
    [] kmemleak_alloc+0x21/0x50
    [] __kmalloc_track_caller+0xec/0x2a0
    [] kvasprintf+0x5b/0x90
    [] kasprintf+0x38/0x40
    [] xen_init_lock_cpu+0x61/0xbe
    [] xen_cpu_up+0x66/0x3e8
    [] _cpu_up+0xd1/0x14b
    [] cpu_up+0xd9/0xec
    [] smp_init+0x4b/0xa3
    [] kernel_init_freeable+0xdb/0x1e6
    [] kernel_init+0x9/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] 0xffffffffffffffff

    Instead of doing it like the "xen/smp: Don't leak interrupt name when offlining"
    patch did (which has a per-cpu structure which contains both the
    IRQ number and char*) we use a per-cpu pointers to a *char.

    The reason is that the "__this_cpu_read(lock_kicker_irq);" macro
    blows up with "__bad_size_call_parameter()" as the size of the
    returned structure is not within the parameters of what it expects
    and optimizes for.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • When the user does:
    echo 0 > /sys/devices/system/cpu/cpu1/online
    echo 1 > /sys/devices/system/cpu/cpu1/online

    kmemleak reports:
    kmemleak: 7 new suspected memory leaks (see /sys/kernel/debug/kmemleak)

    unreferenced object 0xffff88003fa51240 (size 32):
    comm "swapper/0", pid 1, jiffies 4294667339 (age 1027.789s)
    hex dump (first 32 bytes):
    72 65 73 63 68 65 64 31 00 00 00 00 00 00 00 00 resched1........
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
    backtrace:
    [] kmemleak_alloc+0x21/0x50
    [] __kmalloc_track_caller+0xec/0x2a0
    [] kvasprintf+0x5b/0x90
    [] kasprintf+0x38/0x40
    [] xen_smp_intr_init+0x41/0x2c0
    [] xen_cpu_up+0x393/0x3e8
    [] _cpu_up+0xd1/0x14b
    [] cpu_up+0xd9/0xec
    [] smp_init+0x4b/0xa3
    [] kernel_init_freeable+0xdb/0x1e6
    [] kernel_init+0x9/0xf0
    [] ret_from_fork+0x7c/0xb0
    [] 0xffffffffffffffff

    This patch fixes some of it by using the 'struct xen_common_irq->name'
    field to stash away the char so that it can be freed when
    the interrupt line is destroyed.
    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • When we free it we want to make sure to set it to a default
    value of -1 so that we don't double-free it (in case somebody
    calls us twice).

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • This patch adds a new structure to contain the common two things
    that each of the per-cpu interrupts need:
    - an interrupt number,
    - and the name of the interrupt (to be added in 'xen/smp: Don't leak
    interrupt name when offlining').

    This allows us to carry the tuple of the per-cpu interrupt data structure
    and expand it as we need in the future.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • There are two functions that do a bunch of 'free_irq' on
    the per_cpu IRQ. Instead of having duplicate code just move
    it to one function.

    This is just code movement.

    Signed-off-by: Konrad Rzeszutek Wilk

    Konrad Rzeszutek Wilk
     
  • Fix to return -ENOENT in the pcistub_device_find() and pci_get_drvdata()
    error handling case instead of 0(overwrite to 0 by str_to_slot()), as done
    elsewhere in this function.

    Acked-by: Jan Beulich
    Signed-off-by: Wei Yongjun
    Signed-off-by: Konrad Rzeszutek Wilk

    Wei Yongjun
     

30 May, 2013

1 commit


29 May, 2013

4 commits

  • Signed-off-by: Jan Beulich
    Signed-off-by: Konrad Rzeszutek Wilk

    Jan Beulich
     
  • Commit f447d56d36af18c5104ff29dcb1327c0c0ac3634 introduced the
    implementation of the PV apic ipi interface. But there were some
    odd things (it seems none of which cause really any issue but
    maybe they should be cleaned up anyway):
    - xen_send_IPI_mask_allbutself (and by that xen_send_IPI_allbutself)
    ignore the passed in vector and only use the CALL_FUNCTION_SINGLE
    vector. While xen_send_IPI_all and xen_send_IPI_mask use the vector.
    - physflat_send_IPI_allbutself is declared unnecessarily. It is never
    used.

    This patch tries to clean up those things.

    Signed-off-by: Stefan Bader
    Signed-off-by: Konrad Rzeszutek Wilk

    Stefan Bader
     
  • Save the xenstore local status computed in xenbus_init. It can then be used
    later to check if xenstored is running in this domain.

    Signed-off-by: Aurelien Chartier
    [Changes in v4:
    - Change variable name to xen_store_domain_type]
    Reviewed-by: David Vrabel
    Signed-off-by: Konrad Rzeszutek Wilk

    Aurelien Chartier
     
  • If the xenbus frontend is located in a domain running xenstored, the device
    resume is hanging because it is happening before the process resume. This
    patch adds extra logic to the resume code to check if we are the domain
    running xenstored and delay the resume if needed.

    Signed-off-by: Aurelien Chartier
    [Changes in v2:
    - Instead of bypassing the resume, process it in a workqueue]
    [Changes in v3:
    - Add a struct work in xenbus_device to avoid dynamic allocation
    - Several small code fixes]
    [Changes in v4:
    - Use a dedicated workqueue]
    [Changes in v5:
    - Move create_workqueue error handling to xenbus_frontend_dev_resume]
    Acked-by: Jan Beulich
    Signed-off-by: Konrad Rzeszutek Wilk

    Aurelien Chartier
     

28 May, 2013

1 commit

  • In the (not so useful) kernel configuration where CONFIG_SWAP
    is undefined and CONFIG_XEN_SELFBALLOONING is defined,
    xen_tmem_init would use undefined variable 'static bool frontswap'.

    Added #else to have #define frontswap (0) in the case where
    CONFIG_FRONTSWAP is not defined.

    Signed-off-by: Frederico Cadete
    Signed-off-by: Konrad Rzeszutek Wilk

    Frederico Cadete
     

21 May, 2013

3 commits


15 May, 2013

11 commits


12 May, 2013

6 commits

  • Linus Torvalds
     
  • Pull tracing/kprobes update from Steven Rostedt:
    "The majority of these changes are from Masami Hiramatsu bringing
    kprobes up to par with the latest changes to ftrace (multi buffering
    and the new function probes).

    He also discovered and fixed some bugs in doing so. When pulling in
    his patches, I also found a few minor bugs as well and fixed them.

    This also includes a compile fix for some archs that select the ring
    buffer but not tracing.

    I based this off of the last patch you took from me that fixed the
    merge conflict error, as that was the commit that had all the changes
    I needed for this set of changes."

    * tag 'trace-fixes-v3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace:
    tracing/kprobes: Support soft-mode disabling
    tracing/kprobes: Support ftrace_event_file base multibuffer
    tracing/kprobes: Pass trace_probe directly from dispatcher
    tracing/kprobes: Increment probe hit-count even if it is used by perf
    tracing/kprobes: Use bool for retprobe checker
    ftrace: Fix function probe when more than one probe is added
    ftrace: Fix the output of enabled_functions debug file
    ftrace: Fix locking in register_ftrace_function_probe()
    tracing: Add helper function trace_create_new_event() to remove duplicate code
    tracing: Modify soft-mode only if there's no other referrer
    tracing: Indicate enabled soft-mode in enable file
    tracing/kprobes: Fix to increment return event probe hit-count
    ftrace: Cleanup regex_lock and ftrace_lock around hash updating
    ftrace, kprobes: Fix a deadlock on ftrace_regex_lock
    ftrace: Have ftrace_regex_write() return either read or error
    tracing: Return error if register_ftrace_function_probe() fails for event_enable_func()
    tracing: Don't succeed if event_enable_func did not register anything
    ring-buffer: Select IRQ_WORK

    Linus Torvalds
     
  • …nux/kernel/git/konrad/xen

    Pull Xen bug-fixes from Konrad Rzeszutek Wilk:
    - More fixes in the vCPU PVHVM hotplug path.
    - Add more documentation.
    - Fix various ARM related issues in the Xen generic drivers.
    - Updates in the xen-pciback driver per Bjorn's updates.
    - Mask the x2APIC feature for PV guests.

    * tag 'stable/for-linus-3.10-rc0-tag-two' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen/pci: Used cached MSI-X capability offset
    xen/pci: Use PCI_MSIX_TABLE_BIR, not PCI_MSIX_FLAGS_BIRMASK
    xen: clear IRQ_NOAUTOEN and IRQ_NOREQUEST
    xen: mask x2APIC feature in PV
    xen: SWIOTLB is only used on x86
    xen/spinlock: Fix check from greater than to be also be greater or equal to.
    xen/smp/pvhvm: Don't point per_cpu(xen_vpcu, 33 and larger) to shared_info
    xen/vcpu: Document the xen_vcpu_info and xen_vcpu
    xen/vcpu/pvhvm: Fix vcpu hotplugging hanging.

    Linus Torvalds
     
  • Pull second SCSI update from James "Jaj B" Bottomley:
    "This is the final round of SCSI patches for the merge window. It
    consists mostly of driver updates (bnx2fc, ibmfc, fnic, lpfc,
    be2iscsi, pm80xx, qla4x and ipr).

    There's also the power management updates that complete the patches in
    Jens' tree, an iscsi refcounting problem fix from the last pull, some
    dif handling in scsi_debug fixes, a few nice code cleanups and an
    error handling busy bug fix."

    * tag 'scsi-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jejb/scsi: (92 commits)
    [SCSI] qla2xxx: Update firmware link in Kconfig file.
    [SCSI] iscsi class, qla4xxx: fix sess/conn refcounting when find fns are used
    [SCSI] sas: unify the pointlessly separated enums sas_dev_type and sas_device_type
    [SCSI] pm80xx: thermal, sas controller config and error handling update
    [SCSI] pm80xx: NCQ error handling changes
    [SCSI] pm80xx: WWN Modification for PM8081/88/89 controllers
    [SCSI] pm80xx: Changed module name and debug messages update
    [SCSI] pm80xx: Firmware flash memory free fix, with addition of new memory region for it
    [SCSI] pm80xx: SPC new firmware changes for device id 0x8081 alone
    [SCSI] pm80xx: Added SPCv/ve specific hardware functionalities and relevant changes in common files
    [SCSI] pm80xx: MSI-X implementation for using 64 interrupts
    [SCSI] pm80xx: Updated common functions common for SPC and SPCv/ve
    [SCSI] pm80xx: Multiple inbound/outbound queue configuration
    [SCSI] pm80xx: Added SPCv/ve specific ids, variables and modify for SPC
    [SCSI] lpfc: fix up Kconfig dependencies
    [SCSI] Handle MLQUEUE busy response in scsi_send_eh_cmnd
    [SCSI] sd: change to auto suspend mode
    [SCSI] sd: use REQ_PM in sd's runtime suspend operation
    [SCSI] qla4xxx: Fix iocb_cnt calculation in qla4xxx_send_mbox_iocb()
    [SCSI] ufs: Correct the expected data transfersize
    ...

    Linus Torvalds
     
  • Pull idle update from Len Brown:
    "Add support for new Haswell-ULT CPU idle power states"

    * 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux:
    intel_idle: initial C8, C9, C10 support
    tools/power turbostat: display C8, C9, C10 residency

    Linus Torvalds
     
  • Pull audit changes from Eric Paris:
    "Al used to send pull requests every couple of years but he told me to
    just start pushing them to you directly.

    Our touching outside of core audit code is pretty straight forward. A
    couple of interface changes which hit net/. A simple argument bug
    calling audit functions in namei.c and the removal of some assembly
    branch prediction code on ppc"

    * git://git.infradead.org/users/eparis/audit: (31 commits)
    audit: fix message spacing printing auid
    Revert "audit: move kaudit thread start from auditd registration to kaudit init"
    audit: vfs: fix audit_inode call in O_CREAT case of do_last
    audit: Make testing for a valid loginuid explicit.
    audit: fix event coverage of AUDIT_ANOM_LINK
    audit: use spin_lock in audit_receive_msg to process tty logging
    audit: do not needlessly take a lock in tty_audit_exit
    audit: do not needlessly take a spinlock in copy_signal
    audit: add an option to control logging of passwords with pam_tty_audit
    audit: use spin_lock_irqsave/restore in audit tty code
    helper for some session id stuff
    audit: use a consistent audit helper to log lsm information
    audit: push loginuid and sessionid processing down
    audit: stop pushing loginid, uid, sessionid as arguments
    audit: remove the old depricated kernel interface
    audit: make validity checking generic
    audit: allow checking the type of audit message in the user filter
    audit: fix build break when AUDIT_DEBUG == 2
    audit: remove duplicate export of audit_enabled
    Audit: do not print error when LSMs disabled
    ...

    Linus Torvalds
     

11 May, 2013

1 commit

  • Pull nfsd fixes from Bruce Fields:
    "Small fixes for two bugs and two warnings"

    * 'for-3.10' of git://linux-nfs.org/~bfields/linux:
    nfsd: fix oops when legacy_recdir_name_error is passed a -ENOENT error
    SUNRPC: fix decoding of optional gss-proxy xdr fields
    SUNRPC: Refactor gssx_dec_option_array() to kill uninitialized warning
    nfsd4: don't allow owner override on 4.1 CLAIM_FH opens

    Linus Torvalds