diff options
author | Liu Ping Fan <kernelfans@gmail.com> | 2013-08-23 08:58:47 (GMT) |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2013-08-26 10:58:00 (GMT) |
commit | 25aa2957973d361081ac6c8b6e5a0d9d7a83fef6 (patch) | |
tree | ad77338c9f70a2dd2f4c731e71e1a4cd12c29fee /arch/sh/configs/cayman_defconfig | |
parent | 17405453f4ad0220721a29978692081be6392b8f (diff) | |
download | linux-fsl-qoriq-25aa2957973d361081ac6c8b6e5a0d9d7a83fef6.tar.xz |
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>
Diffstat (limited to 'arch/sh/configs/cayman_defconfig')
0 files changed, 0 insertions, 0 deletions