<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/arch/ia64/kernel/entry.S, branch linux-2.6.28.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-2.6.28.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2009-01-18T18:43:51Z</updated>
<entry>
<title>Remove __attribute__((weak)) from sys_pipe/sys_pipe2</title>
<updated>2009-01-18T18:43:51Z</updated>
<author>
<name>Heiko Carstens</name>
</author>
<published>2009-01-14T13:13:56Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=085edf4999da237c254869130ec6c60f5417f9e0'/>
<id>urn:sha1:085edf4999da237c254869130ec6c60f5417f9e0</id>
<content type='text'>
commit 1134723e96f6e2abcf8bfd7a2d1c96fcc323ef35 upstream.

Remove __attribute__((weak)) from common code sys_pipe implemantation.
IA64, ALPHA, SUPERH (32bit) and SPARC (32bit) have own implemantations
with the same name. Just rename them.
For sys_pipe2 there is no architecture specific implementation.

Cc: Richard Henderson &lt;rth@twiddle.net&gt;
Cc: David S. Miller &lt;davem@davemloft.net&gt;
Cc: Paul Mundt &lt;lethal@linux-sh.org&gt;
Cc: Tony Luck &lt;tony.luck@intel.com&gt;
Signed-off-by: Heiko Carstens &lt;heiko.carstens@de.ibm.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;
</content>
</entry>
<entry>
<title>[IA64] Rationalize kernel mode alignment checking</title>
<updated>2008-11-20T21:27:12Z</updated>
<author>
<name>Tony Luck</name>
</author>
<published>2008-11-20T21:27:12Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b704882e70d87d7f56db5ff17e2253f3fa90e4f3'/>
<id>urn:sha1:b704882e70d87d7f56db5ff17e2253f3fa90e4f3</id>
<content type='text'>
Itanium processors can handle some misaligned data accesses. They
also provide a mode where all such accesses are forced to trap. The
kernel was schizophrenic about use of this mode:

* Base kernel code ran in permissive mode where the only traps
  generated were from those cases that the h/w could not handle.
* Interrupt, syscall and trap code ran in strict mode where all
  unaligned accesses caused traps to the 0x5a00 unaligned reference
  vector.

Use strict alignment checking throughout the kernel, but make
sure that we continue to let user mode use more relaxed mode
as the default.

Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] utrace use generic trace hook</title>
<updated>2008-10-06T17:43:06Z</updated>
<author>
<name>Shaohua Li</name>
</author>
<published>2008-10-06T17:43:06Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f14488ccfe0f41207e40520fab60dce356ed9e57'/>
<id>urn:sha1:f14488ccfe0f41207e40520fab60dce356ed9e57</id>
<content type='text'>
Make IA64 use generic trace hook in some paths.

Signed-off-by: Shaohua Li &lt;shaohua.li@intel.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] Wire up new system calls</title>
<updated>2008-07-25T17:10:28Z</updated>
<author>
<name>Tony Luck</name>
</author>
<published>2008-07-25T17:10:28Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3e4d0cab61c88a9ae3e61151a857960397e26403'/>
<id>urn:sha1:3e4d0cab61c88a9ae3e61151a857960397e26403</id>
<content type='text'>
Six new system calls: signalfd4, eventfd2, epoll_create1,
dup3, pipe2 and inotify_init1.

Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] pvops: paravirtualize entry.S</title>
<updated>2008-05-27T22:08:01Z</updated>
<author>
<name>Isaku Yamahata</name>
</author>
<published>2008-05-27T22:08:01Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4df8d22bbbb16ccfa4e10cc068135183c9e5e006'/>
<id>urn:sha1:4df8d22bbbb16ccfa4e10cc068135183c9e5e006</id>
<content type='text'>
paravirtualize ia64_swtich_to, ia64_leave_syscall and ia64_leave_kernel.
They include sensitive or performance critical privileged instructions
so that they need paravirtualization.
To paravirtualize them by single source and multi compile
they are converted into indirect jump. And define each pv instances.

Cc: Keith Owens &lt;kaos@ocs.com.au&gt;
Cc: "Dong, Eddie" &lt;eddie.dong@intel.com&gt;
Signed-off-by: Isaku Yamahata &lt;yamahata@valinux.co.jp&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] trivial cleanup for entry.S</title>
<updated>2008-05-14T22:56:09Z</updated>
<author>
<name>Hidetoshi Seto</name>
</author>
<published>2008-05-09T06:26:51Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2e513fe4903c62450a9f8c3759f75bc4cd7e4dfd'/>
<id>urn:sha1:2e513fe4903c62450a9f8c3759f75bc4cd7e4dfd</id>
<content type='text'>
This patch does:
 - make comment at next to resched check more robust
 - move "re-check" comments to next to where change predicate regs

Signed-off-by: Hidetoshi Seto &lt;seto.hidetoshi@jp.fujitsu.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] fix interrupt masking for pending works on kernel leave</title>
<updated>2008-05-14T22:55:35Z</updated>
<author>
<name>Hidetoshi Seto</name>
</author>
<published>2008-05-09T06:26:35Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3633c7308005e8c1dab594f69ef904424f8b639a'/>
<id>urn:sha1:3633c7308005e8c1dab594f69ef904424f8b639a</id>
<content type='text'>
[Bug-fix for "[BUG?][2.6.25-mm1] sleeping during IRQ disabled"]

This patch does:
 - enable interrupts before calling schedule() as same as others, ex. x86
 - enable interrupts during ia64_do_signal() and ia64_sync_krbs()
 - do_notify_resume_user() is still called with interrupts disabled, since
   we can take short path of fsys_mode if-statement quickly.
 - pfm_handle_work() is also called with interrupts disabled, since
   it can deal interrupt mask within itself.
 - fix/add some comments/notes

Reported-by: KOSAKI Motohiro &lt;kosaki.motohiro@jp.fujitsu.com&gt;
Signed-off-by: Hidetoshi Seto &lt;seto.hidetoshi@jp.fujitsu.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] disable interrupts on exit of ia64_trace_syscall</title>
<updated>2008-04-22T15:55:51Z</updated>
<author>
<name>Hidetoshi Seto</name>
</author>
<published>2008-04-21T21:34:39Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=38477ad75188b2a7370fef7145f956e6c446928b'/>
<id>urn:sha1:38477ad75188b2a7370fef7145f956e6c446928b</id>
<content type='text'>
While testing with CONFIG_VIRT_CPU_ACCOUNTING=y, I found that
I occasionally get very huge system time in some threads.

So I dug the issue and finally noticed that it was caused
because of an interrupt which interrupt in the following window:

&gt; [arch/ia64/kernel/entry.S: (!CONFIG_PREEMPT &amp;&amp; CONFIG_VIRT_CPU_ACCOUNTING)]
&gt;
&gt; ENTRY(ia64_leave_syscall)
&gt;    :
&gt; (pUStk) rsm psr.i
&gt;         cmp.eq pLvSys,p0=r0,r0          // pLvSys=1: leave from syscall
&gt; (pUStk) cmp.eq.unc p6,p0=r0,r0          // p6 &lt;- pUStk
&gt; .work_processed_syscall:
&gt;         adds r2=PT(LOADRS)+16,r12
&gt; (pUStk) mov.m r22=ar.itc                        // fetch time at leave
&gt;         adds r18=TI_FLAGS+IA64_TASK_SIZE,r13
&gt;         ;;
&gt; &lt;&lt;&lt; window: from here &gt;&gt;&gt;
&gt; (p6)    ld4 r31=[r18]  // load current_thread_info()-&gt;flags
&gt;         ld8 r19=[r2],PT(B6)-PT(LOADRS)
&gt;         adds r3=PT(AR_BSPSTORE)+16,r12
&gt;         ;;
&gt;         mov r16=ar.bsp
&gt;         ld8 r18=[r2],PT(R9)-PT(B6)
&gt; (p6)    and r15=TIF_WORK_MASK,r31  // any work other than TIF_SYSCALL_TRACE?
&gt;         ;;
&gt;         ld8 r23=[r3],PT(R11)-PT(AR_BSPSTORE)
&gt; (p6)    cmp4.ne.unc p6,p0=r15, r0               // any special work pending?
&gt; (p6)    br.cond.spnt .work_pending_syscall
&gt;         ;;
&gt;         ld8 r9=[r2],PT(CR_IPSR)-PT(R9)
&gt;         ld8 r11=[r3],PT(CR_IIP)-PT(R11)
&gt; (pNonSys) break 0 // bug check: we shouldn't be here if pNonSys is TRUE!
&gt;         ;;
&gt;         invala
&gt; &lt;&lt;&lt; window: to here &gt;&gt;&gt;
&gt;         rsm psr.i | psr.ic // turn off interrupts and interruption collection

If pUStk is true, it means we are going to return user mode, hence we fetch
ar.itc to get time at leave from system.
It seems that it is not possible to interrupt the window if pUStk is true,
because interrupts are disabled early.  And also disabling interrupt makes
sense because it is safe for referring current_thread_info()-&gt;flags.

However interrupting the window while pUStk is true was possible.
The route was:
ia64_trace_syscall
-&gt; .work_pending_syscall_end
-&gt; .work_processed_syscall
Only in case entering the window from this route, interrupts are enabled
during in the window even if pUStk is true.  I suppose interrupts must be
disabled here anyway if pUStk is true.
I'm not sure but afraid that what kind of bad effect were there, other
than crazy system time which I found.

FYI, there was a commit 6f6d75825dc49b082906b84537b4df28293c2977 that
points out a bug at same point(exit of ia64_trace_syscall) in 2006.
It can be said that there was an another bug.

Signed-off-by: Hidetoshi Seto &lt;seto.hidetoshi@jp.fujitsu.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] VIRT_CPU_ACCOUNTING (accurate cpu time accounting)</title>
<updated>2008-02-20T20:55:37Z</updated>
<author>
<name>Hidetoshi Seto</name>
</author>
<published>2008-01-29T05:27:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=b64f34cdfe5bef9dfed1304c513220b0f2862eca'/>
<id>urn:sha1:b64f34cdfe5bef9dfed1304c513220b0f2862eca</id>
<content type='text'>
This patch implements VIRT_CPU_ACCOUNTING for ia64,
which enable us to use more accurate cpu time accounting.

The VIRT_CPU_ACCOUNTING is an item of kernel config, which s390
and powerpc arch have.  By turning this config on, these archs
change the mechanism of cpu time accounting from tick-sampling
based one to state-transition based one.

The state-transition based accounting is done by checking time
(cycle counter in processor) at every state-transition point,
such as entrance/exit of kernel, interrupt, softirq etc.
The difference between point to point is the actual time consumed
during in the state. There is no doubt about that this value is
more accurate than that of tick-sampling based accounting.

Signed-off-by: Hidetoshi Seto &lt;seto.hidetoshi@jp.fujitsu.com&gt;
Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
<entry>
<title>[IA64] Wire up timerfd_{create,settime,gettime} syscalls</title>
<updated>2008-02-08T20:00:32Z</updated>
<author>
<name>Tony Luck</name>
</author>
<published>2008-02-06T21:57:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=ad9e39c70f46c5e17b1ed5912e8693454fec1455'/>
<id>urn:sha1:ad9e39c70f46c5e17b1ed5912e8693454fec1455</id>
<content type='text'>
Add ia64 hooks for the new syscalls that were added in
commit 4d672e7ac79b5ec5cdc90e450823441e20464691

Signed-off-by: Tony Luck &lt;tony.luck@intel.com&gt;
</content>
</entry>
</feed>
