Re: [PATCH v2 -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend/resume as __maybe_unused

2020-08-03 Thread Dmitry Osipenko
04.08.2020 04:41, YueHaibing пишет:
> If CONFIG_PM is not set, gcc warns:
> 
> drivers/staging/media/tegra-vde/vde.c:916:12:
>  warning: 'tegra_vde_runtime_suspend' defined but not used [-Wunused-function]
> 
> Make it __maybe_unused to fix this.
> 
> Signed-off-by: YueHaibing 
> ---
> v2: both suspend and resume functions marked
> ---
>  drivers/staging/media/tegra-vde/vde.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/staging/media/tegra-vde/vde.c 
> b/drivers/staging/media/tegra-vde/vde.c
> index a3c24d96d5b9..28845b5bafaf 100644
> --- a/drivers/staging/media/tegra-vde/vde.c
> +++ b/drivers/staging/media/tegra-vde/vde.c
> @@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
>   return IRQ_HANDLED;
>  }
>  
> -static int tegra_vde_runtime_suspend(struct device *dev)
> +static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
>  {
>   struct tegra_vde *vde = dev_get_drvdata(dev);
>   int err;
> @@ -929,7 +929,7 @@ static int tegra_vde_runtime_suspend(struct device *dev)
>   return 0;
>  }
>  
> -static int tegra_vde_runtime_resume(struct device *dev)
> +static __maybe_unused int tegra_vde_runtime_resume(struct device *dev)
>  {
>   struct tegra_vde *vde = dev_get_drvdata(dev);
>   int err;
> 

Thanks!

Reviewed-by: Dmitry Osipenko 
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v3] Provide USF for the portable equipment.

2020-08-03 Thread Viresh Kumar
On 03-08-20, 22:31, Dongdong Yang wrote:
> From: Dongdong Yang 
> 
> This patch provides USF(User Sensitive Feedback factor) auxiliary
> cpufreq governor to support high level layer sysfs inodes setting
> for utils adjustment purpose from the identified scenario on portable
> equipment. Because the power consumption and UI response are more cared
> for by portable equipment users. And the "screen off" status stands for
> no request from the user, however, the kernel is still expected to
> notify the user in time on modem, network or powerkey events occur. USF
> provides "sched_usf_non_ux_r" sysfs inode to cut down the utils from
> user space tasks according to high level scenario. In addition, it
> usually hints more cpufreq demand that the preemptive counts of the
> tasks on the cpu burst and over the user expecting completed time such
> as the ratio sysctl_sched_latency to sysctl_sched_min_granularity on
> "screen on" status, which more likely with more UI. The sysfs inodes
> "sched_usf_up_l0_r" and "sched_usf_down_r" have been provided to adjust
> the utils according to high level identified scenario to alloc the
> cpufreq in time.
> 
> Changes in v3
>   - Move usf.c to kernel/sched.
>   - Remove trace_printk and debugfs.
>   - Add document draft.
>   - Update comments.
> 
> Changes in v2
>   - Add adjust_task_pred_set switch.
>   - Move adjust_task_pred_demand declaration into sched.h
>   - Update comments.

Sending updated patchset for this isn't going to help you my friend. You need
people (maintainers) to agree on the idea here first. The patch can be
beautified later if required once the idea is agreed upon. I saw Peter already
gave his NAK to it during V1. You need to discuss with people here to see why
they don't like it first and as Greg said earlier, this should not go to staging
at all if it ever makes it mainline.

The more versions you send now (without proper discussions first), the harder it
will be for this stuff to get merged upstream.

-- 
viresh
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v2 -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend/resume as __maybe_unused

2020-08-03 Thread YueHaibing
If CONFIG_PM is not set, gcc warns:

drivers/staging/media/tegra-vde/vde.c:916:12:
 warning: 'tegra_vde_runtime_suspend' defined but not used [-Wunused-function]

Make it __maybe_unused to fix this.

Signed-off-by: YueHaibing 
---
v2: both suspend and resume functions marked
---
 drivers/staging/media/tegra-vde/vde.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/staging/media/tegra-vde/vde.c 
b/drivers/staging/media/tegra-vde/vde.c
index a3c24d96d5b9..28845b5bafaf 100644
--- a/drivers/staging/media/tegra-vde/vde.c
+++ b/drivers/staging/media/tegra-vde/vde.c
@@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
return IRQ_HANDLED;
 }
 
-static int tegra_vde_runtime_suspend(struct device *dev)
+static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
 {
struct tegra_vde *vde = dev_get_drvdata(dev);
int err;
@@ -929,7 +929,7 @@ static int tegra_vde_runtime_suspend(struct device *dev)
return 0;
 }
 
-static int tegra_vde_runtime_resume(struct device *dev)
+static __maybe_unused int tegra_vde_runtime_resume(struct device *dev)
 {
struct tegra_vde *vde = dev_get_drvdata(dev);
int err;
-- 
2.17.1


___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend as __maybe_unused

2020-08-03 Thread Yuehaibing
On 2020/8/3 22:11, Dmitry Osipenko wrote:
> 03.08.2020 16:00, Yuehaibing пишет:
>> On 2020/8/3 20:51, Dmitry Osipenko wrote:
>>> 03.08.2020 14:59, YueHaibing пишет:
 If CONFIG_PM is not set, gcc warns:

 drivers/staging/media/tegra-vde/vde.c:916:12:
  warning: 'tegra_vde_runtime_suspend' defined but not used 
 [-Wunused-function]

 Make it __maybe_unused to fix this.

 Signed-off-by: YueHaibing 
 ---
  drivers/staging/media/tegra-vde/vde.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

 diff --git a/drivers/staging/media/tegra-vde/vde.c 
 b/drivers/staging/media/tegra-vde/vde.c
 index a3c24d96d5b9..2d043d518eef 100644
 --- a/drivers/staging/media/tegra-vde/vde.c
 +++ b/drivers/staging/media/tegra-vde/vde.c
 @@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
return IRQ_HANDLED;
  }
  
 -static int tegra_vde_runtime_suspend(struct device *dev)
 +static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
  {
struct tegra_vde *vde = dev_get_drvdata(dev);
int err;

>>>
>>> Hello Yue,
>>>
>>> Shouldn't the tegra_vde_runtime_resume() be marked as well?
>>
>> No, tegra_vde_runtime_resume() always be called by tegra_vde_shutdown().
> 
> Well.. it's unused, but compiler doesn't complain about runtime_resume()
> because it sees the potential reference to that function in the code
> (even that it's a dead code), while runtime_suspend() reference is
> completely removed by preprocessor before compiler sees the code.
> 

I see, thanks, will send v2.

> Should be nicer to have both suspend and resume functions marked, for
> consistency, IMO.
> 
> .
> 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v10 07/11] device-mapping: Introduce DMA range map, supplanting dma_pfn_offset

2020-08-03 Thread Jim Quinlan
The new field 'dma_range_map' in struct device is used to facilitate the
use of single or multiple offsets between mapping regions of cpu addrs and
dma addrs.  It subsumes the role of "dev->dma_pfn_offset" which was only
capable of holding a single uniform offset and had no region bounds
checking.

The function of_dma_get_range() has been modified so that it takes a single
argument -- the device node -- and returns a map, NULL, or an error code.
The map is an array that holds the information regarding the DMA regions.
Each range entry contains the address offset, the cpu_start address, the
dma_start address, and the size of the region.

of_dma_configure() is the typical manner to set range offsets but there are
a number of ad hoc assignments to "dev->dma_pfn_offset" in the kernel
driver code.  These cases now invoke the function
dma_attach_offset_range(dev, cpu_addr, dma_addr, size).

Signed-off-by: Jim Quinlan 
---
 arch/arm/include/asm/dma-mapping.h| 10 +--
 arch/arm/mach-keystone/keystone.c | 17 +++--
 arch/sh/drivers/pci/pcie-sh7786.c |  9 +--
 arch/sh/kernel/dma-coherent.c | 15 ++--
 arch/x86/pci/sta2x11-fixup.c  |  7 +-
 drivers/acpi/arm64/iort.c |  5 +-
 drivers/base/core.c   |  2 +
 drivers/gpu/drm/sun4i/sun4i_backend.c |  5 +-
 drivers/iommu/io-pgtable-arm.c|  2 +-
 .../platform/sunxi/sun4i-csi/sun4i_csi.c  |  5 +-
 .../platform/sunxi/sun6i-csi/sun6i_csi.c  |  4 +-
 drivers/of/address.c  | 72 +--
 drivers/of/device.c   | 43 ++-
 drivers/of/of_private.h   | 10 +--
 drivers/of/unittest.c | 31 +---
 drivers/remoteproc/remoteproc_core.c  |  8 ++-
 .../staging/media/sunxi/cedrus/cedrus_hw.c|  7 +-
 drivers/usb/core/message.c|  9 ++-
 drivers/usb/core/usb.c|  7 +-
 include/linux/device.h|  4 +-
 include/linux/dma-direct.h|  8 +--
 include/linux/dma-mapping.h   | 36 ++
 kernel/dma/coherent.c | 10 +--
 kernel/dma/mapping.c  | 65 +
 24 files changed, 269 insertions(+), 122 deletions(-)

diff --git a/arch/arm/include/asm/dma-mapping.h 
b/arch/arm/include/asm/dma-mapping.h
index bdd80ddbca34..2405afeb7957 100644
--- a/arch/arm/include/asm/dma-mapping.h
+++ b/arch/arm/include/asm/dma-mapping.h
@@ -35,8 +35,11 @@ static inline const struct dma_map_ops 
*get_arch_dma_ops(struct bus_type *bus)
 #ifndef __arch_pfn_to_dma
 static inline dma_addr_t pfn_to_dma(struct device *dev, unsigned long pfn)
 {
-   if (dev)
-   pfn -= dev->dma_pfn_offset;
+   if (dev) {
+   phys_addr_t paddr = PFN_PHYS(pfn);
+
+   pfn -= (dma_offset_from_phys_addr(dev, paddr) >> PAGE_SHIFT);
+   }
return (dma_addr_t)__pfn_to_bus(pfn);
 }
 
@@ -45,8 +48,7 @@ static inline unsigned long dma_to_pfn(struct device *dev, 
dma_addr_t addr)
unsigned long pfn = __bus_to_pfn(addr);
 
if (dev)
-   pfn += dev->dma_pfn_offset;
-
+   pfn += (dma_offset_from_dma_addr(dev, addr) >> PAGE_SHIFT);
return pfn;
 }
 
diff --git a/arch/arm/mach-keystone/keystone.c 
b/arch/arm/mach-keystone/keystone.c
index 638808c4e122..78808942ad1c 100644
--- a/arch/arm/mach-keystone/keystone.c
+++ b/arch/arm/mach-keystone/keystone.c
@@ -8,6 +8,7 @@
  */
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -24,8 +25,6 @@
 
 #include "keystone.h"
 
-static unsigned long keystone_dma_pfn_offset __read_mostly;
-
 static int keystone_platform_notifier(struct notifier_block *nb,
  unsigned long event, void *data)
 {
@@ -38,9 +37,12 @@ static int keystone_platform_notifier(struct notifier_block 
*nb,
return NOTIFY_BAD;
 
if (!dev->of_node) {
-   dev->dma_pfn_offset = keystone_dma_pfn_offset;
-   dev_err(dev, "set dma_pfn_offset%08lx\n",
-   dev->dma_pfn_offset);
+   int ret = dma_set_offset_range(dev, KEYSTONE_HIGH_PHYS_START,
+  KEYSTONE_LOW_PHYS_START,
+  KEYSTONE_HIGH_PHYS_SIZE);
+   dev_err(dev, "set dma_offset%08llx%s\n",
+   KEYSTONE_HIGH_PHYS_START - KEYSTONE_LOW_PHYS_START,
+   ret ? " failed" : "");
}
return NOTIFY_OK;
 }
@@ -51,11 +53,8 @@ static struct notifier_block platform_nb = {
 
 static void __init keystone_init(void)
 {
-   if (PHYS_OFFSET >= KEYSTONE_HIGH_PHYS_START) {
-   keystone_dma_pfn_offset = PFN_DOWN(KEYSTONE_HIGH_PHYS_START -
-  KEYSTONE_LOW_PHYS_START);
+   if 

[PATCH v10 00/11] PCI: brcmstb: enable PCIe for STB chips

2020-08-03 Thread Jim Quinlan
Patchset Summary:
  Enhance a PCIe host controller driver.  Because of its unusual design
  we are foced to change dev->dma_pfn_offset into a more general role
  allowing multiple offsets.  See the 'v1' notes below for more info.

v10: 
  Commit: "device-mapping: Introduce DMA range map, supplanting ..."
  -- change title of commit; "bus core:" => "device-mapping:"
  -- instead of allocating the DMA map with devm, use kcalloc
 and call kfree() during device_release().  (RobH) Also,
 for three cases that want to use the same DMA map, copy
 the dma_range_map using a helper function.
  -- added a missing 'return = 0;' to of_dma_get_range().  (Nicolas)
  -- removed dma_range_overlaps(); instead return error if there
 is an existing DMA map. (Christoph).
  Commit: "PCI: brcmstb: Set additional internal memory DMA ..."
  -- Changed constant 1 to 1ULL. (Nicolas)
  Commit: "ata: ahci_brcm: Fix use of BCM7216 reset controller"
 This commit has been removed from this patchset and will be
 submitted on its own.

v9:
  Commit: "device core: Introduce DMA range map, supplanting ..."
  -- A number of code improvements were implemented as suggested by
 ChristophH.  Unfortunately, some of these changes reversed the
 implemented suggestions of other reviewers; for example, the new
 macros PFN_DMA_ADDR(), DMA_ADDR_PFN() have been pulled.

v8:
  Commit: "device core: Introduce DMA range map, supplanting ..."
  -- To satisfy a specific m68 compile configuration, I moved the 'struct
 bus_dma_region; definition out of #ifdef CONFIG_HAS_DMA and also defined
 three inline functions for !CONFIG_HAS_DMA (kernel test robot).
  -- The sunXi drivers -- suc4i_csi, sun6i_csi, cedrus_hw -- set
 a pfn_offset outside of_dma_configure() but the code offers no 
 insight on the size of the translation window.  V7 had me using
 SIZE_MAX as the size.  I have since contacted the sunXi maintainer and
 he said that using a size of SZ_4G would cover sunXi configurations.

v7:
  Commit: "device core: Introduce DMA range map, supplanting ..."
  -- remove second kcalloc/copy in device.c (AndyS)
  -- use PTR_ERR_OR_ZERO() and PHYS_PFN() (AndyS)
  -- indentation, sizeof(struct ...) => sizeof(*r) (AndyS)
  -- add pfn.h definitions: PFN_DMA_ADDR(), DMA_ADDR_PFN() (AndyS)
  -- Fixed compile error in "sun6i_csi.c" (kernel test robot)
  Commit "ata: ahci_brcm: Fix use of BCM7216 reset controller"
  -- correct name of function in the commit msg (SergeiS)
  
v6:
  Commit "device core: Introduce DMA range map":
  -- of_dma_get_range() now takes a single argument and returns either
 NULL, a valid map, or an ERR_PTR. (Robin)
  -- offsets are no longer a PFN value but an actual address. (Robin)
  -- the bus_dma_region struct stores the range size instead of
 the cpu_end and pci_end values. (Robin)
  -- devices that were setting a single offset with no boundaries
 have been modified to have boundaries; in a few places
 where this information was unavilable a /* FIXME: ... */
 comment was added. (Robin)
  -- dma_attach_offset_range() can be called when an offset
 map already exists; if it's range is already present
 nothing is done and success is returned. (Robin)
  All commits:
  -- Man name/style/corrections/etc changed (Bjorn)
  -- rebase to Torvalds master

v5:
  Commit "device core: Introduce multiple dma pfn offsets"
  -- in of/address.c: "map_size = 0" => "*map_size = 0"
  -- use kcalloc instead of kzalloc (AndyS)
  -- use PHYS_ADDR_MAX instead of "~(phys_addr_t)0"
  Commit "PCI: brcmstb: Set internal memory viewport sizes"
  -- now gives error on missing dma-ranges property.
  Commit "dt-bindings: PCI: Add bindings for more Brcmstb chips"
  -- removed "Allof:" from brcm,scb-sizes definition (RobH)
  All Commits:
  -- indentation style, use max chars 100 (AndyS)
  -- rebased to torvalds master

v4:
  Commit "device core: Introduce multiple dma pfn offsets"
  -- of_dma_get_range() does not take a dev param but instead
 takes two "out" params: map and map_size.  We do this so
 that the code that parses dma-ranges is separate from
 the code that modifies 'dev'.   (Nicolas)
  -- the separate case of having a single pfn offset has
 been removed and is now processed by going through the
 map array. (Nicolas)
  -- move attach_uniform_dma_pfn_offset() from of/address.c to
 dma/mapping.c so that it does not depend on CONFIG_OF. (Nicolas)
  -- devm_kcalloc => devm_kzalloc (DanC)
  -- add/fix assignment to dev->dma_pfn_offset_map for func
 attach_uniform_dma_pfn_offset() (DanC, Nicolas)
  -- s/struct dma_pfn_offset_region/struct bus_dma_region/ (Nicolas)
  -- s/attach_uniform_dma_pfn_offset/dma_attach_uniform_pfn_offset/
  -- s/attach_dma_pfn_offset_map/dma_attach_pfn_offset_map/
  -- More use of PFN_{PHYS,DOWN,UP}. (AndyS)
  Commit "of: Include a dev param in of_dma_get_range()"
  -- this commit was sqaushed with "device core: Introduce ..."

v3:
  

Re: [PATCH v3] sched: Provide USF for the portable equipment.

2020-08-03 Thread Randy Dunlap
On 8/3/20 7:31 AM, Dongdong Yang wrote:
> diff --git a/drivers/staging/Kconfig b/drivers/staging/Kconfig
> index 4ec5528..05b231e 100644
> --- a/drivers/staging/Kconfig
> +++ b/drivers/staging/Kconfig
> @@ -120,4 +120,6 @@ source "drivers/staging/qlge/Kconfig"
>  
>  source "drivers/staging/wfx/Kconfig"
>  
> +source "drivers/staging/fbsched/Kconfig"

where is this fbsched/Kconfig and its associated source files?

> +
>  endif # STAGING


-- 
~Randy

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH] drivers: most: add character device interface driver

2020-08-03 Thread Christian Gromm
This patch adds the character device (cdev) driver source file
most_cdev.c and modifies the Makefiles and Kconfigs accordingly.

Signed-off-by: Christian Gromm 
---
 drivers/most/Kconfig   |   9 +
 drivers/most/Makefile  |   1 +
 drivers/most/most_cdev.c   | 543 +
 drivers/staging/most/Kconfig   |   2 -
 drivers/staging/most/Makefile  |   1 -
 drivers/staging/most/cdev/Kconfig  |  13 -
 drivers/staging/most/cdev/Makefile |   4 -
 drivers/staging/most/cdev/cdev.c   | 543 -
 8 files changed, 553 insertions(+), 563 deletions(-)
 create mode 100644 drivers/most/most_cdev.c
 delete mode 100644 drivers/staging/most/cdev/Kconfig
 delete mode 100644 drivers/staging/most/cdev/Makefile
 delete mode 100644 drivers/staging/most/cdev/cdev.c

diff --git a/drivers/most/Kconfig b/drivers/most/Kconfig
index 60fc082..ebfe84e 100644
--- a/drivers/most/Kconfig
+++ b/drivers/most/Kconfig
@@ -23,4 +23,13 @@ config MOST_USB_HDM
 
  To compile this driver as a module, choose M here: the
  module will be called most_usb.
+
+config MOST_CDEV
+   tristate "Cdev"
+
+   help
+ Say Y here if you want to commumicate via character devices.
+
+ To compile this driver as a module, choose M here: the
+ module will be called most_cdev.
 endif
diff --git a/drivers/most/Makefile b/drivers/most/Makefile
index 6a3cb90..8b53ca4 100644
--- a/drivers/most/Makefile
+++ b/drivers/most/Makefile
@@ -4,3 +4,4 @@ most_core-y :=  core.o \
configfs.o
 
 obj-$(CONFIG_MOST_USB_HDM) += most_usb.o
+obj-$(CONFIG_MOST_CDEV) += most_cdev.o
diff --git a/drivers/most/most_cdev.c b/drivers/most/most_cdev.c
new file mode 100644
index 000..0448807
--- /dev/null
+++ b/drivers/most/most_cdev.c
@@ -0,0 +1,543 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * cdev.c - Character device component for Mostcore
+ *
+ * Copyright (C) 2013-2015 Microchip Technology Germany II GmbH & Co. KG
+ */
+
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+#include 
+
+#define CHRDEV_REGION_SIZE 50
+
+static struct cdev_component {
+   dev_t devno;
+   struct ida minor_id;
+   unsigned int major;
+   struct class *class;
+   struct most_component cc;
+} comp;
+
+struct comp_channel {
+   wait_queue_head_t wq;
+   spinlock_t unlink;  /* synchronization lock to unlink channels */
+   struct cdev cdev;
+   struct device *dev;
+   struct mutex io_mutex;
+   struct most_interface *iface;
+   struct most_channel_config *cfg;
+   unsigned int channel_id;
+   dev_t devno;
+   size_t mbo_offs;
+   DECLARE_KFIFO_PTR(fifo, typeof(struct mbo *));
+   int access_ref;
+   struct list_head list;
+};
+
+#define to_channel(d) container_of(d, struct comp_channel, cdev)
+static struct list_head channel_list;
+static spinlock_t ch_list_lock;
+
+static inline bool ch_has_mbo(struct comp_channel *c)
+{
+   return channel_has_mbo(c->iface, c->channel_id, ) > 0;
+}
+
+static inline struct mbo *ch_get_mbo(struct comp_channel *c, struct mbo **mbo)
+{
+   if (!kfifo_peek(>fifo, mbo)) {
+   *mbo = most_get_mbo(c->iface, c->channel_id, );
+   if (*mbo)
+   kfifo_in(>fifo, mbo, 1);
+   }
+   return *mbo;
+}
+
+static struct comp_channel *get_channel(struct most_interface *iface, int id)
+{
+   struct comp_channel *c, *tmp;
+   unsigned long flags;
+
+   spin_lock_irqsave(_list_lock, flags);
+   list_for_each_entry_safe(c, tmp, _list, list) {
+   if ((c->iface == iface) && (c->channel_id == id)) {
+   spin_unlock_irqrestore(_list_lock, flags);
+   return c;
+   }
+   }
+   spin_unlock_irqrestore(_list_lock, flags);
+   return NULL;
+}
+
+static void stop_channel(struct comp_channel *c)
+{
+   struct mbo *mbo;
+
+   while (kfifo_out((struct kfifo *)>fifo, , 1))
+   most_put_mbo(mbo);
+   most_stop_channel(c->iface, c->channel_id, );
+}
+
+static void destroy_cdev(struct comp_channel *c)
+{
+   unsigned long flags;
+
+   device_destroy(comp.class, c->devno);
+   cdev_del(>cdev);
+   spin_lock_irqsave(_list_lock, flags);
+   list_del(>list);
+   spin_unlock_irqrestore(_list_lock, flags);
+}
+
+static void destroy_channel(struct comp_channel *c)
+{
+   ida_simple_remove(_id, MINOR(c->devno));
+   kfifo_free(>fifo);
+   kfree(c);
+}
+
+/**
+ * comp_open - implements the syscall to open the device
+ * @inode: inode pointer
+ * @filp: file pointer
+ *
+ * This stores the channel pointer in the private data field of
+ * the file structure and activates the channel within the core.
+ */
+static int comp_open(struct inode *inode, struct file *filp)
+{
+   struct comp_channel *c;
+   int ret;
+
+   c 

Re: KASAN: use-after-free Read in hci_chan_del

2020-08-03 Thread syzbot
syzbot has bisected this issue to:

commit 166beccd47e11e4d27477e8ca1d7eda47cf3b2da
Author: Eric Anholt 
Date:   Mon Oct 3 18:52:06 2016 +

staging/vchi: Convert to current get_user_pages() arguments.

bisection log:  https://syzkaller.appspot.com/x/bisect.txt?x=178321a490
start commit:   5a30a789 Merge tag 'x86-urgent-2020-08-02' of git://git.ke..
git tree:   upstream
final oops: https://syzkaller.appspot.com/x/report.txt?x=144321a490
console output: https://syzkaller.appspot.com/x/log.txt?x=104321a490
kernel config:  https://syzkaller.appspot.com/x/.config?x=e59ee776d5aa8d55
dashboard link: https://syzkaller.appspot.com/bug?extid=305a91e025a73e4fd6ce
syz repro:  https://syzkaller.appspot.com/x/repro.syz?x=127dd91490
C reproducer:   https://syzkaller.appspot.com/x/repro.c?x=122a94ec90

Reported-by: syzbot+305a91e025a73e4fd...@syzkaller.appspotmail.com
Fixes: 166beccd47e1 ("staging/vchi: Convert to current get_user_pages() 
arguments.")

For information about bisection process see: https://goo.gl/tpsmEJ#bisection
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v9 08/12] device core: Introduce DMA range map, supplanting dma_pfn_offset

2020-08-03 Thread Jim Quinlan
On Sat, Aug 1, 2020 at 1:17 PM Nicolas Saenz Julienne
 wrote:
>
> Hi Jim, here's some comments after testing your series against RPi4.
>
> On Fri, 2020-07-24 at 16:33 -0400, Jim Quinlan wrote:
> > The new field 'dma_range_map' in struct device is used to facilitate the
> > use of single or multiple offsets between mapping regions of cpu addrs and
> > dma addrs.  It subsumes the role of "dev->dma_pfn_offset" which was only
> > capable of holding a single uniform offset and had no region bounds
> > checking.
> >
> > The function of_dma_get_range() has been modified so that it takes a single
> > argument -- the device node -- and returns a map, NULL, or an error code.
> > The map is an array that holds the information regarding the DMA regions.
> > Each range entry contains the address offset, the cpu_start address, the
> > dma_start address, and the size of the region.
> >
> > of_dma_configure() is the typical manner to set range offsets but there are
> > a number of ad hoc assignments to "dev->dma_pfn_offset" in the kernel
> > driver code.  These cases now invoke the function
> > dma_attach_offset_range(dev, cpu_addr, dma_addr, size).
> >
> > Signed-off-by: Jim Quinlan 
> > ---
>
> [...]
>
> > diff --git a/drivers/of/address.c b/drivers/of/address.c
> > index 8eea3f6e29a4..4b718d199efe 100644
> > --- a/drivers/of/address.c
> > +++ b/drivers/of/address.c
> > @@ -918,33 +918,33 @@ void __iomem *of_io_request_and_map(struct 
> > device_node *np, int index,
> >  }
> >  EXPORT_SYMBOL(of_io_request_and_map);
> >
> > +#ifdef CONFIG_HAS_DMA
> >  /**
> > - * of_dma_get_range - Get DMA range info
> > + * of_dma_get_range - Get DMA range info and put it into a map array
> >   * @np:  device node to get DMA range info
> > - * @dma_addr:pointer to store initial DMA address of DMA range
> > - * @paddr:   pointer to store initial CPU address of DMA range
> > - * @size:pointer to store size of DMA range
> > + * @map: dma range structure to return
> >   *
> >   * Look in bottom up direction for the first "dma-ranges" property
> > - * and parse it.
> > - *  dma-ranges format:
> > + * and parse it.  Put the information into a DMA offset map array.
> > + *
> > + * dma-ranges format:
> >   *   DMA addr (dma_addr) : naddr cells
> >   *   CPU addr (phys_addr_t)  : pna cells
> >   *   size: nsize cells
> >   *
> > - * It returns -ENODEV if "dma-ranges" property was not found
> > - * for this device in DT.
> > + * It returns -ENODEV if "dma-ranges" property was not found for this
> > + * device in the DT.
> >   */
> > -int of_dma_get_range(struct device_node *np, u64 *dma_addr, u64 *paddr, 
> > u64 *size)
> > +int of_dma_get_range(struct device_node *np, const struct bus_dma_region 
> > **map)
> >  {
> >   struct device_node *node = of_node_get(np);
> >   const __be32 *ranges = NULL;
> > - int len;
> > - int ret = 0;
> >   bool found_dma_ranges = false;
> >   struct of_range_parser parser;
> >   struct of_range range;
> > - u64 dma_start = U64_MAX, dma_end = 0, dma_offset = 0;
> > + struct bus_dma_region *r;
> > + int len, num_ranges = 0;
> > + int ret;
> >
> >   while (node) {
> >   ranges = of_get_property(node, "dma-ranges", );
> > @@ -970,44 +970,35 @@ int of_dma_get_range(struct device_node *np, u64 
> > *dma_addr, u64 *paddr, u64 *siz
> >   }
> >
> >   of_dma_range_parser_init(, node);
> > + for_each_of_range(, )
> > + num_ranges++;
> > +
> > + of_dma_range_parser_init(, node);
> > +
> > + ret = -ENOMEM;
> > + r = kcalloc(num_ranges + 1, sizeof(*r), GFP_KERNEL);
> > + if (!r)
> > + goto out;
> >
> > + /*
> > +  * Record all info in the generic DMA ranges array for struct device.
> > +  */
> > + *map = r;
> >   for_each_of_range(, ) {
> >   pr_debug("dma_addr(%llx) cpu_addr(%llx) size(%llx)\n",
> >range.bus_addr, range.cpu_addr, range.size);
> > -
> > - if (dma_offset && range.cpu_addr - range.bus_addr != 
> > dma_offset) {
> > - pr_warn("Can't handle multiple dma-ranges with 
> > different offsets on node(%pOF)\n", node);
> > - /* Don't error out as we'd break some existing DTs */
> > - continue;
> > - }
> > - dma_offset = range.cpu_addr - range.bus_addr;
> > -
> > - /* Take lower and upper limits */
> > - if (range.bus_addr < dma_start)
> > - dma_start = range.bus_addr;
> > - if (range.bus_addr + range.size > dma_end)
> > - dma_end = range.bus_addr + range.size;
> > - }
> > -
> > - if (dma_start >= dma_end) {
> > - ret = -EINVAL;
> > - pr_debug("Invalid DMA ranges configuration on node(%pOF)\n",
> > -  node);
> > - goto out;
> > + r->cpu_start = range.cpu_addr;
> > 

Reply...

2020-08-03 Thread Ms. Reem
Hello,

My name is Ms. Reem Ebrahim Al-Hashimi, I am the "Minister of state and
Petroleum" also "Minister of State for International Cooperation" in UAE. I
write to solicit for your partnership in claiming of {us$90=Million} from a
Financial Home in Cambodia.

The Fund {us$90=Million} is my share from the (Over-invoiced) Oil/Gas deal
with Cambodia/Vietnam Government within 2013/2014, however, I don't want my
government to know about the fund. If this proposal interests you, let me
know by sending me an email and I will send to you detailed Information on
how this business would be successfully transacted. Be informed that nobody
knows about the secret of this fund except me and I know how to carry out
the entire transaction. So I am compelled to ask that you will stand on my
behalf and receive this fund into any account that is solely controlled by
you.

I will compensate you with 30% of the total amount involved as gratification
for being my partner in the transfer. Reply to my private email as stated:
reemal-hash...@yandex.com

Regards,
Ms. Reem Ebrahim Al-Hashimi.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH v3] sched: Provide USF for the portable equipment.

2020-08-03 Thread Greg KH
On Mon, Aug 03, 2020 at 10:31:15PM +0800, Dongdong Yang wrote:
> + /*
> +  * create a sched_usf in cpu_subsys:
> +  * /sys/devices/system/cpu/sched_usf/...

I thought I asked you not to use a "raw" kobject, you are making this
much harder than it has to be.

Just use a normal struct device.

Also you failed to document your new sysfs files in Documentation/ABI/
like is required :(

Because of both of those things, this isn't ok as-is, sorry.

greg k-h
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


[PATCH v3] sched: Provide USF for the portable equipment.

2020-08-03 Thread Dongdong Yang
From: Dongdong Yang 

The power consumption and UI response are more cared for by the portable
equipment users. USF(User Sensitive Feedback factor) auxiliary cpufreq
governor is providing more utils adjustment settings to the high level
by scenario identification.

From the view of portable equipment, screen off status usually stands
for no request from the user, however, the kernel is still expected to
notify the user in time on modem, network or powerkey events occur. In
some scenarios, such as listening to music, low power processors, such
as DSP, take more actions and CPU load requirements cut down.  It would
bring more power consumption benefit if high level have interfaces to
adjust utils according to the current scenario and load.

In addition, the portable equipment user usually heavily interact with
devices by touch, and other peripherals. The boost preemptive counts
are marking the load requirement urgent, vice versa. If such feedback
factor could be set to high level according to the scenario, it would
contribute to the power consumption and UI response.

If no USF sysfs inode is set, and no screen on or off event,
adjust_task_pred_demand shall not be invoked. Once sched_usf_up_l0_r
sched_usf_down_r or sched_usf_non_ux_r be set, adjust_task_pred_demand
shall be called back to update settings according to high level
scenario identification.

We can get about 17% mean power consumption save at listening to music
with speaker on "screen off" scenario, as below statistical data from
7766 XiaoMi devices for two weeks with sched_usf_non_ux_r be set:

day1 day2 day3 day4
count   7766.00  7766.00  7766.00  7766.00
mean88.03552585.50028283.82930586.054997
std 111.049980   108.258834   107.562583   108.558240
min 0.099000 0.037000 0.067000 0.045000
25% 34.76550034.02175034.10150034.423000
50% 54.9555.28650054.18950054.248500
75% 95.95400093.94200091.73800094.0592500
80% 114.675000   107.43   106.378000   108.673000
85% 137.851000   129.511000   127.156500   131.750750
90% 179.669000   170.208500   164.027000   172.348000
95% 272.395000   257.845500   247.750500   263.275750
98% 399.034500   412.170400   391.484000   402.835600

day5 day6day7 day8
count   7766.00  7766.0  7766.00  7766.00
mean82.53267779.2192377.61138081.075081
std 104.870079   101.34819   103.140037   97.506221
min 0.051000 0.02900 0.007000 0.068000
25% 32.87300033.4440031.96550033.863500
50% 52.18050051.5655050.80650053.08
75% 90.90575086.8262583.85925089.973000
80% 105.455000   99.6470097.271000104.225000
85% 128.30   118.47825   116.570250   126.648250
90% 166.647500   149.18000   150.649500   161.087000
95% 247.208500   224.36050   226.38   245.291250
98% 393.002000   347.92060   369.791800   378.778600

day9 day10day11day12
count   7766.00  7766.00  7766.00  7766.00
mean79.98917083.85941778.03293077.060542
std 104.226122   108.893043   102.561715   99.844276
min 0.118000 0.017000 0.028000 0.039000
25% 32.05625033.45450031.17625030.897750
50% 51.50600054.05600048.96950049.069000
75% 88.51350092.95350083.50675084.096000
80% 102.876000   107.845000   97.71700098.073000
85% 124.363000   128.288000   118.366500   116.869250
90% 160.557000   167.084000   154.342500   148.187500
95% 231.149000   242.925750   236.759000   228.131250
98% 367.206600   388.619100   385.269100   376.541600

day13day14
count   7766.00  7766.00
mean75.52803673.702878
std 90.75059486.796016
min 0.066000 0.054000
25% 31.17050031.608500
50% 48.75850049.215000
75% 84.52275083.053000
80% 97.87900094.875000
85% 116.680250   113.573750
90% 149.083500   144.089500
95% 226.177750   211.488750
98% 347.011100   331.317100

Signed-off-by: Dongdong Yang 
Co-developed-by: Jun Tao 
Co-developed-by: Qiwu Huang 
Co-developed-by: Peng Wang 
---
 Documentation/scheduler/sched-ufs.txt |  78 +
 drivers/cpufreq/Kconfig   |  11 ++
 drivers/staging/Kconfig   |   2 +
 drivers/staging/Makefile  |   1 +
 include/trace/events/sched.h  |  35 
 kernel/sched/Makefile |   1 +
 kernel/sched/cpufreq_schedutil.c  |   3 +
 kernel/sched/sched.h  |  10 ++
 kernel/sched/usf.c| 305 ++
 9 files changed, 446 insertions(+)
 create mode 100644 Documentation/scheduler/sched-ufs.txt
 create mode 100644 kernel/sched/usf.c

diff --git a/Documentation/scheduler/sched-ufs.txt 

[PATCH v3] Provide USF for the portable equipment.

2020-08-03 Thread Dongdong Yang
From: Dongdong Yang 

This patch provides USF(User Sensitive Feedback factor) auxiliary
cpufreq governor to support high level layer sysfs inodes setting
for utils adjustment purpose from the identified scenario on portable
equipment. Because the power consumption and UI response are more cared
for by portable equipment users. And the "screen off" status stands for
no request from the user, however, the kernel is still expected to
notify the user in time on modem, network or powerkey events occur. USF
provides "sched_usf_non_ux_r" sysfs inode to cut down the utils from
user space tasks according to high level scenario. In addition, it
usually hints more cpufreq demand that the preemptive counts of the
tasks on the cpu burst and over the user expecting completed time such
as the ratio sysctl_sched_latency to sysctl_sched_min_granularity on
"screen on" status, which more likely with more UI. The sysfs inodes
"sched_usf_up_l0_r" and "sched_usf_down_r" have been provided to adjust
the utils according to high level identified scenario to alloc the
cpufreq in time.

Changes in v3
  - Move usf.c to kernel/sched.
  - Remove trace_printk and debugfs.
  - Add document draft.
  - Update comments.

Changes in v2
  - Add adjust_task_pred_set switch.
  - Move adjust_task_pred_demand declaration into sched.h
  - Update comments.


Dongdong Yang (1):
  sched: Provide USF for the portable equipment.

 Documentation/scheduler/sched-ufs.txt |  78 +
 drivers/cpufreq/Kconfig   |  11 ++
 drivers/staging/Kconfig   |   2 +
 drivers/staging/Makefile  |   1 +
 include/trace/events/sched.h  |  35 
 kernel/sched/Makefile |   1 +
 kernel/sched/cpufreq_schedutil.c  |   3 +
 kernel/sched/sched.h  |  10 ++
 kernel/sched/usf.c| 305 ++
 9 files changed, 446 insertions(+)
 create mode 100644 Documentation/scheduler/sched-ufs.txt
 create mode 100644 kernel/sched/usf.c

-- 
2.7.4

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend as __maybe_unused

2020-08-03 Thread Dmitry Osipenko
03.08.2020 16:00, Yuehaibing пишет:
> On 2020/8/3 20:51, Dmitry Osipenko wrote:
>> 03.08.2020 14:59, YueHaibing пишет:
>>> If CONFIG_PM is not set, gcc warns:
>>>
>>> drivers/staging/media/tegra-vde/vde.c:916:12:
>>>  warning: 'tegra_vde_runtime_suspend' defined but not used 
>>> [-Wunused-function]
>>>
>>> Make it __maybe_unused to fix this.
>>>
>>> Signed-off-by: YueHaibing 
>>> ---
>>>  drivers/staging/media/tegra-vde/vde.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/drivers/staging/media/tegra-vde/vde.c 
>>> b/drivers/staging/media/tegra-vde/vde.c
>>> index a3c24d96d5b9..2d043d518eef 100644
>>> --- a/drivers/staging/media/tegra-vde/vde.c
>>> +++ b/drivers/staging/media/tegra-vde/vde.c
>>> @@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
>>> return IRQ_HANDLED;
>>>  }
>>>  
>>> -static int tegra_vde_runtime_suspend(struct device *dev)
>>> +static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
>>>  {
>>> struct tegra_vde *vde = dev_get_drvdata(dev);
>>> int err;
>>>
>>
>> Hello Yue,
>>
>> Shouldn't the tegra_vde_runtime_resume() be marked as well?
> 
> No, tegra_vde_runtime_resume() always be called by tegra_vde_shutdown().

Well.. it's unused, but compiler doesn't complain about runtime_resume()
because it sees the potential reference to that function in the code
(even that it's a dead code), while runtime_suspend() reference is
completely removed by preprocessor before compiler sees the code.

Should be nicer to have both suspend and resume functions marked, for
consistency, IMO.
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend as __maybe_unused

2020-08-03 Thread Yuehaibing
On 2020/8/3 20:51, Dmitry Osipenko wrote:
> 03.08.2020 14:59, YueHaibing пишет:
>> If CONFIG_PM is not set, gcc warns:
>>
>> drivers/staging/media/tegra-vde/vde.c:916:12:
>>  warning: 'tegra_vde_runtime_suspend' defined but not used 
>> [-Wunused-function]
>>
>> Make it __maybe_unused to fix this.
>>
>> Signed-off-by: YueHaibing 
>> ---
>>  drivers/staging/media/tegra-vde/vde.c | 2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/drivers/staging/media/tegra-vde/vde.c 
>> b/drivers/staging/media/tegra-vde/vde.c
>> index a3c24d96d5b9..2d043d518eef 100644
>> --- a/drivers/staging/media/tegra-vde/vde.c
>> +++ b/drivers/staging/media/tegra-vde/vde.c
>> @@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
>>  return IRQ_HANDLED;
>>  }
>>  
>> -static int tegra_vde_runtime_suspend(struct device *dev)
>> +static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
>>  {
>>  struct tegra_vde *vde = dev_get_drvdata(dev);
>>  int err;
>>
> 
> Hello Yue,
> 
> Shouldn't the tegra_vde_runtime_resume() be marked as well?

No, tegra_vde_runtime_resume() always be called by tegra_vde_shutdown().

> 
> .
> 

___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend as __maybe_unused

2020-08-03 Thread Dmitry Osipenko
03.08.2020 14:59, YueHaibing пишет:
> If CONFIG_PM is not set, gcc warns:
> 
> drivers/staging/media/tegra-vde/vde.c:916:12:
>  warning: 'tegra_vde_runtime_suspend' defined but not used [-Wunused-function]
> 
> Make it __maybe_unused to fix this.
> 
> Signed-off-by: YueHaibing 
> ---
>  drivers/staging/media/tegra-vde/vde.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/drivers/staging/media/tegra-vde/vde.c 
> b/drivers/staging/media/tegra-vde/vde.c
> index a3c24d96d5b9..2d043d518eef 100644
> --- a/drivers/staging/media/tegra-vde/vde.c
> +++ b/drivers/staging/media/tegra-vde/vde.c
> @@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
>   return IRQ_HANDLED;
>  }
>  
> -static int tegra_vde_runtime_suspend(struct device *dev)
> +static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
>  {
>   struct tegra_vde *vde = dev_get_drvdata(dev);
>   int err;
> 

Hello Yue,

Shouldn't the tegra_vde_runtime_resume() be marked as well?
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH] sched: Provide USF for the portable equipment.

2020-08-03 Thread Dan Carpenter
On Thu, Jul 30, 2020 at 09:35:43PM +0800, Dongdong Yang wrote:
> From: Dongdong Yang 
> 
> The power consumption and UI response are more cared
> for by the portable equipment users. USF(User Sensitive
> Feedback factor) auxiliary cpufreq governor is
> providing more utils adjustment settings to a high
> level by scenario identification.
> 
> From the view of portable equipment, screen off status
> usually stands for no request from the user, however,
> the kernel is still expected to notify the user
> in time on modem, network or powerkey events occur.
> In some scenarios, such as listening to music,
> low power processors, such as DSP, take more actions
> and CPU load requirements cut down.  It would bring
> more power consumption benefit if high level have
> interfaces to adjust utils according to the current
> scenario and load.
> 
> In addition, the portable equipment user usually heavy
> interact with devices by touch, and other peripherals.
> The boost preemptive counts are marking the load
> requirement urgent, vice versa. If such feedback
> factor could be set to high level according to the
> scenario, it would contribute to the power consumption
> and UI response.
> 
> If no USF sysfs inode is set, and no screen on or
> off event, adjust_task_pred_demand shall not be invoked.
> Once sched_usf_up_l0_r/down_r/non_ux_r be set,
> adjust_task_pred_demand_impl shall be called back
> to update settings according to high level scenario
> identification.
> 
> We can get about 17% mean power consumption save
> at listening to music with speaker on "screen
> off" scenario, as below statistical data from 7766
> XiaoMi devices for two weeks with
> sched_usf_non_ux_r be set:
> 
> day1 day2 day3 day4
> count   7766.00  7766.00  7766.00  7766.00
> mean88.03552585.50028283.82930586.054997
> std 111.049980   108.258834   107.562583   108.558240
> min 0.099000 0.037000 0.067000 0.045000
> 25% 34.76550034.02175034.10150034.423000
> 50% 54.9555.28650054.18950054.248500
> 75% 95.95400093.94200091.73800094.0592500
> 80% 114.675000   107.43   106.378000   108.673000
> 85% 137.851000   129.511000   127.156500   131.750750
> 90% 179.669000   170.208500   164.027000   172.348000
> 95% 272.395000   257.845500   247.750500   263.275750
> 98% 399.034500   412.170400   391.484000   402.835600
> 
> day5 day6day7 day8
> count   7766.00  7766.0  7766.00  7766.00
> mean82.53267779.2192377.61138081.075081
> std 104.870079   101.34819   103.140037   97.506221
> min 0.051000 0.02900 0.007000 0.068000
> 25% 32.87300033.4440031.96550033.863500
> 50% 52.18050051.5655050.80650053.08
> 75% 90.90575086.8262583.85925089.973000
> 80% 105.455000   99.6470097.271000104.225000
> 85% 128.30   118.47825   116.570250   126.648250
> 90% 166.647500   149.18000   150.649500   161.087000
> 95% 247.208500   224.36050   226.38   245.291250
> 98% 393.002000   347.92060   369.791800   378.778600
> 
> day9 day10day11day12
> count   7766.00  7766.00  7766.00  7766.00
> mean79.98917083.85941778.03293077.060542
> std 104.226122   108.893043   102.561715   99.844276
> min 0.118000 0.017000 0.028000 0.039000
> 25% 32.05625033.45450031.17625030.897750
> 50% 51.50600054.05600048.96950049.069000
> 75% 88.51350092.95350083.50675084.096000
> 80% 102.876000   107.845000   97.71700098.073000
> 85% 124.363000   128.288000   118.366500   116.869250
> 90% 160.557000   167.084000   154.342500   148.187500
> 95% 231.149000   242.925750   236.759000   228.131250
> 98% 367.206600   388.619100   385.269100   376.541600
> 
> day13day14
> count   7766.00  7766.00
> mean75.52803673.702878
> std 90.75059486.796016
> min 0.066000 0.054000
> 25% 31.17050031.608500
> 50% 48.75850049.215000
> 75% 84.52275083.053000
> 80% 97.87900094.875000
> 85% 116.680250   113.573750
> 90% 149.083500   144.089500
> 95% 226.177750   211.488750
> 98% 347.011100   331.317100
> 
> Signed-off-by: Dongdong Yang 
> Signed-off-by: Jun Tao 
> Signed-off-by: Qiwu Huang 
> Signed-off-by: Geliang Tang 
> Signed-off-by: Peng Wang 
> ---
>  drivers/staging/Kconfig  |   2 +
>  drivers/staging/Makefile |   1 +
>  drivers/staging/fbsched/Kconfig  |  10 ++
>  drivers/staging/fbsched/Makefile |   2 +
>  drivers/staging/fbsched/usf.c| 351 
> +++
>  kernel/sched/cpufreq_schedutil.c |  11 +-
>  6 files changed, 376 insertions(+), 1 deletion(-)
>  create mode 100644 

[PATCH -next] media: staging: tegra-vde: Mark tegra_vde_runtime_suspend as __maybe_unused

2020-08-03 Thread YueHaibing
If CONFIG_PM is not set, gcc warns:

drivers/staging/media/tegra-vde/vde.c:916:12:
 warning: 'tegra_vde_runtime_suspend' defined but not used [-Wunused-function]

Make it __maybe_unused to fix this.

Signed-off-by: YueHaibing 
---
 drivers/staging/media/tegra-vde/vde.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/staging/media/tegra-vde/vde.c 
b/drivers/staging/media/tegra-vde/vde.c
index a3c24d96d5b9..2d043d518eef 100644
--- a/drivers/staging/media/tegra-vde/vde.c
+++ b/drivers/staging/media/tegra-vde/vde.c
@@ -913,7 +913,7 @@ static irqreturn_t tegra_vde_isr(int irq, void *data)
return IRQ_HANDLED;
 }
 
-static int tegra_vde_runtime_suspend(struct device *dev)
+static __maybe_unused int tegra_vde_runtime_suspend(struct device *dev)
 {
struct tegra_vde *vde = dev_get_drvdata(dev);
int err;
-- 
2.17.1


___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel


Re: [PATCH 0/3] Modernize tasklet callback API

2020-08-03 Thread Allen
Kees,

>
> [heavily trimmed CC list because I think lkml is ignoring this
> thread...]
>
> On Thu, Jul 30, 2020 at 09:03:55AM +0200, Thomas Gleixner wrote:
> > Kees,
> >
> > Kees Cook  writes:
> > > This is the infrastructure changes to prepare the tasklet API for
> > > conversion to passing the tasklet struct as the callback argument instead
> > > of an arbitrary unsigned long. The first patch details why this is useful
> > > (it's the same rationale as the timer_struct changes from a bit ago:
> > > less abuse during memory corruption attacks, more in line with existing
> > > ways of doing things in the kernel, save a little space in struct,
> > > etc). Notably, the existing tasklet API use is much less messy, so there
> > > is less to clean up.
> > >
> > > It's not clear to me which tree this should go through... Greg since it
> > > starts with a USB clean-up, -tip for timer or interrupt, or if I should
> > > just carry it. I'm open to suggestions, but if I don't hear otherwise,
> > > I'll just carry it.
> > >
> > > My goal is to have this merged for v5.9-rc1 so that during the v5.10
> > > development cycle the new API will be available. The entire tree of
> > > changes is here[1] currently, but to split it up by maintainer the
> > > infrastructure changes need to be landed first.
> > >
> > > Review and Acks appreciated! :)
> >
> > I'd rather see tasklets vanish from the planet completely, but that's
> > going to be a daring feat. So, grudgingly:
>
> Understood! I will update the comments near the tasklet API.
>
> > Acked-by: Thomas Gleixner 
>

Here's the series re-based on top of 5.8
https://github.com/allenpais/tasklets/tree/V3

Let me know how you would want these to be reviewed.

Also, I was thinking if removing tasklets completely could be a task
on KSPP wiki. If yes, I did like to take ownership of that task. I have a
couple of ideas in mind, which could be discussed in a separate email.

Thanks.

-- 
   - Allen
___
devel mailing list
de...@linuxdriverproject.org
http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel