<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/arc/kernel/intc-arcv2.c, branch linux-4.11.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.11.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-4.11.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2017-02-06T17:37:57Z</updated>
<entry>
<title>ARCv2: intc: Set default priority for all core interrupts</title>
<updated>2017-02-06T17:37:57Z</updated>
<author>
<name>Yuriy Kolerov</name>
</author>
<published>2017-01-31T11:45:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=be568e78dbb35383fdfd0563fd0cfbbff1bc42d0'/>
<id>urn:sha1:be568e78dbb35383fdfd0563fd0cfbbff1bc42d0</id>
<content type='text'>
After reset all interrupts in the core interrupt controller has
the highest priority P0. If the platform supports Fast IRQs and
has more than 1 banks of registers then CPU automatically switch
banks of registers when P0 interrupt comes.

The problem is that the kernel expects that by default switching
of banks is not used by all interrupts. It is necessary to set a
default nonzero priority for all available interrupts to avoid
undefined behaviour.

Signed-off-by: Yuriy Kolerov &lt;yuriy.kolerov@synopsys.com&gt;
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARCv2: intc: Use runtime value of irq count for setting up intc</title>
<updated>2017-02-06T17:37:57Z</updated>
<author>
<name>Vineet Gupta</name>
</author>
<published>2017-02-01T17:44:33Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=179cf194e6d153fb6daeca811253502d5c84e4c8'/>
<id>urn:sha1:179cf194e6d153fb6daeca811253502d5c84e4c8</id>
<content type='text'>
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: [intc-*]: confine NR_CPU_IRQS to intc code</title>
<updated>2017-02-06T17:37:57Z</updated>
<author>
<name>Vineet Gupta</name>
</author>
<published>2017-02-01T18:14:11Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=fe7b10994618c846481fbcf9212d296df47bc1dc'/>
<id>urn:sha1:fe7b10994618c846481fbcf9212d296df47bc1dc</id>
<content type='text'>
And even this willl change in subsequent patches where we resort to
using run time info instead...

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARCv2: intc: Use ARC_REG_STATUS32 for addressing STATUS32 reg</title>
<updated>2017-02-06T17:37:57Z</updated>
<author>
<name>Yuriy Kolerov</name>
</author>
<published>2017-01-31T11:45:21Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=e98a7bf0b094dea1ceed3a4d52584dcd59af0980'/>
<id>urn:sha1:e98a7bf0b094dea1ceed3a4d52584dcd59af0980</id>
<content type='text'>
It is better to use it instead of magic numbers.

Signed-off-by: Yuriy Kolerov &lt;yuriy.kolerov@synopsys.com&gt;
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: IRQ: Use hwirq instead of virq in mask/unmask</title>
<updated>2017-01-05T01:12:10Z</updated>
<author>
<name>Yuriy Kolerov</name>
</author>
<published>2016-12-28T08:46:24Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2163266c2704aa44211b6b61924a0fa570fe0d4b'/>
<id>urn:sha1:2163266c2704aa44211b6b61924a0fa570fe0d4b</id>
<content type='text'>
It is necessary to use hwirq instead of virq when you communicate
with an interrupt controller since there is no guaranty that virq
numbers match hwirq numbers.

Signed-off-by: Yuriy Kolerov &lt;yuriy.kolerov@synopsys.com&gt;
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARCv2: intc: default all interrupts to priority 1</title>
<updated>2016-12-14T17:23:46Z</updated>
<author>
<name>Vineet Gupta</name>
</author>
<published>2016-09-30T23:13:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=107177b14d8179f864315fc4daed9da777ed30c2'/>
<id>urn:sha1:107177b14d8179f864315fc4daed9da777ed30c2</id>
<content type='text'>
ARC HS Cores support configurable multiple interrupt priorities of upto
16 levels. In commit dec2b2849cfcc ("ARCv2: intc: Allow interruption by
lowest priority interrupt") we switched to 15 which seems a bit
excessive given that there would be rare hardware implementing so many
preemption levels AND running Linux. It would seem that 2 levels will be
more common so switch to 1 as the default priority level. This will be
the "lower" priority level saving 0 for implementing NMI style support.

This scheme also works in systems with more than 2 prioity levels as
well.

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARCv2: intc: Use kflag if STATUS32.IE must be reset</title>
<updated>2016-09-30T21:48:24Z</updated>
<author>
<name>Yuriy Kolerov</name>
</author>
<published>2016-09-12T15:55:03Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bc0c7ece6191d89f435e4e4016f74167430c6c21'/>
<id>urn:sha1:bc0c7ece6191d89f435e4e4016f74167430c6c21</id>
<content type='text'>
In the end of "arc_init_IRQ" STATUS32.IE flag is going to be affected by
"flag" instruction but "flag" never touches IE flag on ARCv2. So "kflag"
instruction must be used instead of "flag".

Signed-off-by: Yuriy Kolerov &lt;yuriy.kolerov@synopsys.com&gt;
Cc: stable@vger.kernel.org #4.2+
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: [intc-*] switch to linear domain</title>
<updated>2016-05-09T04:02:30Z</updated>
<author>
<name>Vineet Gupta</name>
</author>
<published>2016-01-28T04:10:10Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=d21beffb0b9181c8823f71a5a7fabce6a0d4cf29'/>
<id>urn:sha1:d21beffb0b9181c8823f71a5a7fabce6a0d4cf29</id>
<content type='text'>
Now that we have Timers probed from DT, don't need legacy domain

This however requires mapping to be called explicitly for the IRQ which
still can't (and probably never) be probed from DT such as IPI and
SOFTIRQ

Acked-by: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARC: [intc-*] Do a domain lookup in primary handler for hwirq -&gt; linux virq</title>
<updated>2016-05-09T04:02:30Z</updated>
<author>
<name>Vineet Gupta</name>
</author>
<published>2016-01-01T09:42:54Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1b0ccb8a4eee2d8c14adc996e07335cb7aa9e2ac'/>
<id>urn:sha1:1b0ccb8a4eee2d8c14adc996e07335cb7aa9e2ac</id>
<content type='text'>
The primary interrupt handler arch_do_IRQ() was passing hwirq as linux
virq to core code. This was fragile and worked so far as we only had legacy/linear
domains.

This came out of a rant by Marc Zyngier.
http://lists.infradead.org/pipermail/linux-snps-arc/2015-December/000298.html

Cc: Marc Zyngier &lt;marc.zyngier@arm.com&gt;
Cc: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Noam Camus &lt;noamc@ezchip.com&gt;
Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
<entry>
<title>ARCv2: intc: Allow interruption by lowest priority interrupt</title>
<updated>2016-02-10T01:08:50Z</updated>
<author>
<name>Vineet Gupta</name>
</author>
<published>2016-02-07T07:24:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=dec2b2849cfccf09822d6ce3f9bc84b8c8611152'/>
<id>urn:sha1:dec2b2849cfccf09822d6ce3f9bc84b8c8611152</id>
<content type='text'>
ARC HS Cores support configurable multiple interrupt priorities of upto
16 levels.

There is processor "interrupt preemption threshhold" in STATUS32.E[4:1]
And several places need to set this up:
1. seed value as kernel is booting
2. seed value for user space programs
3. Arg to SLEEP instruction in idle task (what interrupt prio can wake)
4. Per-IRQ line prioirty (i.e. what is the priority of interrupt
   raised by a peripheral or timer or perf counter...

Currently above sites use the highest priority 0. This can be potential
problem when multiple priorities are supported. e.g. user space could
only be interrupted by P0 interrupt, not others...
So turn this over and instead make default interruption level to be
the lowest priority possible 15. This should be fine even if there are
fewer priority levels configured (say two: P0 HIGH, P1 LOW)

This feature also effectively disables FIRQ feature if present in
hardware config. With old code, a P0 interrupt would be FIRQ, needing
special handling (ISR or Register Banks) which is NOT supported yet.
Now it not be P0 (P15 or whatever is lowest prio) so FIRQ is not
triggered.

Signed-off-by: Vineet Gupta &lt;vgupta@synopsys.com&gt;
</content>
</entry>
</feed>
