1. 24 Oct, 2019 9 commits
    • Linus Torvalds's avatar
      Merge tag 'devicetree-fixes-for-5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux · 39a38bcb
      Linus Torvalds authored
      Pull Devicetree fixes from Rob Herring:
       "A couple more DT fixes for 5.4: fix a ref count, memory leak, and
        Risc-V cpu schema warnings"
      
      * tag 'devicetree-fixes-for-5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux:
        of: reserved_mem: add missing of_node_put() for proper ref-counting
        of: unittest: fix memory leak in unittest_data_add
        dt-bindings: riscv: Fix CPU schema errors
      39a38bcb
    • Linus Torvalds's avatar
      Merge tag 'acpi-5.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 7f65d354
      Linus Torvalds authored
      Pull ACPI fix from Rafael Wysocki:
       "Fix locking issue in the error code path of a function that belongs to
        the sysfs interface exposed by the ACPI NFIT handling code (Dan
        Carpenter)"
      
      * tag 'acpi-5.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        ACPI: NFIT: Fix unlock on error in scrub_show()
      7f65d354
    • Linus Torvalds's avatar
      Merge tag 'pm-5.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm · 5fa2845f
      Linus Torvalds authored
      Pull power management fixes from Rafael Wysocki:
       "These fix problems related to frequency limits management in cpufreq
        that were introduced during the 5.3 cycle (when PM QoS had started to
        be used for that), fix a few issues in the OPP (operating performance
        points) library code and fix up the recently added haltpoll cpuidle
        driver.
      
        The cpufreq changes are somewhat bigger that I would like them to be
        at this stage of the cycle, but the problems fixed by them include
        crashes on boot and shutdown in some cases (among other things) and in
        my view it is better to address the root of the issue right away.
      
        Specifics:
      
         - Using device PM QoS of CPU devices for managing frequency limits in
           cpufreq does not work, so introduce frequency QoS (based on the
           original low-level PM QoS) for this purpose, switch cpufreq and
           related code over to using it and fix a race involving deferred
           updates of frequency limits on top of that (Rafael Wysocki, Sudeep
           Holla).
      
         - Avoid calling regulator_enable()/disable() from the OPP framework
           to avoid side-effects on boot-enabled regulators that may change
           their initial voltage due to performing initial voltage balancing
           without all restrictions from the consumers (Marek Szyprowski).
      
         - Avoid a kref management issue in the OPP library code and drop an
           incorrectly added lockdep_assert_held() from it (Viresh Kumar).
      
         - Make the recently added haltpoll cpuidle driver take the 'idle='
           override into account as appropriate (Zhenzhong Duan)"
      
      * tag 'pm-5.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm:
        opp: Reinitialize the list_kref before adding the static OPPs again
        cpufreq: Cancel policy update work scheduled before freeing
        cpuidle: haltpoll: Take 'idle=' override into account
        opp: core: Revert "add regulators enable and disable"
        PM: QoS: Drop frequency QoS types from device PM QoS
        cpufreq: Use per-policy frequency QoS
        PM: QoS: Introduce frequency QoS
        opp: of: drop incorrect lockdep_assert_held()
      5fa2845f
    • Linus Torvalds's avatar
      Merge tag 'gfs2-v5.4-rc4.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2 · 65b15b7f
      Linus Torvalds authored
      Pull gfs2 fix from Andreas Gruenbacher:
       "Fix a memory leak introduced in -rc1"
      
      * tag 'gfs2-v5.4-rc4.fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/gfs2/linux-gfs2:
        gfs2: Fix memory leak when gfs2meta's fs_context is freed
      65b15b7f
    • Andrew Price's avatar
      gfs2: Fix memory leak when gfs2meta's fs_context is freed · 30aecae8
      Andrew Price authored
      gfs2 and gfs2meta share an ->init_fs_context function which allocates an
      args structure stored in fc->fs_private. gfs2 registers a ->free
      function to free this memory when the fs_context is cleaned up, but
      there was not one registered for gfs2meta, causing a leak.
      
      Register a ->free function for gfs2meta. The existing gfs2_fc_free
      function does what we need.
      
      Reported-by: syzbot+c2fdfd2b783754878fb6@syzkaller.appspotmail.com
      Fixes: 1f52aa08 ("gfs2: Convert gfs2 to fs_context")
      Signed-off-by: default avatarAndrew Price <anprice@redhat.com>
      Signed-off-by: default avatarBob Peterson <rpeterso@redhat.com>
      Signed-off-by: default avatarAndreas Gruenbacher <agruenba@redhat.com>
      30aecae8
    • Rafael J. Wysocki's avatar
      Merge branches 'pm-cpuidle' and 'pm-opp' · 767d2d71
      Rafael J. Wysocki authored
      * pm-cpuidle:
        cpuidle: haltpoll: Take 'idle=' override into account
      
      * pm-opp:
        opp: Reinitialize the list_kref before adding the static OPPs again
        opp: core: Revert "add regulators enable and disable"
        opp: of: drop incorrect lockdep_assert_held()
      767d2d71
    • Linus Torvalds's avatar
      Merge tag 'mfd-fixes-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd · f116b966
      Linus Torvalds authored
      Pull MFD fix from Lee Jones:
       "Fix broken support for BananaPi-r2"
      
      * tag 'mfd-fixes-5.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd:
        mfd: mt6397: Fix probe after changing mt6397-core
      f116b966
    • Linus Torvalds's avatar
      Merge tag 'sound-5.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound · f632bfaa
      Linus Torvalds authored
      Pull sound fixes from Takashi Iwai:
       "This is a usual small bump in the middle, we've got a set of ASoC
        fixes in this week as shown in diffstat.
      
        The only change in the core stuff is about (somewhat minor) PCM
        debugfs error handling. The major changes are rather for Intel SOF and
        topology coverage, as well as other platform (rockchip, samsung, stm)
        and codec fixes.
      
        As non-ASoC changes, a couple of new HD-audio chip fixes and a typo
        correction of USB-audio driver validation code are found"
      
      * tag 'sound-5.4-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (29 commits)
        ALSA: hda: Add Tigerlake/Jasperlake PCI ID
        ALSA: usb-audio: Fix copy&paste error in the validator
        ALSA: hda/realtek - Add support for ALC711
        ASoC: SOF: control: return true when kcontrol values change
        ASoC: stm32: sai: fix sysclk management on shutdown
        ASoC: Intel: sof-rt5682: add a check for devm_clk_get
        ASoC: rsnd: Reinitialize bit clock inversion flag for every format setting
        ASoC: simple_card_utils.h: Fix potential multiple redefinition error
        ASoC: msm8916-wcd-digital: add missing MIX2 path for RX1/2
        ASoC: core: Fix pcm code debugfs error
        ASoc: rockchip: i2s: Fix RPM imbalance
        ASoC: wm_adsp: Don't generate kcontrols without READ flags
        ASoC: intel: bytcr_rt5651: add null check to support_button_press
        ASoC: intel: sof_rt5682: add remove function to disable jack
        ASoC: rt5682: add NULL handler to set_jack function
        ASoC: intel: sof_rt5682: use separate route map for dmic
        ASoC: SOF: Intel: hda: Disable DMI L1 entry during capture
        ASoC: SOF: Intel: initialise and verify FW crash dump data.
        ASoC: SOF: Intel: hda: fix warnings during FW load
        ASoC: SOF: pcm: harden PCM STOP sequence
        ...
      f632bfaa
    • Frank Wunderlich's avatar
      mfd: mt6397: Fix probe after changing mt6397-core · 603d9299
      Frank Wunderlich authored
      Part 3 from this series [1] was not merged due to wrong splitting
      and breaks mt6323 pmic on bananapi-r2
      
      dmesg prints this line and at least switch is not initialized on bananapi-r2
      
      mt6397 1000d000.pwrap:mt6323: unsupported chip: 0x0
      
      this patch contains only the probe-changes and chip_data structs
      from original part 3 by Hsin-Hsiung Wang
      
      [1] https://patchwork.kernel.org/project/linux-mediatek/list/?series=164155
      
      Fixes: a4872e80 ("mfd: mt6397: Extract IRQ related code from core driver")
      Signed-off-by: default avatarFrank Wunderlich <frank-w@public-files.de>
      Signed-off-by: default avatarLee Jones <lee.jones@linaro.org>
      603d9299
  2. 23 Oct, 2019 12 commits
  3. 22 Oct, 2019 6 commits
    • Russell King's avatar
      Merge branch 'misc' into fixes · 39f4d441
      Russell King authored
      39f4d441
    • Sudeep Holla's avatar
      cpufreq: Cancel policy update work scheduled before freeing · 6941051d
      Sudeep Holla authored
      Scheduled policy update work may end up racing with the freeing of the
      policy and unregistering the driver.
      
      One possible race is as below, where the cpufreq_driver is unregistered,
      but the scheduled work gets executed at later stage when, cpufreq_driver
      is NULL (i.e. after freeing the policy and driver).
      
      Unable to handle kernel NULL pointer dereference at virtual address 0000001c
      pgd = (ptrval)
      [0000001c] *pgd=80000080204003, *pmd=00000000
      Internal error: Oops: 206 [#1] SMP THUMB2
      Modules linked in:
      CPU: 0 PID: 34 Comm: kworker/0:1 Not tainted 5.4.0-rc3-00006-g67f5a8081a4b #86
      Hardware name: ARM-Versatile Express
      Workqueue: events handle_update
      PC is at cpufreq_set_policy+0x58/0x228
      LR is at dev_pm_qos_read_value+0x77/0xac
      Control: 70c5387d  Table: 80203000  DAC: fffffffd
      Process kworker/0:1 (pid: 34, stack limit = 0x(ptrval))
      	(cpufreq_set_policy) from (refresh_frequency_limits.part.24+0x37/0x48)
      	(refresh_frequency_limits.part.24) from (handle_update+0x2f/0x38)
      	(handle_update) from (process_one_work+0x16d/0x3cc)
      	(process_one_work) from (worker_thread+0xff/0x414)
      	(worker_thread) from (kthread+0xff/0x100)
      	(kthread) from (ret_from_fork+0x11/0x28)
      
      Fixes: 67d874c3 ("cpufreq: Register notifiers with the PM QoS framework")
      Signed-off-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      [ rjw: Cancel the work before dropping the QoS requests ]
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      6941051d
    • Takashi Iwai's avatar
      ALSA: usb-audio: Fix copy&paste error in the validator · ba8bf096
      Takashi Iwai authored
      The recently introduced USB-audio descriptor validator had a stupid
      copy&paste error that may lead to an unexpected overlook of too short
      descriptors for processing and extension units.  It's likely the cause
      of the report triggered by syzkaller fuzzer.  Let's fix it.
      
      Fixes: 57f87706 ("ALSA: usb-audio: More validations of descriptor units")
      Reported-by: syzbot+0620f79a1978b1133fd7@syzkaller.appspotmail.com
      Link: https://lore.kernel.org/r/s5hsgnkdbsl.wl-tiwai@suse.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      ba8bf096
    • Linus Torvalds's avatar
      Merge tag 'pinctrl-v5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl · 3b7c59a1
      Linus Torvalds authored
      Pull pin control fixes from Linus Walleij:
       "Here is a bunch of pin control fixes. I was lagging behind on this
        one, some fixes should have come in earlier, sorry about that.
      
        Anyways here it is, pretty straight-forward fixes, the Strago fix
        stand out as something serious affecting a lot of machines.
      
        Summary:
         - Handle multiple instances of Intel chips without complaining.
         - Restore the Intel Strago DMI workaround
         - Make the Armada 37xx handle pins over 32
         - Fix the polarity of the LED group on Armada 37xx
         - Fix an off-by-one bug in the NS2 driver
         - Fix error path for iproc's platform_get_irq()
         - Fix error path on the STMFX driver
         - Fix a typo in the Berlin AS370 driver
         - Fix up misc errors in the Aspeed 2600 BMC support
         - Fix a stray SPDX tag"
      
      * tag 'pinctrl-v5.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl:
        pinctrl: aspeed-g6: Rename SD3 to EMMC and rework pin groups
        pinctrl: aspeed-g6: Fix UART13 group pinmux
        pinctrl: aspeed-g6: Make SIG_DESC_CLEAR() behave intuitively
        pinctrl: aspeed-g6: Fix I3C3/I3C4 pinmux configuration
        pinctrl: aspeed-g6: Fix I2C14 SDA description
        pinctrl: aspeed-g6: Sort pins for sanity
        dt-bindings: pinctrl: aspeed-g6: Rework SD3 function and groups
        pinctrl: berlin: as370: fix a typo s/spififib/spdifib
        pinctrl: armada-37xx: swap polarity on LED group
        pinctrl: stmfx: fix null pointer on remove
        pinctrl: iproc: allow for error from platform_get_irq()
        pinctrl: ns2: Fix off by one bugs in ns2_pinmux_enable()
        pinctrl: bcm-iproc: Use SPDX header
        pinctrl: armada-37xx: fix control of pins 32 and up
        pinctrl: cherryview: restore Strago DMI workaround for all versions
        pinctrl: intel: Allocate IRQ chip dynamic
      3b7c59a1
    • Zhenzhong Duan's avatar
      cpuidle: haltpoll: Take 'idle=' override into account · 31d85140
      Zhenzhong Duan authored
      Currenly haltpoll isn't aware of the 'idle=' override, the priority is
      'idle=poll' > haltpoll > 'idle=halt'. When 'idle=poll' is used, cpuidle
      driver is bypassed but current_driver in sys still shows 'haltpoll'.
      
      When 'idle=halt' is used, haltpoll takes precedence and makes
      'idle=halt' have no effect.
      
      Add a check to prevent the haltpoll driver from loading if 'idle=' is
      present.
      Signed-off-by: default avatarZhenzhong Duan <zhenzhong.duan@oracle.com>
      Co-developed-by: default avatarJoao Martins <joao.m.martins@oracle.com>
      [ rjw: Subject ]
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      31d85140
    • Dan Carpenter's avatar
      ACPI: NFIT: Fix unlock on error in scrub_show() · edffc70f
      Dan Carpenter authored
      We change the locking in this function and forgot to update this error
      path so we are accidentally still holding the "dev->lockdep_mutex".
      
      Fixes: 87a30e1f ("driver-core, libnvdimm: Let device subsystems add local lockdep coverage")
      Signed-off-by: default avatarDan Carpenter <dan.carpenter@oracle.com>
      Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
      Acked-by: default avatarDan Williams <dan.j.williams@intel.com>
      Cc: 5.3+ <stable@vger.kernel.org> # 5.3+
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      edffc70f
  4. 21 Oct, 2019 8 commits
    • Prateek Sood's avatar
      tracing: Fix race in perf_trace_buf initialization · 6b1340cc
      Prateek Sood authored
      A race condition exists while initialiazing perf_trace_buf from
      perf_trace_init() and perf_kprobe_init().
      
            CPU0                                        CPU1
      perf_trace_init()
        mutex_lock(&event_mutex)
          perf_trace_event_init()
            perf_trace_event_reg()
              total_ref_count == 0
      	buf = alloc_percpu()
              perf_trace_buf[i] = buf
              tp_event->class->reg() //fails       perf_kprobe_init()
      	goto fail                              perf_trace_event_init()
                                                       perf_trace_event_reg()
              fail:
      	  total_ref_count == 0
      
                                                         total_ref_count == 0
                                                         buf = alloc_percpu()
                                                         perf_trace_buf[i] = buf
                                                         tp_event->class->reg()
                                                         total_ref_count++
      
                free_percpu(perf_trace_buf[i])
                perf_trace_buf[i] = NULL
      
      Any subsequent call to perf_trace_event_reg() will observe total_ref_count > 0,
      causing the perf_trace_buf to be always NULL. This can result in perf_trace_buf
      getting accessed from perf_trace_buf_alloc() without being initialized. Acquiring
      event_mutex in perf_kprobe_init() before calling perf_trace_event_init() should
      fix this race.
      
      The race caused the following bug:
      
       Unable to handle kernel paging request at virtual address 0000003106f2003c
       Mem abort info:
         ESR = 0x96000045
         Exception class = DABT (current EL), IL = 32 bits
         SET = 0, FnV = 0
         EA = 0, S1PTW = 0
       Data abort info:
         ISV = 0, ISS = 0x00000045
         CM = 0, WnR = 1
       user pgtable: 4k pages, 39-bit VAs, pgdp = ffffffc034b9b000
       [0000003106f2003c] pgd=0000000000000000, pud=0000000000000000
       Internal error: Oops: 96000045 [#1] PREEMPT SMP
       Process syz-executor (pid: 18393, stack limit = 0xffffffc093190000)
       pstate: 80400005 (Nzcv daif +PAN -UAO)
       pc : __memset+0x20/0x1ac
       lr : memset+0x3c/0x50
       sp : ffffffc09319fc50
      
        __memset+0x20/0x1ac
        perf_trace_buf_alloc+0x140/0x1a0
        perf_trace_sys_enter+0x158/0x310
        syscall_trace_enter+0x348/0x7c0
        el0_svc_common+0x11c/0x368
        el0_svc_handler+0x12c/0x198
        el0_svc+0x8/0xc
      
      Ramdumps showed the following:
        total_ref_count = 3
        perf_trace_buf = (
            0x0 -> NULL,
            0x0 -> NULL,
            0x0 -> NULL,
            0x0 -> NULL)
      
      Link: http://lkml.kernel.org/r/1571120245-4186-1-git-send-email-prsood@codeaurora.org
      
      Cc: stable@vger.kernel.org
      Fixes: e12f03d7 ("perf/core: Implement the 'perf_kprobe' PMU")
      Acked-by: default avatarSong Liu <songliubraving@fb.com>
      Signed-off-by: default avatarPrateek Sood <prsood@codeaurora.org>
      Signed-off-by: default avatarSteven Rostedt (VMware) <rostedt@goodmis.org>
      6b1340cc
    • afzal mohammed's avatar
      ARM: 8926/1: v7m: remove register save to stack before svc · 2ecb2879
      afzal mohammed authored
      r0-r3 & r12 registers are saved & restored, before & after svc
      respectively. Intention was to preserve those registers across thread to
      handler mode switch.
      
      On v7-M, hardware saves the register context upon exception in AAPCS
      complaint way. Restoring r0-r3 & r12 is done from stack location where
      hardware saves it, not from the location on stack where these registers
      were saved.
      
      To clarify, on stm32f429 discovery board:
      
      1. before svc, sp - 0x90009ff8
      2. r0-r3,r12 saved to 0x90009ff8 - 0x9000a00b
      3. upon svc, h/w decrements sp by 32 & pushes registers onto stack
      4. after svc,  sp - 0x90009fd8
      5. r0-r3,r12 restored from 0x90009fd8 - 0x90009feb
      
      Above means r0-r3,r12 is not restored from the location where they are
      saved, but since hardware pushes the registers onto stack, the registers
      are restored correctly.
      
      Note that during register saving to stack (step 2), it goes past
      0x9000a000. And it seems, based on objdump, there are global symbols
      residing there, and it perhaps can cause issues on a non-XIP Kernel
      (on XIP, data section is setup later).
      
      Based on the analysis above, manually saving registers onto stack is at
      best no-op and at worst can cause data section corruption. Hence remove
      storing of registers onto stack before svc.
      
      Fixes: b70cd406 ("ARM: 8671/1: V7M: Preserve registers across switch from Thread to Handler mode")
      Signed-off-by: default avatarafzal mohammed <afzal.mohd.ma@gmail.com>
      Acked-by: default avatarVladimir Murzin <vladimir.murzin@arm.com>
      Signed-off-by: default avatarRussell King <rmk+kernel@armlinux.org.uk>
      2ecb2879
    • Takashi Iwai's avatar
      Merge tag 'asoc-fix-v5.4-rc4' of... · c8d2dcb3
      Takashi Iwai authored
      Merge tag 'asoc-fix-v5.4-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
      
      ASoC: Fixes for v5.4
      
      A collection of fixes that have arrived since the merge window.  There
      are a small number of core fixes here but they are smaller ones around
      error handling.
      c8d2dcb3
    • Kailang Yang's avatar
      ALSA: hda/realtek - Add support for ALC711 · 83629532
      Kailang Yang authored
      Support new codec ALC711.
      Signed-off-by: default avatarKailang Yang <kailang@realtek.com>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      83629532
    • Marek Szyprowski's avatar
      opp: core: Revert "add regulators enable and disable" · 24957db1
      Marek Szyprowski authored
      All the drivers, which use the OPP framework control regulators, which
      are already enabled. Typically those regulators are also system critical,
      due to providing power to CPU core or system buses. It turned out that
      there are cases, where calling regulator_enable() on such boot-enabled
      regulator has side-effects and might change its initial voltage due to
      performing initial voltage balancing without all restrictions from the
      consumers. Until this issue becomes finally solved in regulator core,
      avoid calling regulator_enable()/disable() from the OPP framework.
      
      This reverts commit 7f93ff73.
      Signed-off-by: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
      Reviewed-by: default avatarMark Brown <broonie@kernel.org>
      Signed-off-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      24957db1
    • Rafael J. Wysocki's avatar
      PM: QoS: Drop frequency QoS types from device PM QoS · 2aac8bdf
      Rafael J. Wysocki authored
      There are no more active users of DEV_PM_QOS_MIN_FREQUENCY and
      DEV_PM_QOS_MAX_FREQUENCY device PM QoS request types, so drop them
      along with the code supporting them.
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      2aac8bdf
    • Rafael J. Wysocki's avatar
      cpufreq: Use per-policy frequency QoS · 3000ce3c
      Rafael J. Wysocki authored
      Replace the CPU device PM QoS used for the management of min and max
      frequency constraints in cpufreq (and its users) with per-policy
      frequency QoS to avoid problems with cpufreq policies covering
      more then one CPU.
      
      Namely, a cpufreq driver is registered with the subsys interface
      which calls cpufreq_add_dev() for each CPU, starting from CPU0, so
      currently the PM QoS notifiers are added to the first CPU in the
      policy (i.e. CPU0 in the majority of cases).
      
      In turn, when the cpufreq driver is unregistered, the subsys interface
      doing that calls cpufreq_remove_dev() for each CPU, starting from CPU0,
      and the PM QoS notifiers are only removed when cpufreq_remove_dev() is
      called for the last CPU in the policy, say CPUx, which as a rule is
      not CPU0 if the policy covers more than one CPU.  Then, the PM QoS
      notifiers cannot be removed, because CPUx does not have them, and
      they are still there in the device PM QoS notifiers list of CPU0,
      which prevents new PM QoS notifiers from being registered for CPU0
      on the next attempt to register the cpufreq driver.
      
      The same issue occurs when the first CPU in the policy goes offline
      before unregistering the driver.
      
      After this change it does not matter which CPU is the policy CPU at
      the driver registration time and whether or not it is online all the
      time, because the frequency QoS is per policy and not per CPU.
      
      Fixes: 67d874c3 ("cpufreq: Register notifiers with the PM QoS framework")
      Reported-by: default avatarDmitry Osipenko <digetx@gmail.com>
      Tested-by: default avatarDmitry Osipenko <digetx@gmail.com>
      Reported-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Tested-by: default avatarSudeep Holla <sudeep.holla@arm.com>
      Diagnosed-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      Link: https://lore.kernel.org/linux-pm/5ad2624194baa2f53acc1f1e627eb7684c577a19.1562210705.git.viresh.kumar@linaro.org/T/#md2d89e95906b8c91c15f582146173dce2e86e99f
      Link: https://lore.kernel.org/linux-pm/20191017094612.6tbkwoq4harsjcqv@vireshk-i7/T/#m30d48cc23b9a80467fbaa16e30f90b3828a5a29bSigned-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      3000ce3c
    • Rafael J. Wysocki's avatar
      PM: QoS: Introduce frequency QoS · 77751a46
      Rafael J. Wysocki authored
      Introduce frequency QoS, based on the "raw" low-level PM QoS, to
      represent min and max frequency requests and aggregate constraints.
      
      The min and max frequency requests are to be represented by
      struct freq_qos_request objects and the aggregate constraints are to
      be represented by struct freq_constraints objects.  The latter are
      expected to be initialized with the help of freq_constraints_init().
      
      The freq_qos_read_value() helper is defined to retrieve the aggregate
      constraints values from a given struct freq_constraints object and
      there are the freq_qos_add_request(), freq_qos_update_request() and
      freq_qos_remove_request() helpers to manipulate the min and max
      frequency requests.  It is assumed that the the helpers will not
      run concurrently with each other for the same struct freq_qos_request
      object, so if that may be the case, their uses must ensure proper
      synchronization between them (e.g. through locking).
      
      In addition, freq_qos_add_notifier() and freq_qos_remove_notifier()
      are provided to add and remove notifiers that will trigger on aggregate
      constraint changes to and from a given struct freq_constraints object,
      respectively.
      Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
      Acked-by: default avatarViresh Kumar <viresh.kumar@linaro.org>
      77751a46
  5. 20 Oct, 2019 5 commits