All of lore.kernel.org
 help / color / mirror / Atom feed
* [Adeos-main] [BUG] ipipe_sync_stage deadlock
@ 2008-05-08 20:26 Jan Kiszka
  2008-05-08 20:55 ` Philippe Gerum
  0 siblings, 1 reply; 5+ messages in thread
From: Jan Kiszka @ 2008-05-08 20:26 UTC (permalink / raw)
  To: adeos-main

[-- Attachment #1: Type: text/plain, Size: 1116 bytes --]

I love KVM - not only because I'm heavily hacking on it now, also
because it is so easy to trigger various kinds of guest issues with
it (SMP host + threaded virtual CPUs => true SMP guest - and if you
want to watch fancy things happen, just load one host core).

Here is one I found that way:

void fastcall __ipipe_sync_stage(unsigned long syncmask)
{
[ ... ]
	while ((mask = (ipipe_this_cpudom_var(irqpend_himask) & syncmask)) != 0) {
		level = __ipipe_ffnz(mask);

		while ((submask = ipipe_this_cpudom_var(irqpend_lomask)[level]) != 0) {
			rank = __ipipe_ffnz(submask);
			irq = (level << IPIPE_IRQ_ISHIFT) + rank;

			if (test_bit(IPIPE_LOCK_FLAG, &ipd->irqs[irq].control)) {
				__clear_bit(rank, &ipipe_this_cpudom_var(irqpend_lomask)[level]);
				continue;
			}

			__clear_bit(rank, &ipipe_this_cpudom_var(irqpend_lomask)[level]);

			if (ipipe_this_cpudom_var(irqpend_lomask)[level] == 0)
				__clear_bit(level, &ipipe_this_cpudom_var(irqpend_himask));
[ ... ]

Who sees the deadlock? 100 points for the right answer! But be quick,
I'm already hacking on a fix. :)

Jan


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 254 bytes --]

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

end of thread, other threads:[~2008-05-08 21:23 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-08 20:26 [Adeos-main] [BUG] ipipe_sync_stage deadlock Jan Kiszka
2008-05-08 20:55 ` Philippe Gerum
2008-05-08 21:00   ` Philippe Gerum
2008-05-08 21:13     ` Jan Kiszka
2008-05-08 21:23       ` Philippe Gerum

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.