10 May, 2019

1 commit

  • Currently, the notifiers are called once for each CPU of the policy->cpus
    cpumask. It would be more optimal if the notifier can be called only
    once and all the relevant information be provided to it. Out of the 23
    drivers that register for the transition notifiers today, only 4 of them
    do per-cpu updates and the callback for the rest can be called only once
    for the policy without any impact.

    This would also avoid multiple function calls to the notifier callbacks
    and reduce multiple iterations of notifier core's code (which does
    locking as well).

    This patch adds pointer to the cpufreq policy to the struct
    cpufreq_freqs, so the notifier callback has all the information
    available to it with a single call. The five drivers which perform
    per-cpu updates are updated to use the cpufreq policy. The freqs->cpu
    field is redundant now and is removed.

    Acked-by: David S. Miller (sparc)
    Signed-off-by: Viresh Kumar
    Signed-off-by: Rafael J. Wysocki

    Viresh Kumar
     

19 Nov, 2018

2 commits


23 Oct, 2018

1 commit

  • The current VDSO patch mechanism has several problems:

    1) It assumes how gcc will emit a function, with a register
    window, an initial save instruction and then immediately
    the %tick read when compiling vread_tick().

    There is no such guarantees, code generation could change
    at any time, gcc could put a nop between the save and
    the %tick read, etc.

    So this is extremely fragile and would fail some day.

    2) It disallows us to properly inline vread_tick() into the callers
    and thus get the best possible code sequences.

    So fix this to patch properly, with location based annotations.

    We have to be careful because we cannot do it the way we do
    patches elsewhere in the kernel. Those use a sequence like:

    1:
    insn
    .section .whatever_patch, "ax"
    .word 1b
    replacement_insn
    .previous

    This is a dynamic shared object, so that .word cannot be resolved at
    build time, and thus cannot be used to execute the patches when the
    kernel initializes the images.

    Even trying to use label difference equations doesn't work in the
    above kind of scheme:

    1:
    insn
    .section .whatever_patch, "ax"
    .word . - 1b
    replacement_insn
    .previous

    The assembler complains that it cannot resolve that computation.
    The issue is that this is contained in an executable section.

    Borrow the sequence used by x86 alternatives, which is:

    1:
    insn
    .pushsection .whatever_patch, "a"
    .word . - 1b, . - 1f
    .popsection
    .pushsection .whatever_patch_replacements, "ax"
    1:
    replacement_insn
    .previous

    This works, allows us to inline vread_tick() as much as we like, and
    can be used for arbitrary kinds of VDSO patching in the future.

    Also, reverse the condition for patching. Most systems are %stick
    based, so if we only patch on %tick systems the patching code will
    get little or no testing.

    Signed-off-by: David S. Miller

    David S. Miller
     

31 Jul, 2018

1 commit

  • Code that was added to force gcc not to inline any function that isn't
    explicitly declared as inline uncovered that init_tick_ops() isn't
    marked as "__init". It is only called by __init functions and more
    importantly it too calls an __init function which would require it to be
    __init as well.

    Link: http://lkml.kernel.org/r/201806060444.hdHcKOBy%fengguang.wu@intel.com

    Reported-by: kbuild test robot
    Signed-off-by: Steven Rostedt (VMware)
    Signed-off-by: David S. Miller

    Steven Rostedt (VMware)
     

18 Nov, 2017

1 commit

  • Pull sparc updates from David Miller:

    1) Add missing cmpxchg64() for 32-bit sparc.

    2) Timer conversions from Allen Pais and Kees Cook.

    3) vDSO support, from Nagarathnam Muthusamy.

    4) Fix sparc64 huge page table walks based upon bug report by Al Viro,
    from Nitin Gupta.

    5) Optimized fls() for T4 and above, from Vijay Kumar.

    * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc:
    sparc64: Fix page table walk for PUD hugepages
    sparc64: Convert timers to user timer_setup()
    sparc64: convert mdesc_handle.refcnt from atomic_t to refcount_t
    sparc/led: Convert timers to use timer_setup()
    sparc64: Use sparc optimized fls and __fls for T4 and above
    sparc64: SPARC optimized __fls function
    sparc64: SPARC optimized fls function
    sparc64: Define SPARC default __fls function
    sparc64: Define SPARC default fls function
    vDSO for sparc
    sparc32: Add cmpxchg64().
    sbus: char: Move D7S_MINOR to include/linux/miscdevice.h
    sparc: time: Remove unneeded linux/miscdevice.h include
    sparc64: mmu_context: Add missing include files

    Linus Torvalds
     

15 Nov, 2017

1 commit

  • Following patch is based on work done by Nick Alcock on 64-bit vDSO for sparc
    in Oracle linux. I have extended it to include support for 32-bit vDSO for sparc
    on 64-bit kernel.

    vDSO for sparc is based on the X86 implementation. This patch
    provides vDSO support for both 64-bit and 32-bit programs on 64-bit kernel.
    vDSO will be disabled on 32-bit linux kernel on sparc.

    *) vclock_gettime.c contains all the vdso functions. Since data page is mapped
    before the vdso code page, the pointer to data page is got by subracting offset
    from an address in the vdso code page. The return address stored in
    %i7 is used for this purpose.
    *) During compilation, both 32-bit and 64-bit vdso images are compiled and are
    converted into raw bytes by vdso2c program to be ready for mapping into the
    process. 32-bit images are compiled only if CONFIG_COMPAT is enabled. vdso2c
    generates two files vdso-image-64.c and vdso-image-32.c which contains the
    respective vDSO image in C structure.
    *) During vdso initialization, required number of vdso pages are allocated and
    raw bytes are copied into the pages.
    *) During every exec, these pages are mapped into the process through
    arch_setup_additional_pages and the location of mapping is passed on to the
    process through aux vector AT_SYSINFO_EHDR which is used by glibc.
    *) A new update_vsyscall routine for sparc is added to keep the data page in
    vdso updated.
    *) As vDSO cannot contain dynamically relocatable references, a new version of
    cpu_relax is added for the use of vDSO.

    This change also requires a putback to glibc to use vDSO. For testing,
    programs planning to try vDSO can be compiled against the generated
    vdso(64/32).so in the source.

    Testing:

    ========
    [root@localhost ~]# cat vdso_test.c
    int main() {
    struct timespec tv_start, tv_end;
    struct timeval tv_tmp;
    int i;
    int count = 1 * 1000 * 10000;
    long long diff;

    clock_gettime(0, &tv_start);
    for (i = 0; i < count; i++)
    gettimeofday(&tv_tmp, NULL);
    clock_gettime(0, &tv_end);
    diff = (long long)(tv_end.tv_sec -
    tv_start.tv_sec)*(1*1000*1000*1000);
    diff += (tv_end.tv_nsec - tv_start.tv_nsec);
    printf("Start sec: %d\n", tv_start.tv_sec);
    printf("End sec : %d\n", tv_end.tv_sec);
    printf("%d cycles in %lld ns = %f ns/cycle\n", count, diff,
    (double)diff / (double)count);
    return 0;
    }

    [root@localhost ~]# cc vdso_test.c -o t32_without_fix -m32 -lrt
    [root@localhost ~]# ./t32_without_fix
    Start sec: 1502396130
    End sec : 1502396140
    10000000 cycles in 9565148528 ns = 956.514853 ns/cycle
    [root@localhost ~]# cc vdso_test.c -o t32_with_fix -m32 ./vdso32.so.dbg
    [root@localhost ~]# ./t32_with_fix
    Start sec: 1502396168
    End sec : 1502396169
    10000000 cycles in 798141262 ns = 79.814126 ns/cycle
    [root@localhost ~]# cc vdso_test.c -o t64_without_fix -m64 -lrt
    [root@localhost ~]# ./t64_without_fix
    Start sec: 1502396208
    End sec : 1502396218
    10000000 cycles in 9846091800 ns = 984.609180 ns/cycle
    [root@localhost ~]# cc vdso_test.c -o t64_with_fix -m64 ./vdso64.so.dbg
    [root@localhost ~]# ./t64_with_fix
    Start sec: 1502396257
    End sec : 1502396257
    10000000 cycles in 380984048 ns = 38.098405 ns/cycle

    V1 to V2 Changes:
    =================
    Added hot patching code to switch the read stick instruction to read
    tick instruction based on the hardware.

    V2 to V3 Changes:
    =================
    Merged latest changes from sparc-next and moved the initialization
    of clocksource_tick.archdata.vclock_mode to time_init_early. Disabled
    queued spinlock and rwlock configuration when simulating 32-bit config
    to compile 32-bit VDSO.

    V3 to V4 Changes:
    =================
    Hardcoded the page size as 8192 in linker script for both 64-bit and
    32-bit binaries. Removed unused variables in vdso2c.h. Added -mv8plus flag to
    Makefile to prevent the generation of relocation entries for __lshrdi3 in 32-bit
    vdso binary.

    Signed-off-by: Nick Alcock
    Signed-off-by: Nagarathnam Muthusamy
    Reviewed-by: Shannon Nelson
    Signed-off-by: David S. Miller

    Nagarathnam Muthusamy
     

02 Nov, 2017

1 commit

  • Many source files in the tree are missing licensing information, which
    makes it harder for compliance tools to determine the correct license.

    By default all files without license information are under the default
    license of the kernel, which is GPL version 2.

    Update the files which contain no license information with the 'GPL-2.0'
    SPDX license identifier. The SPDX identifier is a legally binding
    shorthand, which can be used instead of the full boiler plate text.

    This patch is based on work done by Thomas Gleixner and Kate Stewart and
    Philippe Ombredanne.

    How this work was done:

    Patches were generated and checked against linux-4.14-rc6 for a subset of
    the use cases:
    - file had no licensing information it it.
    - file was a */uapi/* one with no licensing information in it,
    - file was a */uapi/* one with existing licensing information,

    Further patches will be generated in subsequent months to fix up cases
    where non-standard license headers were used, and references to license
    had to be inferred by heuristics based on keywords.

    The analysis to determine which SPDX License Identifier to be applied to
    a file was done in a spreadsheet of side by side results from of the
    output of two independent scanners (ScanCode & Windriver) producing SPDX
    tag:value files created by Philippe Ombredanne. Philippe prepared the
    base worksheet, and did an initial spot review of a few 1000 files.

    The 4.13 kernel was the starting point of the analysis with 60,537 files
    assessed. Kate Stewart did a file by file comparison of the scanner
    results in the spreadsheet to determine which SPDX license identifier(s)
    to be applied to the file. She confirmed any determination that was not
    immediately clear with lawyers working with the Linux Foundation.

    Criteria used to select files for SPDX license identifier tagging was:
    - Files considered eligible had to be source code files.
    - Make and config files were included as candidates if they contained >5
    lines of source
    - File already had some variant of a license header in it (even if
    Reviewed-by: Philippe Ombredanne
    Reviewed-by: Thomas Gleixner
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

28 Sep, 2017

1 commit


26 Jun, 2017

1 commit

  • There is a typo in a comment that propagated into code:
    upa-portis instead of upa-portid

    This problem was detected by code inspection.

    Fixes: eea9833453bd ("sparc64: broken %tick frequency on spitfire cpus"
    Signed-off-by: Pavel Tatashin
    Reported-by: Steven Sistare
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     

15 Jun, 2017

2 commits

  • After early boot time stamps project the %tick frequency is detected
    incorrectly on spittfire cpus.

    We must use cpuid of boot cpu to find corresponding cpu node in OpenBoot,
    and extract clock-frequency property from there.

    Signed-off-by: Pavel Tatashin
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • We initialize time early, we must use prom interface instead of open
    firmware driver, which is not yet initialized.

    Also, use prom_getintdefault() instead of prom_getint() to be compatible
    with the code before early boot timestamps project.

    Signed-off-by: Pavel Tatashin
    Signed-off-by: David S. Miller

    Pavel Tatashin
     

13 Jun, 2017

7 commits

  • Replace read tick function pointers with the new hot-patched get_tick().
    This optimizes the performance of functions such as: sched_clock()

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • Add the new get_tick() function that is hot-patched during boot based on
    processor we are booting on.

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • In Linux it is possible to configure printk() to output timestamp next to
    every line. This is very useful to determine the slow parts of the boot
    process, and also to avoid regressions, as boot time is visiable to
    everyone.

    Also, there are scripts that change these time stamps to intervals.

    However, on larger machines these timestamps start appearing many seconds,
    and even minutes into the boot process. This patch gets stick-frequency
    property early from OpenBoot, and uses its value to initialize time stamps
    before the first printk() messages are printed.

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Shannon Nelson
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • This patch prepares the code for early boot time stamps by making it more
    modular.

    - init_tick_ops() to initialize struct sparc64_tick_ops
    - new sparc64_tick_ops operation get_frequency() which returns a
    frequency

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Bob Picco
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • In clock sched we now have three loads:
    - Function pointer
    - quotient for multiplication
    - offset

    However, it is possible to improve performance substantially, by
    guaranteeing that all three loads are from the same cacheline.

    By moving these three values first in sparc64_tick_ops, and by having
    tick_operations 64-byte aligned we guarantee this.

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Shannon Nelson
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • On most platforms, time is shown from the beginning of boot. This patch is
    adding offset to sched_clock() for SPARC, to also show time from 0.

    This means we will have one more load, but we saved one in an ealier patch.

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Bob Picco
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     
  • In timer_64.c tick functions are access via pointer (tick_ops), every time
    clock is read, there is one extra load to get to the function.

    This patch optimizes it, by accessing functions pointer from value.

    Current ched_clock():
    sethi %hi(0xb9b400), %g1
    ldx [ %g1 + 0x250 ], %g1 !
    ldx [ %g1 ], %g1
    call %g1
    nop
    sethi %hi(0xb9b400), %g1
    ldx [ %g1 + 0x300 ], %g1 !
    mulx %o0, %g1, %g1
    rett %i7 + 8
    srlx %g1, 0xa, %o0

    New sched_clock():
    sethi %hi(0xb9b400), %g1
    ldx [ %g1 + 0x340 ], %g1
    call %g1
    nop
    sethi %hi(0xb9b400), %g1
    ldx [ %g1 + 0x378 ], %g1
    mulx %o0, %g1, %g1
    rett %i7 + 8
    srlx %g1, 0xa, %o0

    Before three loads, now two loads.

    Signed-off-by: Pavel Tatashin
    Reviewed-by: Shannon Nelson
    Reviewed-by: Steven Sistare
    Signed-off-by: David S. Miller

    Pavel Tatashin
     

15 Apr, 2017

1 commit

  • In preparation for making the clockevents core NTP correction aware,
    all clockevent device drivers must set ->min_delta_ticks and
    ->max_delta_ticks rather than ->min_delta_ns and ->max_delta_ns: a
    clockevent device's rate is going to change dynamically and thus, the
    ratio of ns to ticks ceases to stay invariant.

    Make the sparc arch's clockevent drivers initialize these fields properly.

    This patch alone doesn't introduce any change in functionality as the
    clockevents core still looks exclusively at the (untouched) ->min_delta_ns
    and ->max_delta_ns. As soon as this has changed, a followup patch will
    purge the initialization of ->min_delta_ns and ->max_delta_ns from these
    drivers.

    Cc: Ingo Molnar
    Cc: Thomas Gleixner
    Cc: Daniel Lezcano
    Cc: Richard Cochran
    Cc: Prarit Bhargava
    Cc: Stephen Boyd
    Cc: "David S. Miller"
    Cc: sparclinux@vger.kernel.org
    Acked-by: David S. Miller
    Signed-off-by: Nicolai Stange
    Signed-off-by: John Stultz

    Nicolai Stange
     

25 Dec, 2016

2 commits


10 Aug, 2015

1 commit

  • Migrate sparc drivers to the new 'set-state' interface provided by
    clockevents core, the earlier 'set-mode' interface is marked obsolete
    now.

    This also enables us to implement callbacks for new states of clockevent
    devices, for example: ONESHOT_STOPPED.

    We weren't doing anything which switching to few clockevent modes and so
    their callbacks aren't implemented.

    Cc: "David S. Miller"
    Cc: sparclinux@vger.kernel.org
    Signed-off-by: Viresh Kumar
    Signed-off-by: Daniel Lezcano

    Viresh Kumar
     

25 Jun, 2015

1 commit


20 Oct, 2014

1 commit


27 Aug, 2014

1 commit

  • __get_cpu_var() is used for multiple purposes in the kernel source. One of
    them is address calculation via the form &__get_cpu_var(x). This calculates
    the address for the instance of the percpu variable of the current processor
    based on an offset.

    Other use cases are for storing and retrieving data from the current
    processors percpu area. __get_cpu_var() can be used as an lvalue when
    writing data or on the right side of an assignment.

    __get_cpu_var() is defined as :

    #define __get_cpu_var(var) (*this_cpu_ptr(&(var)))

    __get_cpu_var() always only does an address determination. However, store
    and retrieve operations could use a segment prefix (or global register on
    other platforms) to avoid the address calculation.

    this_cpu_write() and this_cpu_read() can directly take an offset into a
    percpu area and use optimized assembly code to read and write per cpu
    variables.

    This patch converts __get_cpu_var into either an explicit address
    calculation using this_cpu_ptr() or into a use of this_cpu operations that
    use the offset. Thereby address calculations are avoided and less registers
    are used when code is generated.

    At the end of the patch set all uses of __get_cpu_var have been removed so
    the macro is removed too.

    The patch set includes passes over all arches as well. Once these operations
    are used throughout then specialized macros can be defined in non -x86
    arches as well in order to optimize per cpu access by f.e. using a global
    register that may be set to the per cpu base.

    Transformations done to __get_cpu_var()

    1. Determine the address of the percpu instance of the current processor.

    DEFINE_PER_CPU(int, y);
    int *x = &__get_cpu_var(y);

    Converts to

    int *x = this_cpu_ptr(&y);

    2. Same as #1 but this time an array structure is involved.

    DEFINE_PER_CPU(int, y[20]);
    int *x = __get_cpu_var(y);

    Converts to

    int *x = this_cpu_ptr(y);

    3. Retrieve the content of the current processors instance of a per cpu
    variable.

    DEFINE_PER_CPU(int, y);
    int x = __get_cpu_var(y)

    Converts to

    int x = __this_cpu_read(y);

    4. Retrieve the content of a percpu struct

    DEFINE_PER_CPU(struct mystruct, y);
    struct mystruct x = __get_cpu_var(y);

    Converts to

    memcpy(&x, this_cpu_ptr(&y), sizeof(x));

    5. Assignment to a per cpu variable

    DEFINE_PER_CPU(int, y)
    __get_cpu_var(y) = x;

    Converts to

    __this_cpu_write(y, x);

    6. Increment/Decrement etc of a per cpu variable

    DEFINE_PER_CPU(int, y);
    __get_cpu_var(y)++

    Converts to

    __this_cpu_inc(y)

    Cc: sparclinux@vger.kernel.org
    Acked-by: David S. Miller
    Signed-off-by: Christoph Lameter
    Signed-off-by: Tejun Heo

    Christoph Lameter
     

02 Apr, 2014

1 commit

  • Pull ACPI and power management updates from Rafael Wysocki:
    "The majority of this material spent some time in linux-next, some of
    it even several weeks. There are a few relatively fresh commits in
    it, but they are mostly fixes and simple cleanups.

    ACPI took the lead this time, both in terms of the number of commits
    and the number of modified lines of code, cpufreq follows and there
    are a few changes in the PM core and in cpuidle too.

    A new feature that already got some LWN.net's attention is the device
    PM QoS extension allowing latency tolerance requirements to be
    propagated from leaf devices to their ancestors with hardware
    interfaces for specifying latency tolerance. That should help systems
    with hardware-driven power management to avoid going too far with it
    in cases when there are latency tolerance constraints.

    There also are some significant changes in the ACPI core related to
    the way in which hotplug notifications are handled. They affect PCI
    hotplug (ACPIPHP) and the ACPI dock station code too. The bottom line
    is that all those notification now go through the root notify handler
    and are propagated to the interested subsystems by means of callbacks
    instead of having to install a notify handler for each device object
    that we can potentially get hotplug notifications for.

    In addition to that ACPICA will now advertise "Windows 2013"
    compatibility for _OSI, because some systems out there don't work
    correctly if that is not done (some of them don't even boot).

    On the system suspend side of things, all of the device suspend and
    resume callbacks, except for ->prepare() and ->complete(), are now
    going to be executed asynchronously as that turns out to speed up
    system suspend and resume on some platforms quite significantly and we
    have a few more optimizations in that area.

    Apart from that, there are some new device IDs and fixes and cleanups
    all over. In particular, the system suspend and resume handling by
    cpufreq should be improved and the cpuidle menu governor should be a
    bit more robust now.

    Specifics:

    - Device PM QoS support for latency tolerance constraints on systems
    with hardware interfaces allowing such constraints to be specified.
    That is necessary to prevent hardware-driven power management from
    becoming overly aggressive on some systems and to prevent power
    management features leading to excessive latencies from being used
    in some cases.

    - Consolidation of the handling of ACPI hotplug notifications for
    device objects. This causes all device hotplug notifications to go
    through the root notify handler (that was executed for all of them
    anyway before) that propagates them to individual subsystems, if
    necessary, by executing callbacks provided by those subsystems
    (those callbacks are associated with struct acpi_device objects
    during device enumeration). As a result, the code in question
    becomes both smaller in size and more straightforward and all of
    those changes should not affect users.

    - ACPICA update, including fixes related to the handling of _PRT in
    cases when it is broken and the addition of "Windows 2013" to the
    list of supported "features" for _OSI (which is necessary to
    support systems that work incorrectly or don't even boot without
    it). Changes from Bob Moore and Lv Zheng.

    - Consolidation of ACPI _OST handling from Jiang Liu.

    - ACPI battery and AC fixes allowing unusual system configurations to
    be handled by that code from Alexander Mezin.

    - New device IDs for the ACPI LPSS driver from Chiau Ee Chew.

    - ACPI fan and thermal optimizations related to system suspend and
    resume from Aaron Lu.

    - Cleanups related to ACPI video from Jean Delvare.

    - Assorted ACPI fixes and cleanups from Al Stone, Hanjun Guo, Lan
    Tianyu, Paul Bolle, Tomasz Nowicki.

    - Intel RAPL (Running Average Power Limits) driver cleanups from
    Jacob Pan.

    - intel_pstate fixes and cleanups from Dirk Brandewie.

    - cpufreq fixes related to system suspend/resume handling from Viresh
    Kumar.

    - cpufreq core fixes and cleanups from Viresh Kumar, Stratos
    Karafotis, Saravana Kannan, Rashika Kheria, Joe Perches.

    - cpufreq drivers updates from Viresh Kumar, Zhuoyu Zhang, Rob
    Herring.

    - cpuidle fixes related to the menu governor from Tuukka Tikkanen.

    - cpuidle fix related to coupled CPUs handling from Paul Burton.

    - Asynchronous execution of all device suspend and resume callbacks,
    except for ->prepare and ->complete, during system suspend and
    resume from Chuansheng Liu.

    - Delayed resuming of runtime-suspended devices during system suspend
    for the PCI bus type and ACPI PM domain.

    - New set of PM helper routines to allow device runtime PM callbacks
    to be used during system suspend and resume more easily from Ulf
    Hansson.

    - Assorted fixes and cleanups in the PM core from Geert Uytterhoeven,
    Prabhakar Lad, Philipp Zabel, Rashika Kheria, Sebastian Capella.

    - devfreq fix from Saravana Kannan"

    * tag 'pm+acpi-3.15-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (162 commits)
    PM / devfreq: Rewrite devfreq_update_status() to fix multiple bugs
    PM / sleep: Correct whitespace errors in
    intel_pstate: Set core to min P state during core offline
    cpufreq: Add stop CPU callback to cpufreq_driver interface
    cpufreq: Remove unnecessary braces
    cpufreq: Fix checkpatch errors and warnings
    cpufreq: powerpc: add cpufreq transition latency for FSL e500mc SoCs
    MAINTAINERS: Reorder maintainer addresses for PM and ACPI
    PM / Runtime: Update runtime_idle() documentation for return value meaning
    video / output: Drop display output class support
    fujitsu-laptop: Drop unneeded include
    acer-wmi: Stop selecting VIDEO_OUTPUT_CONTROL
    ACPI / gpu / drm: Stop selecting VIDEO_OUTPUT_CONTROL
    ACPI / video: fix ACPI_VIDEO dependencies
    cpufreq: remove unused notifier: CPUFREQ_{SUSPENDCHANGE|RESUMECHANGE}
    cpufreq: Do not allow ->setpolicy drivers to provide ->target
    cpufreq: arm_big_little: set 'physical_cluster' for each CPU
    cpufreq: arm_big_little: make vexpress driver depend on bL core driver
    ACPI / button: Add ACPI Button event via netlink routine
    ACPI: Remove duplicate definitions of PREFIX
    ...

    Linus Torvalds
     

19 Mar, 2014

1 commit


05 Mar, 2014

1 commit


04 Jan, 2013

1 commit

  • CONFIG_HOTPLUG is going away as an option. As a result, the __dev*
    markings need to be removed.

    This change removes the use of __devinit, __devexit_p, __devinitdata,
    and __devexit from these drivers.

    Based on patches originally written by Bill Pemberton, but redone by me
    in order to handle some of the coding style issues better, by hand.

    Cc: Bill Pemberton
    Cc: "David S. Miller"
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     

01 Nov, 2011

1 commit


08 Jun, 2011

1 commit


31 Mar, 2011

1 commit

  • Fix all of the problems spotted by CONFIG_DEBUG_SECTION_MISMATCH under
    arch/sparc during a 64-bit defconfig build.

    They fall into two categorites:

    1) of_device_id is marked as __initdata, and we can never do this
    since these objects sit in the device core data structures way
    past boot. So even if a driver will never be reloaded, we have
    to keep the device ID table around.

    Mark such cases const instead.

    2) The bootmem alloc/free handling code in mdesc.c was not fully
    marked __init as it should be, thus generating a reference
    to free_bootmem_late() (which is __init) from non-__init code.

    Signed-off-by: David S. Miller

    David S. Miller
     

17 Mar, 2011

1 commit


28 Feb, 2011

1 commit


24 Jul, 2010

2 commits

  • of_device is just a #define alias to platform_device. This patch
    replaces all references to it with platform_device.

    Signed-off-by: Grant Likely
    Acked-by: David S. Miller

    Grant Likely
     
  • Both of_bus_type and of_platform_bus_type are just #define aliases
    for the platform bus. This patch removes all references to them and
    switches to the of_register_platform_driver()/of_unregister_platform_driver()
    API for registering.

    Subsequent patches will convert each user of of_register_platform_driver()
    into plain platform_drivers without the of_platform_driver shim. At which
    point the of_register_platform_driver()/of_unregister_platform_driver()
    functions can be removed.

    Signed-off-by: Grant Likely
    Acked-by: David S. Miller

    Grant Likely
     

22 May, 2010

1 commit

  • .name, .match_table and .owner are duplicated in both of_platform_driver
    and device_driver. This patch is a removes the extra copies from struct
    of_platform_driver and converts all users to the device_driver members.

    This patch is a pretty mechanical change. The usage model doesn't change
    and if any drivers have been missed, or if anything has been fixed up
    incorrectly, then it will fail with a compile time error, and the fixup
    will be trivial. This patch looks big and scary because it touches so
    many files, but it should be pretty safe.

    Signed-off-by: Grant Likely
    Acked-by: Sean MacLennan

    Grant Likely
     

19 May, 2010

1 commit


13 Apr, 2010

1 commit