14 May, 2015

2 commits

  • Before xen_acpi_processor_enable() is called, struct acpi_processor *pr is
    allocated in xen_acpi_processor_add() and checked if it's NULL, so no need
    to check again when passed to xen_acpi_processor_enable(), just remove it.

    Signed-off-by: Hanjun Guo
    CC: Boris Ostrovsky
    CC: Stefano Stabellini
    Reviewed-by: Konrad Rzeszutek Wilk
    Signed-off-by: Rafael J. Wysocki

    Hanjun Guo
     
  • Use invalid_logical_cpuid(pr->id) instead of direct comparison.

    Signed-off-by: Hanjun Guo
    CC: Boris Ostrovsky
    CC: Stefano Stabellini
    Reviewed-by: Konrad Rzeszutek Wilk
    Signed-off-by: Rafael J. Wysocki

    Hanjun Guo
     

22 Feb, 2014

1 commit


07 Dec, 2013

2 commits

  • Conflicts:
    drivers/acpi/scan.c

    Rafael J. Wysocki
     
  • Replace direct inclusions of , and
    , which are incorrect, with
    inclusions and remove some inclusions of those files that aren't
    necessary.

    First of all, , and
    should not be included directly from any files that are built for
    CONFIG_ACPI unset, because that generally leads to build warnings about
    undefined symbols in !CONFIG_ACPI builds. For CONFIG_ACPI set,
    includes those files and for CONFIG_ACPI unset it
    provides stub ACPI symbols to be used in that case.

    Second, there are ordering dependencies between those files that always
    have to be met. Namely, it is required that be included
    prior to so that the acpi_pci_root declarations the
    latter depends on are always there. And which provides
    basic ACPICA type declarations should always be included prior to any other
    ACPI headers in CONFIG_ACPI builds. That also is taken care of including
    as appropriate.

    Signed-off-by: Lv Zheng
    Cc: Greg Kroah-Hartman
    Cc: Matthew Garrett
    Cc: Tony Luck
    Cc: "H. Peter Anvin"
    Acked-by: Bjorn Helgaas (drivers/pci stuff)
    Acked-by: Konrad Rzeszutek Wilk (Xen stuff)
    Signed-off-by: Rafael J. Wysocki

    Lv Zheng
     

23 Nov, 2013

1 commit

  • Modify the ACPI namespace scanning code to register a struct
    acpi_device object for every namespace node representing a device,
    processor and so on, even if the device represented by that namespace
    node is reported to be not present and not functional by _STA.

    There are multiple reasons to do that. First of all, it avoids
    quite a lot of overhead when struct acpi_device objects are
    deleted every time acpi_bus_trim() is run and then added again
    by a subsequent acpi_bus_scan() for the same scope, although the
    namespace objects they correspond to stay in memory all the time
    (which always is the case on a vast majority of systems).

    Second, it will allow user space to see that there are namespace
    nodes representing devices that are not present at the moment and may
    be added to the system. It will also allow user space to evaluate
    _SUN for those nodes to check what physical slots the "missing"
    devices may be put into and it will make sense to add a sysfs
    attribute for _STA evaluation after this change (that will be
    useful for thermal management on some systems).

    Next, it will help to consolidate the ACPI hotplug handling among
    subsystems by making it possible to store hotplug-related information
    in struct acpi_device objects in a standard common way.

    Finally, it will help to avoid a race condition related to the
    deletion of ACPI namespace nodes. Namely, namespace nodes may be
    deleted as a result of a table unload triggered by _EJ0 or _DCK.
    If a hotplug notification for one of those nodes is triggered
    right before the deletion and it executes a hotplug callback
    via acpi_hotplug_execute(), the ACPI handle passed to that
    callback may be stale when the callback actually runs. One way
    to work around that is to always pass struct acpi_device pointers
    to hotplug callbacks after doing a get_device() on the objects in
    question which eliminates the use-after-free possibility (the ACPI
    handles in those objects are invalidated by acpi_scan_drop_device(),
    so they will trigger ACPICA errors on attempts to use them).

    Signed-off-by: Rafael J. Wysocki
    Tested-by: Mika Westerberg

    Rafael J. Wysocki
     

15 Jul, 2013

1 commit

  • The __cpuinit type of throwaway sections might have made sense
    some time ago when RAM was more constrained, but now the savings
    do not offset the cost and complications. For example, the fix in
    commit 5e427ec2d0 ("x86: Fix bit corruption at CPU resume time")
    is a good example of the nasty type of bugs that can be created
    with improper use of the various __init prefixes.

    After a discussion on LKML[1] it was decided that cpuinit should go
    the way of devinit and be phased out. Once all the users are gone,
    we can then finally remove the macros themselves from linux/init.h.

    This removes all the remaining one-off uses of the __cpuinit macros
    from all C files in the drivers/* directory.

    [1] https://lkml.org/lkml/2013/5/20/589

    Cc: Greg Kroah-Hartman
    Acked-by: Greg Kroah-Hartman
    Signed-off-by: Paul Gortmaker

    Paul Gortmaker
     

28 Jun, 2013

1 commit

  • 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
     

25 Feb, 2013

2 commits

  • Recently at native Rafael did some cleanup for acpi, say, drop
    acpi_bus_add, remove unnecessary argument of acpi_bus_scan,
    and run acpi_bus_scan under acpi_scan_lock.

    This patch does similar cleanup for xen cpu hotplug, removing
    redundant logic, and adding lock.

    Signed-off-by: Liu Jinsong
    Signed-off-by: Konrad Rzeszutek Wilk

    Liu Jinsong
     
  • Pull Xen update from Konrad Rzeszutek Wilk:
    "This has two new ACPI drivers for Xen - a physical CPU offline/online
    and a memory hotplug. The way this works is that ACPI kicks the
    drivers and they make the appropiate hypercall to the hypervisor to
    tell it that there is a new CPU or memory. There also some changes to
    the Xen ARM ABIs and couple of fixes. One particularly nasty bug in
    the Xen PV spinlock code was fixed by Stefan Bader - and has been
    there since the 2.6.32!

    Features:
    - Xen ACPI memory and CPU hotplug drivers - allowing Xen hypervisor
    to be aware of new CPU and new DIMMs
    - Cleanups
    Bug-fixes:
    - Fixes a long-standing bug in the PV spinlock wherein we did not
    kick VCPUs that were in a tight loop.
    - Fixes in the error paths for the event channel machinery"

    Fix up a few semantic conflicts with the ACPI interface changes in
    drivers/xen/xen-acpi-{cpu,mem}hotplug.c.

    * tag 'stable/for-linus-3.9-rc0-tag' of git://git.kernel.org/pub/scm/linux/kernel/git/konrad/xen:
    xen: event channel arrays are xen_ulong_t and not unsigned long
    xen: Send spinlock IPI to all waiters
    xen: introduce xen_remap, use it instead of ioremap
    xen: close evtchn port if binding to irq fails
    xen-evtchn: correct comment and error output
    xen/tmem: Add missing %s in the printk statement.
    xen/acpi: move xen_acpi_get_pxm under CONFIG_XEN_DOM0
    xen/acpi: ACPI cpu hotplug
    xen/acpi: Move xen_acpi_get_pxm to Xen's acpi.h
    xen/stub: driver for CPU hotplug
    xen/acpi: ACPI memory hotplug
    xen/stub: driver for memory hotplug
    xen: implement updated XENMEM_add_to_physmap_range ABI
    xen/smp: Move the common CPU init code a bit to prep for PVH patch.

    Linus Torvalds
     

20 Feb, 2013

1 commit

  • This patch implement real Xen ACPI cpu hotplug driver as module.
    When loaded, it replaces Xen stub driver.

    For booting existed cpus, the driver enumerates them.
    For hotadded cpus, which added at runtime and notify OS via
    device or container event, the driver is invoked to add them,
    parsing cpu information, hypercalling to Xen hypervisor to add
    them, and finally setting up new /sys interface for them.

    Signed-off-by: Liu Jinsong
    Signed-off-by: Konrad Rzeszutek Wilk

    Liu Jinsong