All of lore.kernel.org
 help / color / mirror / Atom feed
* [DISCUSSION] Hexagon code inside kernel
@ 2013-02-15 14:28 cotulla
       [not found] ` <CAHrUA364XES66kXhr0Gg1dh_MQBAS0+R8Q4x+EY3dgz6s=QRww@mail.gmail.com>
  0 siblings, 1 reply; 32+ messages in thread
From: cotulla @ 2013-02-15 14:28 UTC (permalink / raw)
  To: linux-hexagon

Hello,


Some time ago (I think inside 3.4) Hexagon architecture support was added into Linux kernel.
Hexagon (another name is QDSP6) is a special DSP processor which was developed by Qualcomm Inc.
Qualcomm provided a set of patches to include Hexagon support inside Linux kernel.
QDSP6 is used inside a lot of different SoC (QDS8650B, MSM8960, APQ8064, etc) which are very common inside modern smartphones.  


However after deep looking inside those patches I found that this code is only supposed to be run on top of some mythic "Hexagon Virtual Machine".
"Hexagon Virtual Machine" is not available for free download in source code or either in binary form.
I guess it's only available for Qualcomm customers by signing NDA.
This prevents actually to run own home builded kernels on real QDSP6.

Personally I am a homebrew hobby developer, who like to experiment with different intersting stuffs inside modern smartphones.
And I want to have ability to be able build and run Linux kernel on Hexagon processor.
I think including of such code inside official open source kernel is nosense - Qualcomm wants to use open source community for own interests and doesn't provide anything back by hidding actual hardware interfaces inside non-available free Virtual Machine. 

So I am curious why it's included to the offiicial mainline kernel tree? 
And how kernel developers are going to support and test that architecture without actual running hardware?

Can this be threaded as GPL violation?
This kernel code is using "trap1" instruction which actually switches execution to exception handler located inside VM.


Best regards,
-Cotulla

^ permalink raw reply	[flat|nested] 32+ messages in thread
* Re: [DISCUSSION] Hexagon code inside kernel
@ 2013-02-24  0:24 Linas Vepstas
  0 siblings, 0 replies; 32+ messages in thread
From: Linas Vepstas @ 2013-02-24  0:24 UTC (permalink / raw)
  To: linux-hexagon, cotulla

On 19 February 2013 19:17, <cotulla@yandex.ua> wrote:
>
> Does every thread starts execute exception handler or only one, selected
> by hardware?
>
Only one, I believe, But its 'random' as to which one.

> How preemtion is disabled in that case?
>
? I believe interrupts are disabled upon entry to the exception handler.
 You have to re-enable them when you are ready, with I'm guessing ciad,
don't remember how this worked.  Each thread has its own local mask too.

There are like 4 or 5 or 6 bits that need to be set/cleared for interrupts
to be handled: there's a global bit to enable any interrupt. There's a
global mask to enable interrupts of a given priority, there's a local,
per-thread mask of the same.  There's an exception bit which is cleared by
return-from-exception.   I think there's one more bit, I can't remember.

>
> 2. What difference between ciad and cswi?
> I guess ciad is "Clear Interrupt Ask Done" and cswi is "Clear SoftWare
> Interrupt"?
>

There is a 'software interrupt' which allows one core to interrupt another.
 I think  cswi would be to clear those.

--linas

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2013-02-27 12:39 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-02-15 14:28 [DISCUSSION] Hexagon code inside kernel cotulla
     [not found] ` <CAHrUA364XES66kXhr0Gg1dh_MQBAS0+R8Q4x+EY3dgz6s=QRww@mail.gmail.com>
2013-02-15 22:33   ` Linas Vepstas
2013-02-16  1:35     ` cotulla
2013-02-16  2:34       ` Linas Vepstas
2013-02-16 12:39         ` cotulla
2013-02-16 17:33           ` Linas Vepstas
2013-02-16 19:21             ` cotulla
2013-02-19  4:36           ` rkuo
2013-02-19 14:29             ` Linas Vepstas
2013-02-20  1:07               ` cotulla
2013-02-20  1:17             ` cotulla
2013-02-23  4:24           ` Rob Landley
2013-02-24 12:00             ` cotulla
2013-02-24 16:32               ` Linas Vepstas
2013-02-24 17:29                 ` cotulla
2013-02-24 21:03                   ` Linas Vepstas
2013-02-25 17:26                     ` Rob Landley
2013-02-26 18:54                       ` cotulla
2013-02-27  0:58                         ` Rob Landley
2013-02-27 12:39                           ` cotulla
2013-02-24 12:23             ` cotulla
2013-02-26  6:55               ` Rob Landley
2013-02-26 19:30                 ` cotulla
2013-02-26 19:32                 ` cotulla
2013-02-26 19:59                   ` Linas Vepstas
2013-02-26 20:25                     ` cotulla
2013-02-26 20:57                       ` Linas Vepstas
2013-02-27  1:06                   ` Rob Landley
2013-02-27  1:30                     ` Linas Vepstas
2013-02-27  3:03                       ` Rob Landley
2013-02-27 12:35                         ` cotulla
  -- strict thread matches above, loose matches on Subject: below --
2013-02-24  0:24 Linas Vepstas

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.