[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 3/8] xics: add find_server
From: |
Alexey Kardashevskiy |
Subject: |
[Qemu-devel] [PATCH 3/8] xics: add find_server |
Date: |
Fri, 14 Mar 2014 15:18:04 +1100 |
PAPR allows having multiple interrupr servers. However now we
only support one.
This adds a server lookup function and makes use of it.
At the moment no change is expected.
Signed-off-by: Alexey Kardashevskiy <address@hidden>
---
hw/intc/xics.c | 27 ++++++++++++++++++++++-----
1 file changed, 22 insertions(+), 5 deletions(-)
diff --git a/hw/intc/xics.c b/hw/intc/xics.c
index 7eac85a..88ef9ef 100644
--- a/hw/intc/xics.c
+++ b/hw/intc/xics.c
@@ -635,14 +635,30 @@ static const TypeInfo ics_info = {
/*
* Exported functions
*/
+static int xics_find_server(XICSState *icp, int irq)
+{
+ int server;
+
+ for (server = 0; server < icp->nr_servers; ++server) {
+ ICSState *ics = &icp->ics[server];
+ if (ics_valid_irq(ics, irq)) {
+ return server;
+ }
+ }
+
+ return -1;
+}
qemu_irq xics_get_qirq(XICSState *icp, int irq)
{
- if (!ics_valid_irq(icp->ics, irq)) {
- return NULL;
+ int server = xics_find_server(icp, irq);
+
+ if (server >= 0) {
+ ICSState *ics = &icp->ics[server];
+ return ics->qirqs[irq - ics->offset];
}
- return icp->ics->qirqs[irq - icp->ics->offset];
+ return NULL;
}
static void ics_set_irq_type(ICSState *ics, int irq, bool lsi)
@@ -653,9 +669,10 @@ static void ics_set_irq_type(ICSState *ics, int irq, bool
lsi)
void xics_set_irq_type(XICSState *icp, int irq, bool lsi)
{
- assert(ics_valid_irq(icp->ics, irq));
+ int server = xics_find_server(icp, irq);
- ics_set_irq_type(icp->ics, irq, lsi);
+ assert(server >= 0);
+ ics_set_irq_type(&icp->ics[server], irq, lsi);
}
/*
--
1.8.4.rc4
- [Qemu-devel] [PATCH 0/8] spapr: fix IOMMU and XICS/IRQs migration, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 3/8] xics: add find_server,
Alexey Kardashevskiy <=
- [Qemu-devel] [PATCH 6/8] spapr: move interrupt allocator to xics, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 1/8] spapr-iommu: add a bus for spapr-iommu devices, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 7/8] spapr: remove @next_irq, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 4/8] xics: add pre_load() hook to ICSStateClass, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 5/8] xics: disable flags reset on xics reset, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 8/8] xics: enable interrupt configuration reset on migration, Alexey Kardashevskiy, 2014/03/14
- [Qemu-devel] [PATCH 2/8] xics: add flags for interrupts, Alexey Kardashevskiy, 2014/03/14
- Re: [Qemu-devel] [PATCH 0/8] spapr: fix IOMMU and XICS/IRQs migration, Andreas Färber, 2014/03/19