Liu Ping Fan
25aa295797
x86/ioapic: Check attr against the previous setting when programmed more than once
...
When programming ioapic pinX more than once, current code
does not check whether the later attr (trigger & polarity) is the
same as the former or not.
This causes broken semantics which can be observed in a qemu q35
machine, where ioapic's ioredtbl[x] can never be set as low-active,
even if the hpet driver registered it.
And hpet driver may share a high-level active IRQ line with other
devices. So in qemu, when hpet-dev asserts low-level as kernel
expects, the kernel has no response.
With this patch, we can observe an ioredtbl[x] set as low-active
for hpet.
Fix it by reporting -EBUSY to the caller, when attr is different.
Signed-off-by: Liu Ping Fan <pingfank@linux.vnet.ibm.com>
Cc: Kevin Hao <haokexin@gmail.com>
Cc: Len Brown <len.brown@intel.com>
Cc: Yinghai Lu <yinghai@kernel.org>
Link: http://lkml.kernel.org/r/1377248327-19633-1-git-send-email-pingfank@linux.vnet.ibm.com
[ Made small readability edits to both the changelog and the code. ]
Signed-off-by: Ingo Molnar <mingo@kernel.org>
2013-08-26 12:58:00 +02:00
..
2013-08-26 12:58:00 +02:00
2013-08-26 12:58:00 +02:00
2013-07-14 19:36:56 -04:00
2013-06-20 14:25:48 +02:00
2013-04-02 10:12:52 -07:00
2012-11-17 11:59:10 -08:00
2013-04-30 08:42:45 -07:00
2013-02-19 20:11:07 -08:00
2013-04-16 10:54:40 +02:00
2013-04-23 13:45:22 +02:00
2013-06-06 14:32:04 -07:00
2013-05-02 11:27:35 -07:00
2012-09-30 22:53:32 -04:00
2012-05-15 15:36:41 -07:00
2013-07-14 19:36:56 -04:00
2012-03-20 21:48:15 +08:00
2013-08-20 09:26:33 +02:00
2013-07-14 19:36:56 -04:00
2013-05-13 13:42:44 -07:00
2013-04-30 17:04:02 -07:00
2013-04-30 17:04:02 -07:00
2013-04-30 17:04:02 -07:00
2012-11-17 11:59:51 -08:00
2013-04-29 18:28:13 -07:00
2013-04-18 17:00:47 +02:00
2013-06-20 22:25:34 -07:00
2013-07-02 16:31:49 -07:00
2012-11-16 16:42:09 -08:00
2013-01-29 19:32:58 -08:00
2013-05-20 11:36:03 -07:00
2013-07-14 19:36:56 -04:00
2013-07-16 15:14:48 -07:00
2013-02-27 13:38:57 -08:00
2013-01-28 10:48:30 +01:00
2013-07-09 10:33:26 -07:00
2013-02-07 15:07:28 -08:00
2013-07-14 19:36:56 -04:00
2012-08-22 09:34:24 +02:00
2013-02-03 18:16:24 -05:00
2013-07-14 19:36:56 -04:00
2011-12-07 09:27:11 +01:00
2013-06-20 22:25:34 -07:00
2013-06-21 10:33:28 -04:00
2013-04-16 16:32:39 -03:00
2011-12-06 20:41:02 +01:00
2012-07-26 15:07:20 +02:00
2012-10-12 06:37:34 -05:00
2013-07-14 19:36:56 -04:00
2013-07-14 19:36:56 -04:00
2012-03-28 18:11:12 +01:00
2012-03-28 18:11:12 +01:00
2013-01-29 15:26:35 -08:00
2013-07-02 16:31:49 -07:00
2013-07-14 19:36:56 -04:00
2013-05-30 20:19:25 -07:00
2013-07-14 19:36:56 -04:00
2013-07-14 19:36:56 -04:00
2013-07-14 19:36:56 -04:00
2013-01-31 13:19:14 -08:00
2013-01-31 13:18:50 -08:00
2013-07-14 19:36:56 -04:00
2012-07-24 13:34:56 -07:00
2012-05-29 20:14:53 -07:00
2013-07-14 19:36:56 -04:00
2012-06-20 14:23:17 +02:00
2013-07-12 14:13:04 +02:00
2013-04-30 08:41:21 -07:00
2012-06-06 09:17:22 +02:00
2013-01-24 17:34:18 +01:00
2012-05-21 15:09:38 +02:00
2012-03-28 16:36:31 +02:00
2012-09-19 17:08:40 +02:00
2012-09-05 10:52:25 +02:00
2013-07-02 16:25:06 -07:00
2013-07-02 16:25:06 -07:00
2013-07-14 19:36:56 -04:00
2013-07-09 10:33:26 -07:00
2013-02-28 08:50:11 +02:00
2013-04-02 16:03:34 -07:00
2013-07-09 10:33:29 -07:00
2013-06-25 16:26:06 -07:00
2013-06-20 21:30:04 -07:00
2013-05-28 14:00:59 -07:00
2012-06-14 12:42:11 +02:00
2013-07-14 19:36:56 -04:00
2013-05-28 08:46:53 +02:00
2013-07-02 09:52:31 +02:00
2013-07-14 19:36:56 -04:00
2013-01-22 10:08:00 -08:00
2013-01-24 16:22:10 +01:00
2011-11-18 16:25:07 -08:00
2012-02-20 12:52:06 -08:00
2013-07-14 19:36:56 -04:00
2012-03-28 18:11:12 +01:00
2012-04-20 13:51:38 -07:00
2012-05-17 19:06:13 -04:00
2013-03-03 22:58:33 -05:00
2012-11-14 15:28:11 -08:00
2012-11-13 15:48:27 -05:00
2013-07-16 15:14:48 -07:00
2013-07-16 15:14:48 -07:00
2013-07-14 19:36:56 -04:00
2013-07-14 19:36:56 -04:00
2013-04-13 15:31:55 +02:00
2013-05-02 20:36:32 -04:00
2013-03-11 15:07:56 +01:00
2012-07-06 11:00:22 +02:00
2013-07-14 19:36:56 -04:00
2013-07-14 19:36:56 -04:00
2012-11-16 16:42:08 -08:00
2013-07-14 19:36:56 -04:00