df54c4934e
x86/irq: Protect smp_cleanup_move
...
smp_cleanup_move fiddles without protection in the interrupt
descriptors and the vector array. A concurrent irq setup/teardown or
affinity setting can pull the rug under that operation.
Add proper locking.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Rusty Russell <rusty@rustcorp.com.au >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Link: http://lkml.kernel.org/r/20150802203609.222975294@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-08-06 00:14:58 +02:00
b7edaca4e8
Merge branch 'linus' into x86/apic
...
Pull in upstream changes to avoid conflicts
2015-08-06 00:00:32 +02:00
c149e4cd08
x86/irq: Use access helper irq_data_get_affinity_mask()
...
This is a preparatory patch for moving irq_data struct members.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-07-13 21:22:47 +02:00
5f2dbbc517
x86/irq: Use accessor irq_data_get_node()
...
Use accessor irq_data_get_node() to hide struct irq_data
implementation detail, so we can move node to irq_data_common later.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Borislav Petkov <bp@alien8.de >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-07-13 21:22:46 +02:00
5a3f75e3f0
x86/irq: Plug irq vector hotplug race
...
Jin debugged a nasty cpu hotplug race which results in leaking a irq
vector on the newly hotplugged cpu.
cpu N cpu M
native_cpu_up device_shutdown
do_boot_cpu free_msi_irqs
start_secondary arch_teardown_msi_irqs
smp_callin default_teardown_msi_irqs
setup_vector_irq arch_teardown_msi_irq
__setup_vector_irq native_teardown_msi_irq
lock(vector_lock) destroy_irq
install vectors
unlock(vector_lock)
lock(vector_lock)
---> __clear_irq_vector
unlock(vector_lock)
lock(vector_lock)
set_cpu_online
unlock(vector_lock)
This leaves the irq vector(s) which are torn down on CPU M stale in
the vector array of CPU N, because CPU M does not see CPU N online
yet. There is a similar issue with concurrent newly setup interrupts.
The alloc/free protection of irq descriptors does not prevent the
above race, because it merily prevents interrupt descriptors from
going away or changing concurrently.
Prevent this by moving the call to setup_vector_irq() into the
vector_lock held region which protects set_cpu_online():
cpu N cpu M
native_cpu_up device_shutdown
do_boot_cpu free_msi_irqs
start_secondary arch_teardown_msi_irqs
smp_callin default_teardown_msi_irqs
lock(vector_lock) arch_teardown_msi_irq
setup_vector_irq()
__setup_vector_irq native_teardown_msi_irq
install vectors destroy_irq
set_cpu_online
unlock(vector_lock)
lock(vector_lock)
__clear_irq_vector
unlock(vector_lock)
So cpu M either sees the cpu N online before clearing the vector or
cpu N installs the vectors after cpu M has cleared it.
Reported-by: xiao jin <jin.xiao@intel.com >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Joerg Roedel <jroedel@suse.de >
Cc: Borislav Petkov <bp@suse.de >
Cc: Yanmin Zhang <yanmin_zhang@linux.intel.com >
Link: http://lkml.kernel.org/r/20150705171102.141898931@linutronix.de
2015-07-07 11:54:04 +02:00
6af7faf607
x86: Use entering[_ack]_irq() instead of open coding it
...
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-05-15 16:03:18 +02:00
486ca539ca
x86, irq: Allocate CPU vectors from device local CPUs if possible
...
On NUMA systems, an IO device may be associated with a NUMA node.
It may improve IO performance to allocate resources, such as memory
and interrupts, from device local node.
This patch introduces a mechanism to support CPU vector allocation
policies. It tries to allocate CPU vectors from CPUs on device local
node first, and then fallback to all online(global) CPUs.
This mechanism may be used to support NumaConnect systems to allocate
CPU vectors from device local node.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Daniel J Blueman <daniel@numascale.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Link: http://lkml.kernel.org/r/1430967244-28905-1-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-05-13 09:50:24 +02:00
191a66353b
Merge branch 'x86/asm' into x86/apic, to resolve a conflict
...
Conflicts:
arch/x86/kernel/apic/io_apic.c
arch/x86/kernel/apic/vector.c
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2015-05-11 16:05:09 +02:00
8b455e6577
x86/asm/entry/irq: Clean up IRQn_VECTOR macros
...
Since the ISA irqs are in a single block, use
ISA_IRQ_VECTOR(irq) instead of individual macros.
Signed-off-by: Brian Gerst <brgerst@gmail.com >
Cc: Andrew Morton <akpm@linux-foundation.org >
Cc: Andy Lutomirski <luto@amacapital.net >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Denys Vlasenko <dvlasenk@redhat.com >
Cc: H. Peter Anvin <hpa@zytor.com >
Cc: Linus Torvalds <torvalds@linux-foundation.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Thomas Gleixner <tglx@linutronix.de >
Link: http://lkml.kernel.org/r/1431185813-15413-5-git-send-email-brgerst@gmail.com
Signed-off-by: Ingo Molnar <mingo@kernel.org >
2015-05-10 12:34:28 +02:00
eb18cf55c2
x86: Constify irqdomain ops
...
Nothing changes those ops. Make the initializers readable while at it.
Reported-by: Krzysztof Kozlowski <k.kozlowski.k@gmail.com >
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-05-05 11:14:48 +02:00
f7fa7aeeec
x86/irq: Avoid memory allocation in __assign_irq_vector()
...
Function __assign_irq_vector() is protected by vector_lock, so use
a global temporary cpu_mask to avoid allocating/freeing cpu_mask.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428978610-28986-34-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:55 +02:00
d746d1ebd3
x86/irq: Move irqdomain specific code into asm/irqdomain.h
...
Now we have dedicated asm/irqdomain.h, so move irqdomain specific
code into it.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Joerg Roedel <jroedel@suse.de >
Cc: Andy Lutomirski <luto@amacapital.net >
Link: http://lkml.kernel.org/r/1428978610-28986-33-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:55 +02:00
7f3262edcd
x86/irq: Move private data in struct irq_cfg into dedicated data structure
...
Several fields in struct irq_cfg are private to vector.c, so move it
into dedicated data structure. This helps to hide implementation
details.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428978610-28986-27-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Link: http://lkml.kernel.org/r/1416901802-24211-35-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
Tested-by: Joerg Roedel <jroedel@suse.de >
2015-04-24 15:36:55 +02:00
c6c2002b74
x86/irq: Move check of cfg->move_in_progress into send_cleanup_vector()
...
Move check of cfg->move_in_progress into send_cleanup_vector() to
prepare for simplifying struct irq_cfg.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: iommu@lists.linux-foundation.org
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Joerg Roedel <joro@8bytes.org >
Link: http://lkml.kernel.org/r/1428978610-28986-26-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:54 +02:00
68f9f4404d
x86/irq: Remove function apic_set_affinity()
...
Now there's no user of apic_set_affinity(), so remove it. Also rename
vector_set_affinity() to apic_set_affinity() for consistency.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428978610-28986-25-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:54 +02:00
f970510cc5
x86/irq: Make functions only used in vector.c static
...
Function {assign|clear}_irq_vector() and apic_retrigger_irq() are only
used in vector.c, so make them static.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428978610-28986-24-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:54 +02:00
a2cbbb47fd
x86/irq: Remove unused alloc_irq_and_cfg_at()
...
There's no caller of alloc_irq_and_cfg_at() anymore, so remove it.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428978610-28986-23-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:54 +02:00
4467715a44
x86/irq: Move irq_cfg.irq_2_pin into io_apic.c
...
Now only io_apic.c accesses struct irq_cfg.irq_2_pin, so move irq_2_pin
into struct mp_chip_data in io_apic.c to clean up struct irq_cfg further.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Grant Likely <grant.likely@linaro.org >
Link: http://lkml.kernel.org/r/1428978610-28986-17-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:53 +02:00
9880534989
irq_remapping: Clean up unsued code to support IOAPIC
...
Now we have converted to hierarchical irqdomains, so clean up unused code.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: iommu@lists.linux-foundation.org
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Joerg Roedel <joro@8bytes.org >
Link: http://lkml.kernel.org/r/1428978610-28986-10-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:52 +02:00
baac169526
x86/irq: Remove GENERIC_IRQ_LEGACY_ALLOC_HWIRQ
...
There's no user of irq_alloc_hwirqs(), irq_alloc_hwirq(),
irq_free_hwirqs() and irq_free_hwirq() in x86 anymore, so remove
GENERIC_IRQ_LEGACY_ALLOC_HWIRQ and related code.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428978610-28986-8-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:52 +02:00
133153205b
x86/irq: Refine the way to allocate irq_cfg for legacy IRQs
...
To support legacy ISA IRQs, we need to preallocate irq_cfg structures
for legacy ISA IRQs. Refine the way to allocate irq_cfg for legacy ISA
IRQs, so it's more friendly for the hierarchical irqdomain
implementation.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Tested-by: Joerg Roedel <jroedel@suse.de >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Grant Likely <grant.likely@linaro.org >
Link: http://lkml.kernel.org/r/1428905519-23704-35-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:51 +02:00
49e07d8f28
x86/htirq: Use hierarchical irqdomain to manage Hypertransport interrupts
...
We have slightly changed the architecture interfaces to support htirq
PCI driver. It's safe because currently Hypertransport interrupt is
only enabled on x86 platforms.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428905519-23704-22-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:50 +02:00
52f518a3a7
x86/MSI: Use hierarchical irqdomains to manage MSI interrupts
...
Enhance MSI code to support hierarchical irqdomains, it helps to make
the architecture more clear.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: iommu@lists.linux-foundation.org
Cc: Joerg Roedel <jroedel@suse.de >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Joerg Roedel <joro@8bytes.org >
Link: http://lkml.kernel.org/r/1428905519-23704-14-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:49 +02:00
b5dc8e6c21
x86/irq: Use hierarchical irqdomain to manage CPU interrupt vectors
...
Abstract CPU local APIC as an interrupt controller and create an
irqdomain for it to manage CPU interrupt vectors. It's the base to
enable hierarchical irqdomains on x86 systems.
The final irqdomain hierarchy will look like this:
IOAPIC domain ----|
MSI/MSI-x domain ----> [Interrupt Remapping domain] -> CPU vector domain
HPET_IRQ domain ----| ^
|
DMAR domain ----------------------------------------------|
HT_IRQ domain ----------------------------------------------|
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Prarit Bhargava <prarit@redhat.com >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Cc: Grant Likely <grant.likely@linaro.org >
Link: http://lkml.kernel.org/r/1428905519-23704-3-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:47 +02:00
5f0052f952
x86/irq: Save destination CPU ID in irq_cfg
...
Cache destination CPU APIC ID into struct irq_cfg when assigning vector
for interrupt. Upper layer just needs to read the cached APIC ID instead
of calling apic->cpu_mask_to_apicid_and(), it helps to hide APIC driver
details from IOAPIC/HPET/MSI drivers..
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: David Cohen <david.a.cohen@linux.intel.com >
Cc: Sander Eikelenboom <linux@eikelenboom.it >
Cc: David Vrabel <david.vrabel@citrix.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Dimitri Sivanich <sivanich@sgi.com >
Link: http://lkml.kernel.org/r/1428905519-23704-2-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2015-04-24 15:36:47 +02:00
a978609112
x86, irq: Use helpers to access irq_cfg data structure associated with IRQ
...
Use helpers to access irq_cfg data structure associated with IRQ,
instead of accessing irq_data->chip_data directly. Later we can
rewrite those helpers to support hierarchy irqdomain.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Grant Likely <grant.likely@linaro.org >
Cc: Prarit Bhargava <prarit@redhat.com >
Link: http://lkml.kernel.org/r/1414397531-28254-17-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-12-16 14:08:17 +01:00
11d686e956
x86, irq: Move IRQ initialization routines from io_apic.c into vector.c
...
Move IRQ initialization routines from io_apic.c into vector.c,
preparing for enabling hierarchy irqdomain.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Grant Likely <grant.likely@linaro.org >
Cc: Prarit Bhargava <prarit@redhat.com >
Link: http://lkml.kernel.org/r/1414397531-28254-15-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-12-16 14:08:17 +01:00
849d3569bb
x86, irq: Replace printk(KERN_LVL) with pr_lvl() utilities
...
Replace printk(KENR_LVL) with pr_lvl() to keep checkpatch script silent.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Link: http://lkml.kernel.org/r/1414397531-28254-11-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-12-16 14:08:17 +01:00
f0e5bf7583
x86, irq: Make UP version of irq_complete_move() an inline stub
...
No point for having an empty real function.
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-12-16 14:08:16 +01:00
74afab7af7
x86, irq: Move local APIC related code from io_apic.c into vector.c
...
Create arch/x86/kernel/apic/vector.c to host local APIC related code,
prepare for making MSI/HT_IRQ independent of IOAPIC.
Signed-off-by: Jiang Liu <jiang.liu@linux.intel.com >
Cc: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com >
Cc: Tony Luck <tony.luck@intel.com >
Cc: Joerg Roedel <joro@8bytes.org >
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org >
Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org >
Cc: Rafael J. Wysocki <rjw@rjwysocki.net >
Cc: Bjorn Helgaas <bhelgaas@google.com >
Cc: Randy Dunlap <rdunlap@infradead.org >
Cc: Yinghai Lu <yinghai@kernel.org >
Cc: Borislav Petkov <bp@alien8.de >
Cc: Prarit Bhargava <prarit@redhat.com >
Cc: Grant Likely <grant.likely@linaro.org >
Link: http://lkml.kernel.org/r/1414397531-28254-10-git-send-email-jiang.liu@linux.intel.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de >
2014-12-16 14:08:16 +01:00