SHARE
TWEET

Untitled

a guest Jan 4th, 2015 307 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. diff -rupN old/arch/arm/mach-msm/cpuidle.c new/arch/arm/mach-msm/cpuidle.c
  2. --- old/arch/arm/mach-msm/cpuidle.c     2014-11-23 20:39:12.000000000 +0800
  3. +++ new/arch/arm/mach-msm/cpuidle.c     2014-12-03 10:40:02.000000000 +0800
  4. @@ -100,7 +100,6 @@ static int msm_cpuidle_enter(
  5.                         &__get_cpu_var(msm_cpuidle_notifiers);
  6.  #endif
  7.  
  8. -       local_irq_disable();
  9.  
  10.  #ifdef CONFIG_MSM_SLEEP_STATS
  11.         atomic_notifier_call_chain(head, MSM_CPUIDLE_STATE_ENTER, NULL);
  12. diff -rupN old/arch/arm/mach-msm/pm-8x60.c new/arch/arm/mach-msm/pm-8x60.c
  13. --- old/arch/arm/mach-msm/pm-8x60.c     2014-11-23 20:41:52.000000000 +0800
  14. +++ new/arch/arm/mach-msm/pm-8x60.c     2014-12-03 10:40:02.000000000 +0800
  15. @@ -343,8 +343,8 @@ mode_sysfs_add_cpu_exit:
  16.  
  17.  static int __init msm_pm_mode_sysfs_add(void)
  18.  {
  19. -       struct kobject *module_kobj;
  20. -       struct kobject *modes_kobj;
  21. +       struct kobject *module_kobj = NULL;
  22. +       struct kobject *modes_kobj = NULL;
  23.         unsigned int cpu;
  24.         int ret;
  25.  
  26. diff -rupN old/drivers/i2c/busses/i2c-qup.c new/drivers/i2c/busses/i2c-qup.c
  27. --- old/drivers/i2c/busses/i2c-qup.c    2014-10-02 17:59:20.000000000 +0800
  28. +++ new/drivers/i2c/busses/i2c-qup.c    2014-12-03 11:59:16.000000000 +0800
  29. @@ -36,6 +36,8 @@ MODULE_LICENSE("GPL v2");
  30.  MODULE_VERSION("0.2");
  31.  MODULE_ALIAS("platform:i2c_qup");
  32.  
  33. +#define TEST_RAMDUMP 0
  34. +
  35.  static int i2c_debug_flag;
  36.  enum {
  37.         QUP_CONFIG              = 0x0,
  38. @@ -285,7 +287,7 @@ qup_i2c_interrupt(int irq, void *devid)
  39.         }
  40.  
  41.         if (status & I2C_STATUS_ERROR_MASK) {
  42. -               dev_info(dev->dev, "QUP: I2C status flags :0x%x, irq:%d\n",
  43. +               dev_err(dev->dev, "QUP: I2C status flags :0x%x, irq:%d\n",
  44.                         status, irq);
  45.                 err = status;
  46.                
  47. @@ -294,12 +296,11 @@ qup_i2c_interrupt(int irq, void *devid)
  48.                         /* Ensure that state is written before ISR exits */
  49.                         mb();
  50.                 }
  51. -
  52.                 goto intr_done;
  53.         }
  54.  
  55.         if (status1 & 0x7F) {
  56. -               dev_info(dev->dev, "QUP: QUP status flags :0x%x\n", status1);
  57. +               dev_err(dev->dev, "QUP: QUP status flags :0x%x\n", status1);
  58.                 err = -status1;
  59.                
  60.                 if (dev->num_irqs == 1) {
  61. @@ -754,7 +755,7 @@ static void qup_i2c_recover_bus_busy(str
  62.                              __func__, dev->adapter.nr, gpio_clk, gpio_dat);
  63.  
  64.         if ((gpio_clk == -1) && (gpio_dat == -1)) {
  65. -               dev_info(dev->dev, "Recovery failed due to undefined GPIO's\n");
  66. +               dev_err(dev->dev, "Recovery failed due to undefined GPIO's\n");
  67.                 return;
  68.         }
  69.  
  70. @@ -762,7 +763,7 @@ static void qup_i2c_recover_bus_busy(str
  71.         for (i = 0; i < ARRAY_SIZE(i2c_rsrcs); ++i) {
  72.                 if (msm_gpiomux_write(dev->i2c_gpios[i], GPIOMUX_ACTIVE,
  73.                                 &recovery_config, &old_gpio_setting[i])) {
  74. -                       dev_info(dev->dev, "GPIO pins have no active setting\n");
  75. +                       dev_err(dev->dev, "GPIO pins have no active setting\n");
  76.                         goto recovery_end;
  77.                 }
  78.         }
  79. diff -rupN old/drivers/input/touchscreen/synaptics_3200.c new/drivers/input/touchscreen/synaptics_3200.c
  80. --- old/drivers/input/touchscreen/synaptics_3200.c      2014-11-20 18:43:20.000000000 +0800
  81. +++ new/drivers/input/touchscreen/synaptics_3200.c      2014-12-03 12:39:54.000000000 +0800
  82. @@ -4064,7 +4064,7 @@ err_check_functionality_failed:
  83.         return ret;
  84.  }
  85.  
  86. -static int __devexit synaptics_ts_remove(struct i2c_client *client)
  87. +static int synaptics_ts_remove(struct i2c_client *client)
  88.  {
  89.         struct synaptics_ts_data *ts = i2c_get_clientdata(client);
  90.         unregister_early_suspend(&ts->early_suspend);
  91. diff -rupN old/drivers/usb/core/hcd.c new/drivers/usb/core/hcd.c
  92. --- old/drivers/usb/core/hcd.c  2014-08-18 18:52:28.000000000 +0800
  93. +++ new/drivers/usb/core/hcd.c  2014-12-03 09:57:30.000000000 +0800
  94. @@ -44,7 +44,6 @@
  95.  
  96.  #include "usb.h"
  97.  
  98. -#include <mach/board_htc.h>
  99.  
  100.  
  101.  
  102. @@ -1619,14 +1618,7 @@ void usb_hcd_resume_root_hub (struct usb
  103.         spin_lock_irqsave (&hcd_root_hub_lock, flags);
  104.         if (hcd->rh_registered) {
  105.                 set_bit(HCD_FLAG_WAKEUP_PENDING, &hcd->flags);
  106. -              
  107. -               if (hcd->product_desc && !strncmp(hcd->product_desc, "Qualcomm EHCI Host Controller using HSIC", 40)) {
  108. -                       if (get_radio_flag() & RADIO_FLAG_USB_UPLOAD)
  109. -                               pr_info("%s[%d]: Queue hcd->wakeup_work\n", __FUNCTION__, __LINE__);
  110. -                       queue_work(pm_rt_wq, &hcd->wakeup_work);
  111. -               } else
  112. -              
  113. -                       queue_work(pm_wq, &hcd->wakeup_work);
  114. +               queue_work(pm_wq, &hcd->wakeup_work);
  115.         }
  116.         spin_unlock_irqrestore (&hcd_root_hub_lock, flags);
  117.  }
  118. diff -rupN old/drivers/usb/host/ehci-hcd.c new/drivers/usb/host/ehci-hcd.c
  119. --- old/drivers/usb/host/ehci-hcd.c     2014-08-18 18:52:36.000000000 +0800
  120. +++ new/drivers/usb/host/ehci-hcd.c     2014-12-03 12:47:18.000000000 +0800
  121. @@ -788,8 +788,6 @@ static irqreturn_t ehci_irq (struct usb_
  122.        
  123.         if (unlikely ((status & STS_FATAL) != 0)) {
  124.                 ehci_err(ehci, "fatal error\n");
  125. -               if (hcd->driver->dump_qh_qtd)
  126. -                       hcd->driver->dump_qh_qtd(hcd);
  127.                 if (hcd->driver->dump_regs)
  128.                         hcd->driver->dump_regs(hcd);
  129.                
  130. diff -rupN old/drivers/usb/host/ehci-msm-hsic.c new/drivers/usb/host/ehci-msm-hsic.c
  131. --- old/drivers/usb/host/ehci-msm-hsic.c        2014-11-16 21:32:02.000000000 +0800
  132. +++ new/drivers/usb/host/ehci-msm-hsic.c        2014-12-03 12:30:32.000000000 +0800
  133. @@ -1,6 +1,6 @@
  134.  /* ehci-msm-hsic.c - HSUSB Host Controller Driver Implementation
  135.   *
  136. - * Copyright (c) 2011-2012, Code Aurora Forum. All rights reserved.
  137. + * Copyright (c) 2011-2013, The Linux Foundation. All rights reserved.
  138.   *
  139.   * Partly derived from ehci-fsl.c and ehci-hcd.c
  140.   * Copyright (c) 2000-2004 by David Brownell
  141. @@ -403,96 +403,6 @@ static inline struct usb_hcd *hsic_to_hc
  142.         return container_of((void *) mehci, struct usb_hcd, hcd_priv);
  143.  }
  144.  
  145. -
  146. -static void dump_qh_qtd(struct usb_hcd *hcd)
  147. -{
  148. -       struct msm_hsic_hcd *mehci = hcd_to_hsic(hcd);
  149. -       struct ehci_hcd *ehci = &mehci->ehci;
  150. -       struct ehci_qh  *head, *qh;
  151. -       struct ehci_qh_hw *hw;
  152. -       struct ehci_qtd *qtd;
  153. -       struct list_head *entry, *tmp;
  154. -       struct ehci_qtd *qtd1;
  155. -
  156. -       pr_info("-----------------------------DUMPING EHCI QHs & QTDs-------------------------------\n");
  157. -
  158. -       head = ehci->async;
  159. -       hw = head->hw;
  160. -       pr_info("Current QH: %p\n",head);
  161. -       pr_info("Overlay:\n next %08x, info %x %x, cur qtd %x\n", hw->hw_next, hw->hw_info1, hw->hw_info2, hw->hw_current);
  162. -       qtd =  (struct ehci_qtd *)&hw->hw_qtd_next;
  163. -       pr_info("Current QTD: %p\n",qtd);
  164. -       pr_info("td %p, next qtd %08x %08x, token %08x p0=%08x\n", qtd,
  165. -               hc32_to_cpup(ehci, &qtd->hw_next),
  166. -               hc32_to_cpup(ehci, &qtd->hw_alt_next),
  167. -               hc32_to_cpup(ehci, &qtd->hw_token),
  168. -               hc32_to_cpup(ehci, &qtd->hw_buf [0]));
  169. -       if (qtd->hw_buf [1])
  170. -               pr_info("  p1=%08x p2=%08x p3=%08x p4=%08x\n",
  171. -                       hc32_to_cpup(ehci, &qtd->hw_buf[1]),
  172. -                       hc32_to_cpup(ehci, &qtd->hw_buf[2]),
  173. -                       hc32_to_cpup(ehci, &qtd->hw_buf[3]),
  174. -                       hc32_to_cpup(ehci, &qtd->hw_buf[4]));
  175. -       pr_info("---------------------------LIST OF QTDs for current QH: %p---------------------------------\n", head);
  176. -       list_for_each_safe (entry, tmp, &head->qtd_list) {
  177. -
  178. -       qtd1 = list_entry (entry, struct ehci_qtd, qtd_list);
  179. -       pr_info("td %p, next qtd %08x %08x, token %08x p0=%08x\n", qtd1,
  180. -                       hc32_to_cpup(ehci, &qtd1->hw_next),
  181. -                       hc32_to_cpup(ehci, &qtd1->hw_alt_next),
  182. -                       hc32_to_cpup(ehci, &qtd1->hw_token),
  183. -                       hc32_to_cpup(ehci, &qtd1->hw_buf [0]));
  184. -       if (qtd->hw_buf [1])
  185. -               pr_info("  p1=%08x p2=%08x p3=%08x p4=%08x\n",
  186. -                               hc32_to_cpup(ehci, &qtd1->hw_buf[1]),
  187. -                               hc32_to_cpup(ehci, &qtd1->hw_buf[2]),
  188. -                               hc32_to_cpup(ehci, &qtd1->hw_buf[3]),
  189. -                               hc32_to_cpup(ehci, &qtd1->hw_buf[4]));
  190. -
  191. -       }
  192. -       qh = head->qh_next.qh;
  193. -       while (qh){
  194. -               pr_info("---------------------------QH %p--------------------------\n",qh);
  195. -               hw = qh->hw;
  196. -               pr_info("Current QH: %p\n",qh);
  197. -               pr_info("Overlay:\n next %08x, info %x %x, cur qtd %x\n", hw->hw_next, hw->hw_info1, hw->hw_info2, hw->hw_current);
  198. -
  199. -               qtd = (struct ehci_qtd *)&hw->hw_qtd_next;
  200. -               pr_info("Current QTD: %p\n",qtd);
  201. -               pr_info("td %p, next qtd %08x %08x, token %08x p0=%08x\n", qtd,
  202. -                               hc32_to_cpup(ehci, &qtd->hw_next),
  203. -                               hc32_to_cpup(ehci, &qtd->hw_alt_next),
  204. -                               hc32_to_cpup(ehci, &qtd->hw_token),
  205. -                               hc32_to_cpup(ehci, &qtd->hw_buf [0]));
  206. -               if (qtd->hw_buf [1])
  207. -                       pr_info("  p1=%08x p2=%08x p3=%08x p4=%08x\n",
  208. -                                       hc32_to_cpup(ehci, &qtd->hw_buf[1]),
  209. -                                       hc32_to_cpup(ehci, &qtd->hw_buf[2]),
  210. -                                       hc32_to_cpup(ehci, &qtd->hw_buf[3]),
  211. -                                       hc32_to_cpup(ehci, &qtd->hw_buf[4]));
  212. -
  213. -               list_for_each_safe (entry, tmp, &head->qtd_list) {
  214. -
  215. -               qtd1 = list_entry (entry, struct ehci_qtd, qtd_list);
  216. -               pr_info("td %p, next qtd %08x %08x, token %08x p0=%08x\n", qtd1,
  217. -                               hc32_to_cpup(ehci, &qtd1->hw_next),
  218. -                               hc32_to_cpup(ehci, &qtd1->hw_alt_next),
  219. -                               hc32_to_cpup(ehci, &qtd1->hw_token),
  220. -                               hc32_to_cpup(ehci, &qtd1->hw_buf [0]));
  221. -               if (qtd->hw_buf [1])
  222. -                       pr_info("  p1=%08x p2=%08x p3=%08x p4=%08x\n",
  223. -                                       hc32_to_cpup(ehci, &qtd1->hw_buf[1]),
  224. -                                       hc32_to_cpup(ehci, &qtd1->hw_buf[2]),
  225. -                                       hc32_to_cpup(ehci, &qtd1->hw_buf[3]),
  226. -                                       hc32_to_cpup(ehci, &qtd1->hw_buf[4]));
  227. -
  228. -               }
  229. -
  230. -               qh = qh->qh_next.qh;
  231. -       }
  232. -}
  233. -
  234. -
  235.  static void dump_hsic_regs(struct usb_hcd *hcd)
  236.  {
  237.         int i;
  238. @@ -674,19 +584,19 @@ static void register_usb_notification_fu
  239.  
  240.  #define ULPI_IO_TIMEOUT_USEC   (10 * 1000)
  241.  
  242. -#define USB_PHY_VDD_DIG_VOL_NONE       0
  243. -#define USB_PHY_VDD_DIG_VOL_MIN                945000
  244. -#define USB_PHY_VDD_DIG_VOL_MAX                1320000
  245. +#define USB_PHY_VDD_DIG_VOL_NONE       0 /*uV */
  246. +#define USB_PHY_VDD_DIG_VOL_MIN                945000 /* uV */
  247. +#define USB_PHY_VDD_DIG_VOL_MAX                1320000 /* uV */
  248.  
  249.  #define HSIC_DBG1_REG          0x38
  250.  
  251. -static const int vdd_val[VDD_TYPE_MAX][VDD_VAL_MAX] = {
  252. -               {  
  253. +static int vdd_val[VDD_TYPE_MAX][VDD_VAL_MAX] = {
  254. +               {   /* VDD_CX CORNER Voting */
  255.                         [VDD_NONE]      = RPM_VREG_CORNER_NONE,
  256.                         [VDD_MIN]       = RPM_VREG_CORNER_NOMINAL,
  257.                         [VDD_MAX]       = RPM_VREG_CORNER_HIGH,
  258.                 },
  259. -               {  
  260. +               {   /* VDD_CX Voltage Voting */
  261.                         [VDD_NONE]      = USB_PHY_VDD_DIG_VOL_NONE,
  262.                         [VDD_MIN]       = USB_PHY_VDD_DIG_VOL_MIN,
  263.                         [VDD_MAX]       = USB_PHY_VDD_DIG_VOL_MAX,
  264. @@ -1716,7 +1626,6 @@ static struct hc_driver msm_hsic_driver
  265.  
  266.         .log_urb_complete       = dbg_log_event,
  267.         .dump_regs              = dump_hsic_regs,
  268. -       .dump_qh_qtd            =  dump_qh_qtd,
  269.  
  270.         .reset_sof_bug_handler  = ehci_hsic_reset_sof_bug_handler,
  271.  };
  272. @@ -2142,7 +2051,6 @@ static int __devinit ehci_hsic_msm_probe
  273.                 dev_dbg(mehci->dev, "wakeup_irq: %d\n", mehci->wakeup_irq);
  274.         }
  275.  
  276. -
  277.         ret = msm_hsic_init_clocks(mehci, 1);
  278.         if (ret) {
  279.                 dev_err(&pdev->dev, "unable to initialize clocks\n");
  280. @@ -2227,8 +2135,8 @@ static int __devinit ehci_hsic_msm_probe
  281.                     msm_bus_scale_register_client(pdata->bus_scale_table);
  282.                
  283.                 if (mehci->bus_perf_client) {
  284. -                               mehci->bus_vote = true;
  285. -                               queue_work(ehci_wq, &mehci->bus_vote_w);
  286. +                       mehci->bus_vote = true;
  287. +                       queue_work(ehci_wq, &mehci->bus_vote_w);
  288.                 } else {
  289.                         dev_err(&pdev->dev, "%s: Failed to register BUS "
  290.                                                 "scaling client!!\n", __func__);
  291. @@ -2277,15 +2185,6 @@ put_hcd:
  292.         return ret;
  293.  }
  294.  
  295. -#if defined(CONFIG_ARCH_APQ8064) && defined(CONFIG_USB_EHCI_MSM_HSIC)
  296. -extern int mdm_is_in_restart;
  297. -static void dbg_hsic_usage_count_delay_work_fn(struct work_struct *work)
  298. -{
  299. -    panic("msm_hsic_host usage count is not 0 !!!");
  300. -}
  301. -static DECLARE_DELAYED_WORK(dbg_hsic_usage_count_delay_work, dbg_hsic_usage_count_delay_work_fn);
  302. -#endif
  303. -
  304.  static int __devexit ehci_hsic_msm_remove(struct platform_device *pdev)
  305.  {
  306.         struct usb_hcd *hcd = platform_get_drvdata(pdev);
  307. @@ -2340,21 +2239,6 @@ static int __devexit ehci_hsic_msm_remov
  308.         iounmap(hcd->regs);
  309.         usb_put_hcd(hcd);
  310.  
  311. -      
  312. -       #if defined(CONFIG_ARCH_APQ8064) && defined(CONFIG_USB_EHCI_MSM_HSIC)
  313. -       if (pdev) {
  314. -               int usage_count = atomic_read(&(pdev->dev.power.usage_count));
  315. -               dev_info(&(pdev->dev), "%s[%d] usage_count is [%d] msm_hsic_host_dev:0x%p &pdev->dev:0x%p mdm_is_in_restart:%d\n",
  316. -                       __func__, __LINE__, usage_count, msm_hsic_host_dev, &(pdev->dev), mdm_is_in_restart);
  317. -
  318. -               if (mdm_is_in_restart && usage_count != 0) {
  319. -                       pr_info("%s[%d] !!! usage_count:%d is not 0 !!!\n", __func__, __LINE__, usage_count);
  320. -                       atomic_set(&(pdev->dev.power.usage_count), 0);
  321. -               }
  322. -       }
  323. -       #endif
  324. -      
  325. -
  326.         return 0;
  327.  }
  328.  
  329. diff -rupN old/include/linux/pm_runtime.h new/include/linux/pm_runtime.h
  330. --- old/include/linux/pm_runtime.h      2014-11-17 08:45:14.000000000 +0800
  331. +++ new/include/linux/pm_runtime.h      2014-12-03 09:58:34.000000000 +0800
  332. @@ -23,7 +23,6 @@
  333.  #ifdef CONFIG_PM_RUNTIME
  334.  
  335.  extern struct workqueue_struct *pm_wq;
  336. -extern struct workqueue_struct *pm_rt_wq;
  337.  extern int __pm_runtime_idle(struct device *dev, int rpmflags);
  338.  extern int __pm_runtime_suspend(struct device *dev, int rpmflags);
  339.  extern int __pm_runtime_resume(struct device *dev, int rpmflags);
  340. diff -rupN old/include/linux/usb/hcd.h new/include/linux/usb/hcd.h
  341. --- old/include/linux/usb/hcd.h 2014-08-18 18:52:02.000000000 +0800
  342. +++ new/include/linux/usb/hcd.h 2014-12-03 12:47:44.000000000 +0800
  343. @@ -245,7 +245,6 @@ struct hc_driver {
  344.         void    (*log_urb_complete)(struct urb *urb, char * event,
  345.                         unsigned extra);
  346.         void    (*dump_regs)(struct usb_hcd *);
  347. -       void    (*dump_qh_qtd)(struct usb_hcd *);
  348.         void    (*reset_sof_bug_handler)(struct usb_hcd *hcd, u32 val);
  349.        
  350.         int     (*set_int_latency)(struct usb_hcd *hcd, int latency);
  351. diff -rupN old/kernel/power/main.c new/kernel/power/main.c
  352. --- old/kernel/power/main.c     2014-11-17 08:29:32.000000000 +0800
  353. +++ new/kernel/power/main.c     2014-12-03 10:22:34.000000000 +0800
  354. @@ -509,7 +509,7 @@ perflock_show(struct kobject *kobj, stru
  355.         if (is_perf_lock_active(&user_cpu_perf_lock) != 0)
  356.                 perf_enable |= (1 << PERF_LOCK_INVALID);
  357.  
  358. -       return sprintf(buf, "%d", perf_enable);
  359. +       return sprintf(buf, "%d\n", perf_enable);
  360.  }
  361.  
  362.  static inline void user_cpufreq_perf_lock(int level, int val)
  363. @@ -626,7 +626,7 @@ cpufreq_ceiling_show(struct kobject *kob
  364.         if (is_perf_lock_active(&user_cpu_ceiling_lock) != 0)
  365.                 ceiling_enable |= (1 << PERF_LOCK_INVALID);
  366.  
  367. -       return sprintf(buf, "%d", ceiling_enable);
  368. +       return sprintf(buf, "%d\n", ceiling_enable);
  369.  }
  370.  
  371.  static inline void user_cpufreq_ceiling_lock(int level, int val)
  372. @@ -695,7 +695,7 @@ cpunum_floor_show(struct kobject *kobj,
  373.         else
  374.             i++;
  375.  
  376. -       return sprintf(buf, "%d", i);
  377. +       return sprintf(buf, "%d\n", i);
  378.  }
  379.  
  380.  static ssize_t
  381. @@ -734,7 +734,7 @@ cpunum_ceiling_show(struct kobject *kobj
  382.         else
  383.             i++;
  384.  
  385. -       return sprintf(buf, "%d", i);
  386. +       return sprintf(buf, "%d\n", i);
  387.  }
  388.  
  389.  static ssize_t
  390. @@ -841,15 +841,11 @@ static struct attribute_group attr_group
  391.  
  392.  #ifdef CONFIG_PM_RUNTIME
  393.  struct workqueue_struct *pm_wq;
  394. -struct workqueue_struct *pm_rt_wq;
  395.  EXPORT_SYMBOL_GPL(pm_wq);
  396.  
  397.  static int __init pm_start_workqueue(void)
  398.  {
  399.         pm_wq = alloc_workqueue("pm", WQ_FREEZABLE, 0);
  400. -      
  401. -       pm_rt_wq = alloc_workqueue("pm_rt", WQ_FREEZABLE | WQ_HIGHPRI , 0);
  402. -      
  403.  
  404.         return pm_wq ? 0 : -ENOMEM;
  405.  }
  406. @@ -875,7 +871,6 @@ static int __init pm_init(void)
  407.         tc_ev_timer.function = &tc_ev_stop;
  408.         tc_ev_processed = 1;
  409.  
  410. -
  411.         power_kobj = kobject_create_and_add("power", NULL);
  412.  #ifdef CONFIG_PERFLOCK
  413.         perf_lock_init(&user_cpu_perf_lock, TYPE_PERF_LOCK, PERF_LOCK_HIGHEST, "User CPU Highest Perflock");
  414. diff -rupN old/kernel/sched/core.c new/kernel/sched/core.c
  415. --- old/kernel/sched/core.c     2014-11-27 10:51:14.000000000 +0800
  416. +++ new/kernel/sched/core.c     2014-12-03 10:19:00.000000000 +0800
  417. @@ -1242,15 +1242,17 @@ static int
  418.  try_to_wake_up(struct task_struct *p, unsigned int state, int wake_flags)
  419.  {
  420.         unsigned long flags;
  421. -       int cpu, success = 0;
  422. +       int cpu, src_cpu, success = 0;
  423.  
  424.         smp_wmb();
  425.         raw_spin_lock_irqsave(&p->pi_lock, flags);
  426. +       src_cpu = task_cpu(p);
  427. +       cpu = src_cpu;
  428. +
  429.         if (!(p->state & state))
  430.                 goto out;
  431.  
  432.         success = 1;
  433. -       cpu = task_cpu(p);
  434.  
  435.         if (p->on_rq && ttwu_remote(p, wake_flags))
  436.                 goto stat;
  437. @@ -1273,7 +1275,7 @@ try_to_wake_up(struct task_struct *p, un
  438.                 p->sched_class->task_waking(p);
  439.  
  440.         cpu = select_task_rq(p, SD_BALANCE_WAKE, wake_flags);
  441. -       if (task_cpu(p) != cpu) {
  442. +       if (src_cpu != cpu) {
  443.                 wake_flags |= WF_MIGRATED;
  444.                 set_task_cpu(p, cpu);
  445.         }
  446. @@ -1321,8 +1323,7 @@ out:
  447.  
  448.  int wake_up_process(struct task_struct *p)
  449.  {
  450. -       WARN_ON(task_is_stopped_or_traced(p));
  451. -       return try_to_wake_up(p, TASK_NORMAL, 0);
  452. +       return try_to_wake_up(p, TASK_ALL, 0);
  453.  }
  454.  EXPORT_SYMBOL(wake_up_process);
  455.  
  456. @@ -1659,7 +1660,6 @@ unsigned long this_cpu_load(void)
  457.  }
  458.  
  459.  
  460. -
  461.  static atomic_long_t calc_load_tasks;
  462.  static unsigned long calc_load_update;
  463.  unsigned long avenrun[3];
  464. @@ -1847,7 +1847,6 @@ static void calc_load_account_active(str
  465.         this_rq->calc_load_update += LOAD_FREQ;
  466.  }
  467.  
  468. -
  469.  #define DEGRADE_SHIFT          7
  470.  static const unsigned char
  471.                 degrade_zero_ticks[CPU_LOAD_IDX_MAX] = {0, 8, 32, 64, 128};
  472. @@ -3132,7 +3131,7 @@ int sched_setscheduler(struct task_struc
  473.  {
  474.         return __sched_setscheduler(p, policy, param, true);
  475.  }
  476. -EXPORT_SYMBOL(sched_setscheduler);
  477. +EXPORT_SYMBOL_GPL(sched_setscheduler);
  478.  
  479.  int sched_setscheduler_nocheck(struct task_struct *p, int policy,
  480.                                const struct sched_param *param)
  481. @@ -5031,6 +5030,7 @@ struct sched_domain *build_sched_domain(
  482.         if (!sd)
  483.                 return child;
  484.  
  485. +       set_domain_attribute(sd, attr);
  486.         cpumask_and(sched_domain_span(sd), cpu_map, tl->mask(cpu));
  487.         if (child) {
  488.                 sd->level = child->level + 1;
  489. @@ -5038,7 +5038,6 @@ struct sched_domain *build_sched_domain(
  490.                 child->parent = sd;
  491.         }
  492.         sd->child = child;
  493. -       set_domain_attribute(sd, attr);
  494.  
  495.         return sd;
  496.  }
  497. diff -rupN old/kernel/signal.c new/kernel/signal.c
  498. --- old/kernel/signal.c 2014-11-17 10:37:42.000000000 +0800
  499. +++ new/kernel/signal.c 2014-12-03 11:52:24.000000000 +0800
  500. @@ -1395,7 +1395,6 @@ static void ptrace_stop(int exit_code, i
  501.                 if (gstop_done)
  502.                         do_notify_parent_cldstop(current, false, why);
  503.  
  504. -              
  505.                 __set_current_state(TASK_RUNNING);
  506.                 if (clear_code)
  507.                         current->exit_code = 0;
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top