Advertisement
jintack

L2 temp diff

Apr 4th, 2016
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 24.39 KB | None | 0 0
  1. diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
  2. index fbe0ca3..73fea00 100644
  3. --- a/arch/arm64/include/asm/arch_timer.h
  4. +++ b/arch/arm64/include/asm/arch_timer.h
  5. @@ -43,6 +43,8 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u32 val)
  6.                 case ARCH_TIMER_REG_TVAL:
  7.                         asm volatile("msr cntp_tval_el0, %0" : : "r" (val));
  8.                         break;
  9. +               default:
  10. +                       break;
  11.                 }
  12.         } else if (access == ARCH_TIMER_VIRT_ACCESS) {
  13.                 switch (reg) {
  14. @@ -52,6 +54,8 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u32 val)
  15.                 case ARCH_TIMER_REG_TVAL:
  16.                         asm volatile("msr cntv_tval_el0, %0" : : "r" (val));
  17.                         break;
  18. +               default:
  19. +                       break;
  20.                 }
  21.         }
  22.  
  23. @@ -71,6 +75,8 @@ u32 arch_timer_reg_read_cp15(int access, enum arch_timer_reg reg)
  24.                 case ARCH_TIMER_REG_TVAL:
  25.                         asm volatile("mrs %0, cntp_tval_el0" : "=r" (val));
  26.                         break;
  27. +               default:
  28. +                       break;
  29.                 }
  30.         } else if (access == ARCH_TIMER_VIRT_ACCESS) {
  31.                 switch (reg) {
  32. @@ -80,6 +86,9 @@ u32 arch_timer_reg_read_cp15(int access, enum arch_timer_reg reg)
  33.                 case ARCH_TIMER_REG_TVAL:
  34.                         asm volatile("mrs %0, cntv_tval_el0" : "=r" (val));
  35.                         break;
  36. +               case ARCH_TIMER_REG_CVAL:
  37. +                       asm volatile("mrs %0, cntv_cval_el0" : "=r" (val));
  38. +                       break;
  39.                 }
  40.         }
  41.  
  42. diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
  43. index 7ed3d75..ca35518 100644
  44. --- a/arch/arm64/kernel/entry.S
  45. +++ b/arch/arm64/kernel/entry.S
  46. @@ -352,6 +352,7 @@ ENDPROC(el1_sync)
  47.  
  48.         .align  6
  49.  el1_irq:
  50. +       hvc #0x7739
  51.         kernel_entry 1
  52.         enable_dbg
  53.  #ifdef CONFIG_TRACE_IRQFLAGS
  54. diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
  55. index 7a63346..cc4146c 100644
  56. --- a/drivers/clocksource/arm_arch_timer.c
  57. +++ b/drivers/clocksource/arm_arch_timer.c
  58. @@ -39,6 +39,7 @@
  59.  #define CNTP_CTL       0x2c
  60.  #define CNTV_TVAL      0x38
  61.  #define CNTV_CTL       0x3c
  62. +#define CNTV_CVAL      0x38
  63.  
  64.  #define ARCH_CP15_TIMER        BIT(0)
  65.  #define ARCH_MEM_TIMER BIT(1)
  66. @@ -157,6 +158,7 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id)
  67.  {
  68.         struct clock_event_device *evt = dev_id;
  69.  
  70. +//     asm volatile("hvc #0x7b00");
  71.         return timer_handler(ARCH_TIMER_VIRT_ACCESS, evt);
  72.  }
  73.  
  74. @@ -222,11 +224,17 @@ static __always_inline void set_next_event(const int access, unsigned long evt,
  75.         ctrl &= ~ARCH_TIMER_CTRL_IT_MASK;
  76.         arch_timer_reg_write(access, ARCH_TIMER_REG_TVAL, evt, clk);
  77.         arch_timer_reg_write(access, ARCH_TIMER_REG_CTRL, ctrl, clk);
  78. +/*
  79. +       pr_err("%s cnt is %lx\n", __func__, arch_timer_read_counter());
  80. +       pr_err("%s cval is %lx\n", __func__, arch_timer_reg_read(access, ARCH_TIMER_REG_CVAL, clk));
  81. +       pr_err("%s tval is %lx\n", __func__, arch_timer_reg_read(access, ARCH_TIMER_REG_TVAL, clk));
  82. +*/
  83.  }
  84.  
  85.  static int arch_timer_set_next_event_virt(unsigned long evt,
  86.                                           struct clock_event_device *clk)
  87.  {
  88. +//     pr_err("%s==========================\n", __func__);
  89.         set_next_event(ARCH_TIMER_VIRT_ACCESS, evt, clk);
  90.         return 0;
  91.  }
  92. @@ -257,6 +265,7 @@ static void __arch_timer_setup(unsigned type,
  93.  {
  94.         clk->features = CLOCK_EVT_FEAT_ONESHOT;
  95.  
  96. +       pr_err("%s==========================\n", __func__);
  97.         if (type == ARCH_CP15_TIMER) {
  98.                 if (arch_timer_c3stop)
  99.                         clk->features |= CLOCK_EVT_FEAT_C3STOP;
  100. @@ -267,6 +276,7 @@ static void __arch_timer_setup(unsigned type,
  101.                         clk->irq = arch_timer_ppi[VIRT_PPI];
  102.                         clk->set_state_shutdown = arch_timer_shutdown_virt;
  103.                         clk->set_next_event = arch_timer_set_next_event_virt;
  104. +                       pr_err("set_next_event is virt\n");
  105.                 } else {
  106.                         clk->irq = arch_timer_ppi[PHYS_SECURE_PPI];
  107.                         clk->set_state_shutdown = arch_timer_shutdown_phys;
  108. @@ -342,6 +352,7 @@ static int arch_timer_setup(struct clock_event_device *clk)
  109.  {
  110.         __arch_timer_setup(ARCH_CP15_TIMER, clk);
  111.  
  112. +       pr_err("%s==========================\n", __func__);
  113.         if (arch_timer_use_virtual)
  114.                 enable_percpu_irq(arch_timer_ppi[VIRT_PPI], 0);
  115.         else {
  116. @@ -400,11 +411,7 @@ static void arch_timer_banner(unsigned type)
  117.  
  118.  u32 arch_timer_get_rate(void)
  119.  {
  120. -#ifndef CONFIG_EL1_HYP_EMUL
  121.         return arch_timer_rate;
  122. -#else
  123. -       return 24000000; /* SP804 freq 24mhz */
  124. -#endif
  125.  }
  126.  
  127.  static u64 arch_counter_get_cntvct_mem(void)
  128. @@ -560,6 +567,7 @@ static int __init arch_timer_register(void)
  129.         int err;
  130.         int ppi;
  131.  
  132. +       pr_err("%s==========================\n", __func__);
  133.         arch_timer_evt = alloc_percpu(struct clock_event_device);
  134.         if (!arch_timer_evt) {
  135.                 err = -ENOMEM;
  136. @@ -712,6 +720,7 @@ static void __init arch_timer_init(void)
  137.                 }
  138.         }
  139.  
  140. +       pr_err("%s==========================\n", __func__);
  141.         arch_timer_register();
  142.         arch_timer_common_init();
  143.  }
  144. @@ -720,6 +729,7 @@ static void __init arch_timer_of_init(struct device_node *np)
  145.  {
  146.         int i;
  147.  
  148. +       pr_err("%s==========================\n", __func__);
  149.         if (arch_timers_present & ARCH_CP15_TIMER) {
  150.                 pr_warn("arch_timer: multiple nodes in dt, skipping\n");
  151.                 return;
  152. diff --git a/drivers/clocksource/timer-sp804.c b/drivers/clocksource/timer-sp804.c
  153. index 5f45b9a..8d7affa 100644
  154. --- a/drivers/clocksource/timer-sp804.c
  155. +++ b/drivers/clocksource/timer-sp804.c
  156. @@ -224,6 +224,7 @@ static void __init sp804_of_init(struct device_node *np)
  157.         struct clk *clk1, *clk2;
  158.         const char *name = of_get_property(np, "compatible", NULL);
  159.  
  160. +       pr_err("%s==========================\n", __func__);
  161.         base = of_iomap(np, 0);
  162.         if (WARN_ON(!base))
  163.                 return;
  164. @@ -279,6 +280,8 @@ static void __init integrator_cp_of_init(struct device_node *np)
  165.         const char *name = of_get_property(np, "compatible", NULL);
  166.         struct clk *clk;
  167.  
  168. +       pr_err("%s==========================\n", __func__);
  169. +
  170.         base = of_iomap(np, 0);
  171.         if (WARN_ON(!base))
  172.                 return;
  173. diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
  174. index abf2ffa..1c34150 100644
  175. --- a/drivers/irqchip/irq-gic.c
  176. +++ b/drivers/irqchip/irq-gic.c
  177. @@ -326,6 +326,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
  178.  }
  179.  #endif
  180.  
  181. +#define GIC_CPU_CTRL_FIQen             (1 << 3)
  182.  static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
  183.  {
  184.         u32 irqstat, irqnr;
  185. @@ -335,6 +336,39 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
  186.         do {
  187.                 irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK);
  188.                 irqnr = irqstat & GICC_IAR_INT_ID_MASK;
  189. +               if (irqnr != 27) {
  190. +                     asm volatile ("mov x0, %[irqnr]\n\t"
  191. +                                        "hvc #0x7b01\n\t"
  192. +                                        ::[irqnr] "r" (irqnr):"x0");
  193. +               }
  194. +
  195. +/*
  196. +                        asm volatile ("mov x0, %[irqnr]\n\t"
  197. +                                        "hvc #0x7b25\n\t"
  198. +                                        ::[irqnr] "r" (irqnr):"x0");
  199. +               irqstat = readl_relaxed(cpu_base + GIC_CPU_CTRL);
  200. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  201. +                                        "hvc #0x7b22\n\t"
  202. +                                        ::[irqstat] "r" (irqstat):"x0");
  203. +               irqstat |= GIC_CPU_CTRL_FIQen;
  204. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  205. +                                        "hvc #0x7b23\n\t"
  206. +                                        ::[irqstat] "r" (irqstat):"x0");
  207. +               writel_relaxed(irqstat, cpu_base + GIC_CPU_CTRL);
  208. +               irqstat = readl_relaxed(cpu_base + GIC_CPU_CTRL);
  209. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  210. +                                        "hvc #0x7b22\n\t"
  211. +                                        ::[irqstat] "r" (irqstat):"x0");
  212. --- a/drivers/irqchip/irq-gic.c
  213. +++ b/drivers/irqchip/irq-gic.c
  214. @@ -326,6 +326,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
  215.  }
  216.  #endif
  217.  
  218. +#define GIC_CPU_CTRL_FIQen             (1 << 3)
  219.  static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
  220.  {
  221.         u32 irqstat, irqnr;
  222. @@ -335,6 +336,39 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
  223.         do {
  224.                 irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK);
  225.                 irqnr = irqstat & GICC_IAR_INT_ID_MASK;
  226. +               if (irqnr != 27) {
  227. +                     asm volatile ("mov x0, %[irqnr]\n\t"
  228. +                                        "hvc #0x7b01\n\t"
  229. +                                        ::[irqnr] "r" (irqnr):"x0");
  230. +               }
  231. +
  232. +/*
  233. +                        asm volatile ("mov x0, %[irqnr]\n\t"
  234. +                                        "hvc #0x7b25\n\t"
  235. +                                        ::[irqnr] "r" (irqnr):"x0");
  236. +               irqstat = readl_relaxed(cpu_base + GIC_CPU_CTRL);
  237. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  238. +                                        "hvc #0x7b22\n\t"
  239. +                                        ::[irqstat] "r" (irqstat):"x0");
  240. +               irqstat |= GIC_CPU_CTRL_FIQen;
  241. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  242. +                                        "hvc #0x7b23\n\t"
  243. +                                        ::[irqstat] "r" (irqstat):"x0");
  244. +               writel_relaxed(irqstat, cpu_base + GIC_CPU_CTRL);
  245. +               irqstat = readl_relaxed(cpu_base + GIC_CPU_CTRL);
  246. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  247. +                                        "hvc #0x7b22\n\t"
  248. +                                        ::[irqstat] "r" (irqstat):"x0");
  249. +                asm volatile("hvc #0x7b00");
  250. +               irqnr = 27;
  251. +
  252. +*/
  253. +
  254. +/*
  255. +      asm volatile ("mov x0, %[irqnr]\n\t"
  256. +                        "hvc #0x7b00\n\t"
  257. +                        ::[irqnr] "r" (irqnr):"x0");
  258. +*/
  259. [jintackl@ne2 kvm-node ~/l2]$git diff
  260. diff --git a/arch/arm64/include/asm/arch_timer.h b/arch/arm64/include/asm/arch_timer.h
  261. index fbe0ca3..73fea00 100644
  262. --- a/arch/arm64/include/asm/arch_timer.h
  263. +++ b/arch/arm64/include/asm/arch_timer.h
  264. @@ -43,6 +43,8 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u32 val)
  265.                 case ARCH_TIMER_REG_TVAL:
  266.                         asm volatile("msr cntp_tval_el0, %0" : : "r" (val));
  267.                         break;
  268. +               default:
  269. +                       break;
  270.                 }
  271.         } else if (access == ARCH_TIMER_VIRT_ACCESS) {
  272.                 switch (reg) {
  273. @@ -52,6 +54,8 @@ void arch_timer_reg_write_cp15(int access, enum arch_timer_reg reg, u32 val)
  274.                 case ARCH_TIMER_REG_TVAL:
  275.                         asm volatile("msr cntv_tval_el0, %0" : : "r" (val));
  276.                         break;
  277. +               default:
  278. +                       break;
  279.                 }
  280.         }
  281.  
  282. @@ -71,6 +75,8 @@ u32 arch_timer_reg_read_cp15(int access, enum arch_timer_reg reg)
  283.                 case ARCH_TIMER_REG_TVAL:
  284.                         asm volatile("mrs %0, cntp_tval_el0" : "=r" (val));
  285.                         break;
  286. +               default:
  287. +                       break;
  288.                 }
  289.         } else if (access == ARCH_TIMER_VIRT_ACCESS) {
  290.                 switch (reg) {
  291. @@ -80,6 +86,9 @@ u32 arch_timer_reg_read_cp15(int access, enum arch_timer_reg reg)
  292.                 case ARCH_TIMER_REG_TVAL:
  293.                         asm volatile("mrs %0, cntv_tval_el0" : "=r" (val));
  294.                         break;
  295. +               case ARCH_TIMER_REG_CVAL:
  296. +                       asm volatile("mrs %0, cntv_cval_el0" : "=r" (val));
  297. +                       break;
  298.                 }
  299.         }
  300.  
  301. diff --git a/arch/arm64/kernel/entry.S b/arch/arm64/kernel/entry.S
  302. index 7ed3d75..ca35518 100644
  303. --- a/arch/arm64/kernel/entry.S
  304. +++ b/arch/arm64/kernel/entry.S
  305. @@ -352,6 +352,7 @@ ENDPROC(el1_sync)
  306.  
  307.         .align  6
  308.  el1_irq:
  309. +       hvc #0x7739
  310.         kernel_entry 1
  311.         enable_dbg
  312.  #ifdef CONFIG_TRACE_IRQFLAGS
  313. diff --git a/drivers/clocksource/arm_arch_timer.c b/drivers/clocksource/arm_arch_timer.c
  314. index 7a63346..cc4146c 100644
  315. --- a/drivers/clocksource/arm_arch_timer.c
  316. +++ b/drivers/clocksource/arm_arch_timer.c
  317. @@ -39,6 +39,7 @@
  318.  #define CNTP_CTL       0x2c
  319.  #define CNTV_TVAL      0x38
  320.  #define CNTV_CTL       0x3c
  321. +#define CNTV_CVAL      0x38
  322.  
  323.  #define ARCH_CP15_TIMER        BIT(0)
  324.  #define ARCH_MEM_TIMER BIT(1)
  325. @@ -157,6 +158,7 @@ static irqreturn_t arch_timer_handler_virt(int irq, void *dev_id)
  326.  {
  327.         struct clock_event_device *evt = dev_id;
  328.  
  329. +//     asm volatile("hvc #0x7b00");
  330.         return timer_handler(ARCH_TIMER_VIRT_ACCESS, evt);
  331.  }
  332.  
  333. @@ -222,11 +224,17 @@ static __always_inline void set_next_event(const int access, unsigned long evt,
  334.         ctrl &= ~ARCH_TIMER_CTRL_IT_MASK;
  335.         arch_timer_reg_write(access, ARCH_TIMER_REG_TVAL, evt, clk);
  336.         arch_timer_reg_write(access, ARCH_TIMER_REG_CTRL, ctrl, clk);
  337. +/*
  338. +       pr_err("%s cnt is %lx\n", __func__, arch_timer_read_counter());
  339. +       pr_err("%s cval is %lx\n", __func__, arch_timer_reg_read(access, ARCH_TIMER_REG_CVAL, clk));
  340. +       pr_err("%s tval is %lx\n", __func__, arch_timer_reg_read(access, ARCH_TIMER_REG_TVAL, clk));
  341. +*/
  342.  }
  343.  
  344.  static int arch_timer_set_next_event_virt(unsigned long evt,
  345.                                           struct clock_event_device *clk)
  346.  {
  347. +//     pr_err("%s==========================\n", __func__);
  348.         set_next_event(ARCH_TIMER_VIRT_ACCESS, evt, clk);
  349.         return 0;
  350.  }
  351. @@ -257,6 +265,7 @@ static void __arch_timer_setup(unsigned type,
  352.  {
  353.         clk->features = CLOCK_EVT_FEAT_ONESHOT;
  354.  
  355. +       pr_err("%s==========================\n", __func__);
  356.         if (type == ARCH_CP15_TIMER) {
  357.                 if (arch_timer_c3stop)
  358.                         clk->features |= CLOCK_EVT_FEAT_C3STOP;
  359. @@ -267,6 +276,7 @@ static void __arch_timer_setup(unsigned type,
  360.                         clk->irq = arch_timer_ppi[VIRT_PPI];
  361.                         clk->set_state_shutdown = arch_timer_shutdown_virt;
  362.                         clk->set_next_event = arch_timer_set_next_event_virt;
  363. +                       pr_err("set_next_event is virt\n");
  364.                 } else {
  365.                         clk->irq = arch_timer_ppi[PHYS_SECURE_PPI];
  366.                         clk->set_state_shutdown = arch_timer_shutdown_phys;
  367. @@ -342,6 +352,7 @@ static int arch_timer_setup(struct clock_event_device *clk)
  368.  {
  369.         __arch_timer_setup(ARCH_CP15_TIMER, clk);
  370.  
  371. +       pr_err("%s==========================\n", __func__);
  372. +       pr_err("%s==========================\n", __func__);
  373.         if (arch_timer_use_virtual)
  374.                 enable_percpu_irq(arch_timer_ppi[VIRT_PPI], 0);
  375.         else {
  376. @@ -400,11 +411,7 @@ static void arch_timer_banner(unsigned type)
  377.  
  378.  u32 arch_timer_get_rate(void)
  379.  {
  380. -#ifndef CONFIG_EL1_HYP_EMUL
  381.         return arch_timer_rate;
  382. -#else
  383. -       return 24000000; /* SP804 freq 24mhz */
  384. -#endif
  385.  }
  386.  
  387.  static u64 arch_counter_get_cntvct_mem(void)
  388. @@ -560,6 +567,7 @@ static int __init arch_timer_register(void)
  389.         int err;
  390.         int ppi;
  391.  
  392. +       pr_err("%s==========================\n", __func__);
  393.         arch_timer_evt = alloc_percpu(struct clock_event_device);
  394.         if (!arch_timer_evt) {
  395.                 err = -ENOMEM;
  396. @@ -712,6 +720,7 @@ static void __init arch_timer_init(void)
  397.                 }
  398.         }
  399.  
  400. +       pr_err("%s==========================\n", __func__);
  401.         arch_timer_register();
  402.         arch_timer_common_init();
  403.  }
  404. @@ -720,6 +729,7 @@ static void __init arch_timer_of_init(struct device_node *np)
  405.  {
  406.         int i;
  407.  
  408. +       pr_err("%s==========================\n", __func__);
  409.         if (arch_timers_present & ARCH_CP15_TIMER) {
  410.                 pr_warn("arch_timer: multiple nodes in dt, skipping\n");
  411.                 return;
  412. diff --git a/drivers/clocksource/timer-sp804.c b/drivers/clocksource/timer-sp804.c
  413. index 5f45b9a..8d7affa 100644
  414. --- a/drivers/clocksource/timer-sp804.c
  415. +++ b/drivers/clocksource/timer-sp804.c
  416. @@ -224,6 +224,7 @@ static void __init sp804_of_init(struct device_node *np)
  417.         struct clk *clk1, *clk2;
  418.         const char *name = of_get_property(np, "compatible", NULL);
  419.  
  420. +       pr_err("%s==========================\n", __func__);
  421.         base = of_iomap(np, 0);
  422.         if (WARN_ON(!base))
  423.                 return;
  424. @@ -279,6 +280,8 @@ static void __init integrator_cp_of_init(struct device_node *np)
  425.         const char *name = of_get_property(np, "compatible", NULL);
  426.         struct clk *clk;
  427.  
  428. +       pr_err("%s==========================\n", __func__);
  429. +
  430.         base = of_iomap(np, 0);
  431.         if (WARN_ON(!base))
  432.                 return;
  433. diff --git a/drivers/irqchip/irq-gic.c b/drivers/irqchip/irq-gic.c
  434. index abf2ffa..1c34150 100644
  435. --- a/drivers/irqchip/irq-gic.c
  436. +++ b/drivers/irqchip/irq-gic.c
  437. @@ -326,6 +326,7 @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
  438.  }
  439.  #endif
  440.  
  441. +#define GIC_CPU_CTRL_FIQen             (1 << 3)
  442.  static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
  443.  {
  444.         u32 irqstat, irqnr;
  445. @@ -335,6 +336,39 @@ static void __exception_irq_entry gic_handle_irq(struct pt_regs *regs)
  446.         do {
  447.                 irqstat = readl_relaxed(cpu_base + GIC_CPU_INTACK);
  448.                 irqnr = irqstat & GICC_IAR_INT_ID_MASK;
  449. +               if (irqnr != 27) {
  450. +                     asm volatile ("mov x0, %[irqnr]\n\t"
  451. +                                        "hvc #0x7b01\n\t"
  452. +                                        ::[irqnr] "r" (irqnr):"x0");
  453. +               }
  454. +
  455. +/*
  456. +                        asm volatile ("mov x0, %[irqnr]\n\t"
  457. +                                        "hvc #0x7b25\n\t"
  458. +                                        ::[irqnr] "r" (irqnr):"x0");
  459. +               irqstat = readl_relaxed(cpu_base + GIC_CPU_CTRL);
  460. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  461. +                                        "hvc #0x7b22\n\t"
  462. +                                        ::[irqstat] "r" (irqstat):"x0");
  463. +               irqstat |= GIC_CPU_CTRL_FIQen;
  464. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  465. +                                        "hvc #0x7b23\n\t"
  466. +                                        ::[irqstat] "r" (irqstat):"x0");
  467. +               writel_relaxed(irqstat, cpu_base + GIC_CPU_CTRL);
  468. +               irqstat = readl_relaxed(cpu_base + GIC_CPU_CTRL);
  469. +                        asm volatile ("mov x0, %[irqstat]\n\t"
  470. +                                        "hvc #0x7b22\n\t"
  471. +                                        ::[irqstat] "r" (irqstat):"x0");
  472. +                asm volatile("hvc #0x7b00");
  473. +               irqnr = 27;
  474. +
  475. +*/
  476. +
  477. +/*
  478. +      asm volatile ("mov x0, %[irqnr]\n\t"
  479. +                        "hvc #0x7b00\n\t"
  480. +                        ::[irqnr] "r" (irqnr):"x0");
  481. +*/
  482.  
  483.                 if (likely(irqnr > 15 && irqnr < 1021)) {
  484.                         if (static_key_true(&supports_deactivate))
  485. diff --git a/drivers/virtio/virtio_pci_common.c b/drivers/virtio/virtio_pci_common.c
  486. index 78f804a..f796036 100644
  487. --- a/drivers/virtio/virtio_pci_common.c
  488. +++ b/drivers/virtio/virtio_pci_common.c
  489. @@ -45,7 +45,9 @@ bool vp_notify(struct virtqueue *vq)
  490.  {
  491.         /* we write the queue's selector into the notification register to
  492.          * signal the other end */
  493. +       asm volatile("hvc #0x7c00");
  494.         iowrite16(vq->index, (void __iomem *)vq->priv);
  495. +       asm volatile("hvc #0x7c01");
  496.         return true;
  497.  }
  498.  
  499. diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
  500. index ee663c4..cbaf285 100644
  501. --- a/drivers/virtio/virtio_ring.c
  502. +++ b/drivers/virtio/virtio_ring.c
  503. @@ -743,6 +743,7 @@ struct virtqueue *vring_new_virtqueue(unsigned int index,
  504.         if (!vq)
  505.                 return NULL;
  506.  
  507. +       pr_err("%s %s %d\n", __func__, name, index);
  508.         vring_init(&vq->vring, num, pages, vring_align);
  509.         vq->vq.callback = callback;
  510.         vq->vq.vdev = vdev;
  511. diff --git a/include/clocksource/arm_arch_timer.h b/include/clocksource/arm_arch_timer.h
  512. index 25d0914..7edbd19 100644
  513. --- a/include/clocksource/arm_arch_timer.h
  514. +++ b/include/clocksource/arm_arch_timer.h
  515. @@ -32,6 +32,7 @@
  516.  enum arch_timer_reg {
  517.         ARCH_TIMER_REG_CTRL,
  518.         ARCH_TIMER_REG_TVAL,
  519. +       ARCH_TIMER_REG_CVAL,
  520.  };
  521.  
  522.  #define ARCH_TIMER_PHYS_ACCESS         0
  523. diff --git a/init/main.c b/init/main.c
  524. index 9e64d70..d91462d 100644
  525. --- a/init/main.c
  526. +++ b/init/main.c
  527. @@ -499,6 +499,7 @@ asmlinkage __visible void __init start_kernel(void)
  528.         char *command_line;
  529.         char *after_dashes;
  530.  
  531. +       asm volatile("hvc       #0x7200");
  532.         /*
  533.          * Need to run as early as possible, to initialize the
  534.          * lockdep hash:
  535. @@ -508,6 +509,7 @@ asmlinkage __visible void __init start_kernel(void)
  536.         smp_setup_processor_id();
  537.         debug_objects_early_init();
  538.  
  539. +       asm volatile("hvc       #0x7201");
  540.         /*
  541.          * Set up the the initial canary ASAP:
  542.          */
  543. @@ -517,6 +519,7 @@ asmlinkage __visible void __init start_kernel(void)
  544.  
  545.         local_irq_disable();
  546.         early_boot_irqs_disabled = true;
  547. +       asm volatile("hvc       #0x7202");
  548.  
  549.  /*
  550.   * Interrupts are still disabled. Do necessary setups, then
  551. @@ -532,6 +535,7 @@ asmlinkage __visible void __init start_kernel(void)
  552.         setup_per_cpu_areas();
  553.         smp_prepare_boot_cpu(); /* arch-specific boot-cpu hooks */
  554.  
  555. +       asm volatile("hvc       #0x7203");
  556.         build_all_zonelists(NULL, NULL);
  557.         page_alloc_init();
  558.  
  559. @@ -547,6 +551,7 @@ asmlinkage __visible void __init start_kernel(void)
  560.  
  561.         jump_label_init();
  562.  
  563. +       asm volatile("hvc       #0x7204");
  564.         /*
  565.          * These use large bootmem allocations and must precede
  566.          * kmem_cache_init()
  567. @@ -558,6 +563,7 @@ asmlinkage __visible void __init start_kernel(void)
  568.         trap_init();
  569.         mm_init();
  570.  
  571. +       asm volatile("hvc       #0x7205");
  572.         /*
  573.          * Set up the scheduler prior starting any interrupts (such as the
  574.          * timer interrupt). Full topology setup happens at smp_init()
  575. @@ -575,28 +581,39 @@ asmlinkage __visible void __init start_kernel(void)
  576.         idr_init_cache();
  577.         rcu_init();
  578.  
  579. +       asm volatile("hvc       #0x7206");
  580.         /* trace_printk() and trace points may be used after this */
  581.         trace_init();
  582.  
  583.         context_tracking_init();
  584.         radix_tree_init();
  585.         /* init some links before init_ISA_irqs() */
  586. +       asm volatile("hvc       #0x7207");
  587.         early_irq_init();
  588. +       asm volatile("hvc       #0x7208");
  589.         init_IRQ();
  590.         tick_init();
  591.         rcu_init_nohz();
  592. +       asm volatile("hvc       #0x7209");
  593.         init_timers();
  594. +       asm volatile("hvc       #0x7210");
  595.         hrtimers_init();
  596. +       asm volatile("hvc       #0x7211");
  597.         softirq_init();
  598. +       asm volatile("hvc       #0x7212");
  599.         timekeeping_init();
  600. +       asm volatile("hvc       #0x7213");
  601.         time_init();
  602. +       asm volatile("hvc       #0x7214");
  603.         sched_clock_postinit();
  604.         perf_event_init();
  605.         profile_init();
  606.         call_function_init();
  607.         WARN(!irqs_disabled(), "Interrupts were enabled early\n");
  608.         early_boot_irqs_disabled = false;
  609. +       asm volatile("hvc       #0x7215");
  610.         local_irq_enable();
  611. +       asm volatile("hvc       #0x7216");
  612.  
  613.         kmem_cache_init_late();
  614.  
  615. @@ -610,6 +627,7 @@ asmlinkage __visible void __init start_kernel(void)
  616.                 panic("Too many boot %s vars at `%s'", panic_later,
  617.                       panic_param);
  618.  
  619. +       asm volatile("hvc       #0x7217");
  620.         lockdep_info();
  621.  
  622.         /*
  623. @@ -640,6 +658,7 @@ asmlinkage __visible void __init start_kernel(void)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement