From mboxrd@z Thu Jan 1 00:00:00 1970 Subject: Re: [Adeos-main] [PATCH+HACK] optimise root stalling From: Philippe Gerum In-Reply-To: <451B92C8.9050802@domain.hid> References: <451786B3.4020506@domain.hid> <1159434450.4949.7.camel@domain.hid> <451B92C8.9050802@domain.hid> Content-Type: text/plain Date: Thu, 28 Sep 2006 11:16:37 +0200 Message-Id: <1159434997.4949.9.camel@domain.hid> Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Reply-To: rpm@xenomai.org List-Id: General discussion about Adeos List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: adeos-main@gna.org On Thu, 2006-09-28 at 11:15 +0200, Jan Kiszka wrote: > Philippe Gerum wrote: > > On Mon, 2006-09-25 at 09:35 +0200, Jan Kiszka wrote: > > > > This one won't work. We need to forcibly re-enable the hw IRQs upon root > > unstall requests, regardless of the fact that interrupts are pending in > > the log; some code rely on this. E.g. Adeos/ppc over 2.4 would remain > > stuck in the delay calibration routine, but there are other more tricky > > places where this would bite too. > > But this would be ok? > > #else /* !CONFIG_SMP */ > __clear_bit(IPIPE_STALL_FLAG, > &ipipe_root_domain->cpudata[cpuid].status); > > if (unlikely(ipipe_root_domain->cpudata[cpuid].irq_pending_hi != > 0)) { > local_irq_disable_hw(); > __ipipe_sync_pipeline(IPIPE_IRQMASK_ANY); > } > local_irq_enable_hw(); > #endif /* CONFIG_SMP */ > > So we can still save one disable IRQ in the fastpath. > But in such a case, you would have to use clear_bit() to keep atomicity. > Jan > -- Philippe.