summaryrefslogtreecommitdiff
path: root/packages/sys-kernel/linux-sources-redcore-lts/files/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/sys-kernel/linux-sources-redcore-lts/files/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch')
-rw-r--r--packages/sys-kernel/linux-sources-redcore-lts/files/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch311
1 files changed, 311 insertions, 0 deletions
diff --git a/packages/sys-kernel/linux-sources-redcore-lts/files/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch b/packages/sys-kernel/linux-sources-redcore-lts/files/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch
new file mode 100644
index 0000000..f9f274c
--- /dev/null
+++ b/packages/sys-kernel/linux-sources-redcore-lts/files/0008-Replace-all-calls-to-schedule_timeout_interruptible-.patch
@@ -0,0 +1,311 @@
+From 3ef5df78c2f425115b87f0f2f59fd189c0f1bbe3 Mon Sep 17 00:00:00 2001
+From: Con Kolivas <kernel@kolivas.org>
+Date: Mon, 20 Feb 2017 13:30:07 +1100
+Subject: [PATCH 08/16] Replace all calls to schedule_timeout_interruptible of
+ potentially under 50ms to use schedule_msec_hrtimeout_interruptible.
+
+---
+ drivers/hwmon/fam15h_power.c | 2 +-
+ drivers/iio/light/tsl2563.c | 6 +-----
+ drivers/media/i2c/msp3400-driver.c | 4 ++--
+ drivers/media/pci/ivtv/ivtv-gpio.c | 6 +++---
+ drivers/media/radio/radio-mr800.c | 2 +-
+ drivers/media/radio/radio-tea5777.c | 2 +-
+ drivers/media/radio/tea575x.c | 2 +-
+ drivers/parport/ieee1284.c | 2 +-
+ drivers/parport/ieee1284_ops.c | 2 +-
+ drivers/platform/x86/intel_ips.c | 8 ++++----
+ net/core/pktgen.c | 2 +-
+ sound/soc/codecs/wm8350.c | 12 ++++++------
+ sound/soc/codecs/wm8900.c | 2 +-
+ sound/soc/codecs/wm9713.c | 4 ++--
+ 14 files changed, 26 insertions(+), 30 deletions(-)
+
+diff --git a/drivers/hwmon/fam15h_power.c b/drivers/hwmon/fam15h_power.c
+index 9545a346044f..c24cf1302ec7 100644
+--- a/drivers/hwmon/fam15h_power.c
++++ b/drivers/hwmon/fam15h_power.c
+@@ -237,7 +237,7 @@ static ssize_t power1_average_show(struct device *dev,
+ prev_ptsc[cu] = data->cpu_sw_pwr_ptsc[cu];
+ }
+
+- leftover = schedule_timeout_interruptible(msecs_to_jiffies(data->power_period));
++ leftover = schedule_msec_hrtimeout_interruptible((data->power_period));
+ if (leftover)
+ return 0;
+
+diff --git a/drivers/iio/light/tsl2563.c b/drivers/iio/light/tsl2563.c
+index 7599693f7fe9..452090739138 100644
+--- a/drivers/iio/light/tsl2563.c
++++ b/drivers/iio/light/tsl2563.c
+@@ -282,11 +282,7 @@ static void tsl2563_wait_adc(struct tsl2563_chip *chip)
+ default:
+ delay = 402;
+ }
+- /*
+- * TODO: Make sure that we wait at least required delay but why we
+- * have to extend it one tick more?
+- */
+- schedule_timeout_interruptible(msecs_to_jiffies(delay) + 2);
++ schedule_msec_hrtimeout_interruptible(delay + 1);
+ }
+
+ static int tsl2563_adjust_gainlevel(struct tsl2563_chip *chip, u16 adc)
+diff --git a/drivers/media/i2c/msp3400-driver.c b/drivers/media/i2c/msp3400-driver.c
+index 3db966db83eb..f0fab7676f72 100644
+--- a/drivers/media/i2c/msp3400-driver.c
++++ b/drivers/media/i2c/msp3400-driver.c
+@@ -179,7 +179,7 @@ static int msp_read(struct i2c_client *client, int dev, int addr)
+ break;
+ dev_warn(&client->dev, "I/O error #%d (read 0x%02x/0x%02x)\n", err,
+ dev, addr);
+- schedule_timeout_interruptible(msecs_to_jiffies(10));
++ schedule_msec_hrtimeout_interruptible((10));
+ }
+ if (err == 3) {
+ dev_warn(&client->dev, "resetting chip, sound will go off.\n");
+@@ -220,7 +220,7 @@ static int msp_write(struct i2c_client *client, int dev, int addr, int val)
+ break;
+ dev_warn(&client->dev, "I/O error #%d (write 0x%02x/0x%02x)\n", err,
+ dev, addr);
+- schedule_timeout_interruptible(msecs_to_jiffies(10));
++ schedule_msec_hrtimeout_interruptible((10));
+ }
+ if (err == 3) {
+ dev_warn(&client->dev, "resetting chip, sound will go off.\n");
+diff --git a/drivers/media/pci/ivtv/ivtv-gpio.c b/drivers/media/pci/ivtv/ivtv-gpio.c
+index f752f3993687..23372af61ebf 100644
+--- a/drivers/media/pci/ivtv/ivtv-gpio.c
++++ b/drivers/media/pci/ivtv/ivtv-gpio.c
+@@ -117,7 +117,7 @@ void ivtv_reset_ir_gpio(struct ivtv *itv)
+ curout = (curout & ~0xF) | 1;
+ write_reg(curout, IVTV_REG_GPIO_OUT);
+ /* We could use something else for smaller time */
+- schedule_timeout_interruptible(msecs_to_jiffies(1));
++ schedule_msec_hrtimeout_interruptible((1));
+ curout |= 2;
+ write_reg(curout, IVTV_REG_GPIO_OUT);
+ curdir &= ~0x80;
+@@ -137,11 +137,11 @@ int ivtv_reset_tuner_gpio(void *dev, int component, int cmd, int value)
+ curout = read_reg(IVTV_REG_GPIO_OUT);
+ curout &= ~(1 << itv->card->xceive_pin);
+ write_reg(curout, IVTV_REG_GPIO_OUT);
+- schedule_timeout_interruptible(msecs_to_jiffies(1));
++ schedule_msec_hrtimeout_interruptible((1));
+
+ curout |= 1 << itv->card->xceive_pin;
+ write_reg(curout, IVTV_REG_GPIO_OUT);
+- schedule_timeout_interruptible(msecs_to_jiffies(1));
++ schedule_msec_hrtimeout_interruptible((1));
+ return 0;
+ }
+
+diff --git a/drivers/media/radio/radio-mr800.c b/drivers/media/radio/radio-mr800.c
+index c9f59129af79..cb6f8394a5c2 100644
+--- a/drivers/media/radio/radio-mr800.c
++++ b/drivers/media/radio/radio-mr800.c
+@@ -378,7 +378,7 @@ static int vidioc_s_hw_freq_seek(struct file *file, void *priv,
+ retval = -ENODATA;
+ break;
+ }
+- if (schedule_timeout_interruptible(msecs_to_jiffies(10))) {
++ if (schedule_msec_hrtimeout_interruptible((10))) {
+ retval = -ERESTARTSYS;
+ break;
+ }
+diff --git a/drivers/media/radio/radio-tea5777.c b/drivers/media/radio/radio-tea5777.c
+index 04ed1a5d1177..d593d28dc286 100644
+--- a/drivers/media/radio/radio-tea5777.c
++++ b/drivers/media/radio/radio-tea5777.c
+@@ -245,7 +245,7 @@ static int radio_tea5777_update_read_reg(struct radio_tea5777 *tea, int wait)
+ }
+
+ if (wait) {
+- if (schedule_timeout_interruptible(msecs_to_jiffies(wait)))
++ if (schedule_msec_hrtimeout_interruptible((wait)))
+ return -ERESTARTSYS;
+ }
+
+diff --git a/drivers/media/radio/tea575x.c b/drivers/media/radio/tea575x.c
+index 4dc2067bce14..29f4416fb9ae 100644
+--- a/drivers/media/radio/tea575x.c
++++ b/drivers/media/radio/tea575x.c
+@@ -416,7 +416,7 @@ int snd_tea575x_s_hw_freq_seek(struct file *file, struct snd_tea575x *tea,
+ for (;;) {
+ if (time_after(jiffies, timeout))
+ break;
+- if (schedule_timeout_interruptible(msecs_to_jiffies(10))) {
++ if (schedule_msec_hrtimeout_interruptible((10))) {
+ /* some signal arrived, stop search */
+ tea->val &= ~TEA575X_BIT_SEARCH;
+ snd_tea575x_set_freq(tea);
+diff --git a/drivers/parport/ieee1284.c b/drivers/parport/ieee1284.c
+index 74cc6dd982d2..c22c4d5f08d0 100644
+--- a/drivers/parport/ieee1284.c
++++ b/drivers/parport/ieee1284.c
+@@ -215,7 +215,7 @@ int parport_wait_peripheral(struct parport *port,
+ /* parport_wait_event didn't time out, but the
+ * peripheral wasn't actually ready either.
+ * Wait for another 10ms. */
+- schedule_timeout_interruptible(msecs_to_jiffies(10));
++ schedule_msec_hrtimeout_interruptible((10));
+ }
+ }
+
+diff --git a/drivers/parport/ieee1284_ops.c b/drivers/parport/ieee1284_ops.c
+index 5d41dda6da4e..34705f6b423f 100644
+--- a/drivers/parport/ieee1284_ops.c
++++ b/drivers/parport/ieee1284_ops.c
+@@ -537,7 +537,7 @@ size_t parport_ieee1284_ecp_read_data (struct parport *port,
+ /* Yield the port for a while. */
+ if (count && dev->port->irq != PARPORT_IRQ_NONE) {
+ parport_release (dev);
+- schedule_timeout_interruptible(msecs_to_jiffies(40));
++ schedule_msec_hrtimeout_interruptible((40));
+ parport_claim_or_block (dev);
+ }
+ else
+diff --git a/drivers/platform/x86/intel_ips.c b/drivers/platform/x86/intel_ips.c
+index 58dcee562d64..b661b7c071bb 100644
+--- a/drivers/platform/x86/intel_ips.c
++++ b/drivers/platform/x86/intel_ips.c
+@@ -813,7 +813,7 @@ static int ips_adjust(void *data)
+ ips_gpu_lower(ips);
+
+ sleep:
+- schedule_timeout_interruptible(msecs_to_jiffies(IPS_ADJUST_PERIOD));
++ schedule_msec_hrtimeout_interruptible((IPS_ADJUST_PERIOD));
+ } while (!kthread_should_stop());
+
+ dev_dbg(&ips->dev->dev, "ips-adjust thread stopped\n");
+@@ -992,7 +992,7 @@ static int ips_monitor(void *data)
+ seqno_timestamp = get_jiffies_64();
+
+ old_cpu_power = thm_readl(THM_CEC);
+- schedule_timeout_interruptible(msecs_to_jiffies(IPS_SAMPLE_PERIOD));
++ schedule_msec_hrtimeout_interruptible((IPS_SAMPLE_PERIOD));
+
+ /* Collect an initial average */
+ for (i = 0; i < IPS_SAMPLE_COUNT; i++) {
+@@ -1019,7 +1019,7 @@ static int ips_monitor(void *data)
+ mchp_samples[i] = mchp;
+ }
+
+- schedule_timeout_interruptible(msecs_to_jiffies(IPS_SAMPLE_PERIOD));
++ schedule_msec_hrtimeout_interruptible((IPS_SAMPLE_PERIOD));
+ if (kthread_should_stop())
+ break;
+ }
+@@ -1046,7 +1046,7 @@ static int ips_monitor(void *data)
+ * us to reduce the sample frequency if the CPU and GPU are idle.
+ */
+ old_cpu_power = thm_readl(THM_CEC);
+- schedule_timeout_interruptible(msecs_to_jiffies(IPS_SAMPLE_PERIOD));
++ schedule_msec_hrtimeout_interruptible((IPS_SAMPLE_PERIOD));
+ last_sample_period = IPS_SAMPLE_PERIOD;
+
+ setup_deferrable_timer_on_stack(&timer, monitor_timeout,
+diff --git a/net/core/pktgen.c b/net/core/pktgen.c
+index 6e1e10ff433a..be5d6f7142e4 100644
+--- a/net/core/pktgen.c
++++ b/net/core/pktgen.c
+@@ -1992,7 +1992,7 @@ static void pktgen_mark_device(const struct pktgen_net *pn, const char *ifname)
+ mutex_unlock(&pktgen_thread_lock);
+ pr_debug("%s: waiting for %s to disappear....\n",
+ __func__, ifname);
+- schedule_timeout_interruptible(msecs_to_jiffies(msec_per_try));
++ schedule_msec_hrtimeout_interruptible((msec_per_try));
+ mutex_lock(&pktgen_thread_lock);
+
+ if (++i >= max_tries) {
+diff --git a/sound/soc/codecs/wm8350.c b/sound/soc/codecs/wm8350.c
+index 2efc5b41ad0f..3e3248c48c6b 100644
+--- a/sound/soc/codecs/wm8350.c
++++ b/sound/soc/codecs/wm8350.c
+@@ -236,10 +236,10 @@ static void wm8350_pga_work(struct work_struct *work)
+ out2->ramp == WM8350_RAMP_UP) {
+ /* delay is longer over 0dB as increases are larger */
+ if (i >= WM8350_OUTn_0dB)
+- schedule_timeout_interruptible(msecs_to_jiffies
++ schedule_msec_hrtimeout_interruptible(
+ (2));
+ else
+- schedule_timeout_interruptible(msecs_to_jiffies
++ schedule_msec_hrtimeout_interruptible(
+ (1));
+ } else
+ udelay(50); /* doesn't matter if we delay longer */
+@@ -1123,7 +1123,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
+ (platform->dis_out4 << 6));
+
+ /* wait for discharge */
+- schedule_timeout_interruptible(msecs_to_jiffies
++ schedule_msec_hrtimeout_interruptible(
+ (platform->
+ cap_discharge_msecs));
+
+@@ -1139,7 +1139,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
+ WM8350_VBUFEN);
+
+ /* wait for vmid */
+- schedule_timeout_interruptible(msecs_to_jiffies
++ schedule_msec_hrtimeout_interruptible(
+ (platform->
+ vmid_charge_msecs));
+
+@@ -1190,7 +1190,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
+ wm8350_reg_write(wm8350, WM8350_POWER_MGMT_1, pm1);
+
+ /* wait */
+- schedule_timeout_interruptible(msecs_to_jiffies
++ schedule_msec_hrtimeout_interruptible(
+ (platform->
+ vmid_discharge_msecs));
+
+@@ -1208,7 +1208,7 @@ static int wm8350_set_bias_level(struct snd_soc_codec *codec,
+ pm1 | WM8350_OUTPUT_DRAIN_EN);
+
+ /* wait */
+- schedule_timeout_interruptible(msecs_to_jiffies
++ schedule_msec_hrtimeout_interruptible(
+ (platform->drain_msecs));
+
+ pm1 &= ~WM8350_BIASEN;
+diff --git a/sound/soc/codecs/wm8900.c b/sound/soc/codecs/wm8900.c
+index c77b49a29311..fc50456e90a9 100644
+--- a/sound/soc/codecs/wm8900.c
++++ b/sound/soc/codecs/wm8900.c
+@@ -1112,7 +1112,7 @@ static int wm8900_set_bias_level(struct snd_soc_codec *codec,
+ /* Need to let things settle before stopping the clock
+ * to ensure that restart works, see "Stopping the
+ * master clock" in the datasheet. */
+- schedule_timeout_interruptible(msecs_to_jiffies(1));
++ schedule_msec_hrtimeout_interruptible((1));
+ snd_soc_write(codec, WM8900_REG_POWER2,
+ WM8900_REG_POWER2_SYSCLK_ENA);
+ break;
+diff --git a/sound/soc/codecs/wm9713.c b/sound/soc/codecs/wm9713.c
+index 7e4822185feb..0c85a207446a 100644
+--- a/sound/soc/codecs/wm9713.c
++++ b/sound/soc/codecs/wm9713.c
+@@ -199,7 +199,7 @@ static int wm9713_voice_shutdown(struct snd_soc_dapm_widget *w,
+
+ /* Gracefully shut down the voice interface. */
+ snd_soc_update_bits(codec, AC97_HANDSET_RATE, 0x0f00, 0x0200);
+- schedule_timeout_interruptible(msecs_to_jiffies(1));
++ schedule_msec_hrtimeout_interruptible((1));
+ snd_soc_update_bits(codec, AC97_HANDSET_RATE, 0x0f00, 0x0f00);
+ snd_soc_update_bits(codec, AC97_EXTENDED_MID, 0x1000, 0x1000);
+
+@@ -868,7 +868,7 @@ static int wm9713_set_pll(struct snd_soc_codec *codec,
+ wm9713->pll_in = freq_in;
+
+ /* wait 10ms AC97 link frames for the link to stabilise */
+- schedule_timeout_interruptible(msecs_to_jiffies(10));
++ schedule_msec_hrtimeout_interruptible((10));
+ return 0;
+ }
+
+--
+2.11.0
+