diff for duplicates of <1373552016.8183.242@snotra> diff --git a/a/1.txt b/N1/1.txt index 5d7b9cb..42497a9 100644 --- a/a/1.txt +++ b/N1/1.txt @@ -1,36 +1,36 @@ On 07/10/2013 10:00:33 PM, tiejun.chen wrote: > On 07/11/2013 03:15 AM, Scott Wood wrote: >> On 07/10/2013 01:02:19 AM, Tiejun Chen wrote: ->>> We should ensure the preemption cannot occur while calling =20 +>>> We should ensure the preemption cannot occur while calling >>> get_paca() >>> insdide hard_irq_disable(), otherwise the paca_struct may be the ->>> wrong one just after. And btw, we may update timing stats in this =20 +>>> wrong one just after. And btw, we may update timing stats in this >>> case. ->>=20 ->> The soft-ee mechanism depends on accessing the PACA directly via r13 =20 +>> +>> The soft-ee mechanism depends on accessing the PACA directly via r13 >> to avoid ->> this. We probably should be using inline asm to read was_enabled =20 +>> this. We probably should be using inline asm to read was_enabled >> rather than ->=20 +> > Yes. ->=20 +> >> hoping the compiler doesn't do anything silly. ->=20 -> Do you recommend I should directly replace get_paca() with local_paca =20 +> +> Do you recommend I should directly replace get_paca() with local_paca > inside hard_irq_disable()? ->=20 +> > #define hard_irq_disable() do { \ -> u8 _was_enabled =3D get_paca()->soft_enabled; \ ->=20 -> -> u8 _was_enabled =3D local_paca->soft_enabled; ->=20 +> u8 _was_enabled = get_paca()->soft_enabled; \ +> +> -> u8 _was_enabled = local_paca->soft_enabled; +> > But is this safe for all scenarios? -get_paca() is just a #define for local_paca. It won't make a =20 +get_paca() is just a #define for local_paca. It won't make a difference, other than to evade the debug check. -In practice, it's unlikely that GCC would do anything other than a load =20 -directly from r13, but to be sure we should use inline asm to do the =20 +In practice, it's unlikely that GCC would do anything other than a load +directly from r13, but to be sure we should use inline asm to do the load, just like arch_local_save_flags and arch_local_irq_disable do. --Scott= +-Scott diff --git a/a/content_digest b/N1/content_digest index f4b75ab..7017266 100644 --- a/a/content_digest +++ b/N1/content_digest @@ -14,38 +14,38 @@ "On 07/10/2013 10:00:33 PM, tiejun.chen wrote:\n" "> On 07/11/2013 03:15 AM, Scott Wood wrote:\n" ">> On 07/10/2013 01:02:19 AM, Tiejun Chen wrote:\n" - ">>> We should ensure the preemption cannot occur while calling =20\n" + ">>> We should ensure the preemption cannot occur while calling \n" ">>> get_paca()\n" ">>> insdide hard_irq_disable(), otherwise the paca_struct may be the\n" - ">>> wrong one just after. And btw, we may update timing stats in this =20\n" + ">>> wrong one just after. And btw, we may update timing stats in this \n" ">>> case.\n" - ">>=20\n" - ">> The soft-ee mechanism depends on accessing the PACA directly via r13 =20\n" + ">> \n" + ">> The soft-ee mechanism depends on accessing the PACA directly via r13 \n" ">> to avoid\n" - ">> this. We probably should be using inline asm to read was_enabled =20\n" + ">> this. We probably should be using inline asm to read was_enabled \n" ">> rather than\n" - ">=20\n" + "> \n" "> Yes.\n" - ">=20\n" + "> \n" ">> hoping the compiler doesn't do anything silly.\n" - ">=20\n" - "> Do you recommend I should directly replace get_paca() with local_paca =20\n" + "> \n" + "> Do you recommend I should directly replace get_paca() with local_paca \n" "> inside hard_irq_disable()?\n" - ">=20\n" + "> \n" "> #define hard_irq_disable() do { \\\n" - "> u8 _was_enabled =3D get_paca()->soft_enabled; \\\n" - ">=20\n" - "> ->\tu8 _was_enabled =3D local_paca->soft_enabled;\n" - ">=20\n" + "> u8 _was_enabled = get_paca()->soft_enabled; \\\n" + "> \n" + "> ->\tu8 _was_enabled = local_paca->soft_enabled;\n" + "> \n" "> But is this safe for all scenarios?\n" "\n" - "get_paca() is just a #define for local_paca. It won't make a =20\n" + "get_paca() is just a #define for local_paca. It won't make a \n" "difference, other than to evade the debug check.\n" "\n" - "In practice, it's unlikely that GCC would do anything other than a load =20\n" - "directly from r13, but to be sure we should use inline asm to do the =20\n" + "In practice, it's unlikely that GCC would do anything other than a load \n" + "directly from r13, but to be sure we should use inline asm to do the \n" "load, just like arch_local_save_flags and arch_local_irq_disable do.\n" "\n" - -Scott= + -Scott -ddab17fb1ead649ec611c637de4de5c02941ba071e7c05dc36f48b8b31806703 +ee5d72f9daa8eea19ee8500b4eea20642316f0e5f818d63c7eb9385979ac91e2
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.