From: Jeremy Fitzhardinge <jeremy@goop.org>
To: "Zhang, Xiantao" <xiantao.zhang@intel.com>
Cc: Xen-devel <xen-devel@lists.xensource.com>,
"Han, Weidong" <weidong.han@intel.com>,
Keir Fraser <keir.fraser@eu.citrix.com>,
Konrad Rzeszutek Wilk <konrad.wilk@oracle.com>
Subject: Re: Re: APIC rework
Date: Thu, 12 Nov 2009 15:51:09 -0800 [thread overview]
Message-ID: <4AFC9F6D.4030806@goop.org> (raw)
In-Reply-To: <4AFB5E1F.7020709@goop.org>
On 11/11/09 17:00, Jeremy Fitzhardinge wrote:
> On 11/11/09 16:47, Jeremy Fitzhardinge wrote:
>
>> For now I've applied your current patch to the branch
>> xen/dom0/apic-xiantao, rooted on the last xen/master branch where it
>> applies cleanly.
>>
>>
> And xen/master-xiantao is my attempt to merge it into master. It turned
> out less complex than I'd thought, but I haven't tested it yet.
>
And it works, at least for simple stuff (haven't tried passthrough or
MSI yet).
Keir, how do you feel about this change for Xen?
x86: Change the interface physdev_map_pirq to support new dom0.
It also keeps compatibility with old dom0.
Signed-off-by: Xiantao Zhang <xiantao.zhang@intel.com>
diff -r 8f81bdd57afe xen/arch/x86/irq.c
--- a/xen/arch/x86/irq.c Thu Sep 03 09:51:37 2009 +0100
+++ b/xen/arch/x86/irq.c Thu Sep 24 15:36:19 2009 +0800
@@ -55,6 +55,11 @@ DEFINE_PER_CPU(vector_irq_t, vector_irq)
DEFINE_PER_CPU(struct cpu_user_regs *, __irq_regs);
+int check_irq_status(int irq)
+{
+ return irq_status[irq] != IRQ_UNUSED ? 1 : 0;
+}
+
/* Must be called when irq disabled */
void lock_vector_lock(void)
{
@@ -588,6 +593,9 @@ int setup_irq(unsigned int irq, struct i
desc->depth = 0;
desc->status &= ~IRQ_DISABLED;
desc->handler->startup(irq);
+
+ if ( !check_irq_status(irq) )
+ irq_status[irq] = IRQ_USED;
spin_unlock_irqrestore(&desc->lock,flags);
@@ -1277,6 +1285,8 @@ int map_domain_pirq(
ASSERT(spin_is_locked(&pcidevs_lock));
ASSERT(spin_is_locked(&d->event_lock));
+
+ desc = irq_to_desc(irq);
if ( !IS_PRIV(current->domain) )
return -EPERM;
@@ -1288,6 +1298,13 @@ int map_domain_pirq(
return -EINVAL;
}
+ if ( desc->action )
+ {
+ dprintk(XENLOG_G_WARNING, "Attempt to map in-use IRQ by Xen,"
+ " irq:%d!\n", irq);
+ return 0;
+ }
+
old_irq = domain_pirq_to_irq(d, pirq);
old_pirq = domain_irq_to_pirq(d, irq);
@@ -1307,7 +1324,6 @@ int map_domain_pirq(
return ret;
}
- desc = irq_to_desc(irq);
if ( type == MAP_PIRQ_TYPE_MSI )
{
diff -r 8f81bdd57afe xen/arch/x86/physdev.c
--- a/xen/arch/x86/physdev.c Thu Sep 03 09:51:37 2009 +0100
+++ b/xen/arch/x86/physdev.c Thu Sep 24 15:45:17 2009 +0800
@@ -30,7 +30,7 @@ static int physdev_map_pirq(struct physd
static int physdev_map_pirq(struct physdev_map_pirq *map)
{
struct domain *d;
- int pirq, irq, ret = 0;
+ int pirq = 0, irq, ret = 0;
struct msi_info _msi;
void *map_data = NULL;
@@ -55,23 +55,28 @@ static int physdev_map_pirq(struct physd
switch ( map->type )
{
case MAP_PIRQ_TYPE_GSI:
- if ( map->index < 0 || map->index >= nr_irqs_gsi )
+ {
+ int gsi, triggering, polarity;
+
+ gsi = map->index & 0xffff;
+ triggering = !!(map->index & (1 << 16));
+ polarity = !!(map->index & (1 << 24));
+ irq = pirq = map->pirq;
+
+ if ( gsi < 0 || gsi >= nr_irqs_gsi )
{
- dprintk(XENLOG_G_ERR, "dom%d: map invalid irq %d\n",
- d->domain_id, map->index);
+ dprintk(XENLOG_G_ERR, "dom%d: map invalid gsi %d\n",
+ d->domain_id, gsi);
ret = -EINVAL;
goto free_domain;
}
- irq = domain_pirq_to_irq(current->domain, map->index);
- if ( !irq )
- {
- dprintk(XENLOG_G_ERR, "dom%d: map pirq with incorrect irq!\n",
- d->domain_id);
- ret = -EINVAL;
- goto free_domain;
- }
- break;
-
+ if ( !check_irq_status(irq) ) {
+ mp_register_gsi(gsi, triggering, polarity);
+ printk("Register gsi:%d for dom:%d, irq:%d\n", gsi,
+ d->domain_id, irq);
+ }
+ break;
+ }
case MAP_PIRQ_TYPE_MSI:
irq = map->index;
if ( irq == -1 )
@@ -103,7 +108,6 @@ static int physdev_map_pirq(struct physd
spin_lock(&pcidevs_lock);
/* Verify or get pirq. */
spin_lock(&d->event_lock);
- pirq = domain_irq_to_pirq(d, irq);
if ( map->pirq < 0 )
{
if ( pirq )
diff -r 8f81bdd57afe xen/include/asm-x86/irq.h
--- a/xen/include/asm-x86/irq.h Thu Sep 03 09:51:37 2009 +0100
+++ b/xen/include/asm-x86/irq.h Sat Sep 05 16:09:07 2009 +0800
@@ -123,6 +123,8 @@ int __assign_irq_vector(int irq, struct
int bind_irq_vector(int irq, int vector, cpumask_t domain);
+int check_irq_status(int irq);
+
#define domain_pirq_to_irq(d, pirq) ((d)->arch.pirq_irq[pirq])
#define domain_irq_to_pirq(d, irq) ((d)->arch.irq_pirq[irq])
J
next prev parent reply other threads:[~2009-11-12 23:51 UTC|newest]
Thread overview: 121+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-09-19 1:19 Announcing xen/master: pvops git trees rearranged Jeremy Fitzhardinge
2009-09-19 10:36 ` Marc - A. Dahlhaus
2009-09-20 19:29 ` Marc - A. Dahlhaus
2009-09-21 6:22 ` Pasi Kärkkäinen
2009-09-21 8:49 ` Marc - A. Dahlhaus [ Administration | Westermann GmbH ]
2009-09-21 9:03 ` Pasi Kärkkäinen
2009-09-21 9:18 ` Marc - A. Dahlhaus [ Administration | Westermann GmbH ]
2009-09-21 14:39 ` Konrad Rzeszutek Wilk
2009-09-21 16:19 ` [Cluster-devel] Re: [Xen-devel] " Marc
2009-09-21 15:20 ` Pasi Kärkkäinen
2009-09-19 14:46 ` pvops: AHCI problems with SB600 Patrick Scharrenberg
2009-09-21 5:57 ` Patrick Scharrenberg
2009-09-21 15:06 ` Konrad Rzeszutek Wilk
2009-09-22 9:00 ` Patrick Scharrenberg
2009-09-22 14:08 ` Konrad Rzeszutek Wilk
2009-09-23 7:37 ` Patrick Scharrenberg
2009-09-23 12:09 ` Konrad Rzeszutek Wilk
2009-09-23 12:06 ` Konrad Rzeszutek Wilk
2009-09-23 19:22 ` Jeremy Fitzhardinge
2009-09-23 19:32 ` Konrad Rzeszutek Wilk
2009-09-23 20:09 ` Jeremy Fitzhardinge
2009-09-23 20:30 ` Jeremy Fitzhardinge
2009-09-23 21:24 ` Konrad Rzeszutek Wilk
2009-09-23 21:56 ` Jeremy Fitzhardinge
2009-09-24 12:44 ` Konrad Rzeszutek Wilk
2009-09-24 18:23 ` Jeremy Fitzhardinge
2009-09-24 21:36 ` Konrad Rzeszutek Wilk
2009-09-24 19:12 ` Patrick Scharrenberg
2009-09-21 14:43 ` Announcing xen/master: pvops git trees rearranged (AMD tests?) Konrad Rzeszutek Wilk
2009-09-21 19:25 ` Announcing xen/master: pvops git trees rearranged Pasi Kärkkäinen
2009-09-21 19:30 ` Jeremy Fitzhardinge
2009-09-21 19:50 ` Pasi Kärkkäinen
2009-09-21 20:21 ` Jeremy Fitzhardinge
2009-09-21 20:26 ` Pasi Kärkkäinen
2009-09-21 20:29 ` Jeremy Fitzhardinge
2009-09-21 20:36 ` Pasi Kärkkäinen
2009-09-23 13:16 ` Christian Tramnitz
2009-09-23 20:13 ` Jeremy Fitzhardinge
2009-09-24 3:17 ` Qing He
2009-09-24 19:38 ` Jeremy Fitzhardinge
2009-09-24 8:15 ` Zhang, Xiantao
2009-09-25 1:44 ` Zhang, Xiantao
[not found] ` <706158FABBBA044BAD4FE898A02E4BC201C9AC7ED0@pdsmsx503.ccr.corp.intel.com>
[not found] ` <4AC54350.7040909@goop.org>
[not found] ` <706158FABBBA044BAD4FE898A02E4BC201C9AC8A88@pdsmsx503.ccr.corp.intel.com>
[not found] ` <4AD75A0B.9020508@goop.org>
[not found] ` <706158FABBBA044BAD4FE898A02E4BC201C9BD87FA@pdsmsx503.ccr.corp.intel.com>
2009-11-12 0:47 ` APIC rework Jeremy Fitzhardinge
2009-11-12 1:00 ` Jeremy Fitzhardinge
2009-11-12 23:51 ` Jeremy Fitzhardinge [this message]
2009-11-13 5:27 ` Zhang, Xiantao
2009-11-13 7:24 ` Keir Fraser
2009-11-13 23:57 ` Jeremy Fitzhardinge
2009-11-14 8:04 ` Keir Fraser
2009-11-16 10:38 ` Zhang, Xiantao
2009-11-16 18:37 ` Jeremy Fitzhardinge
2009-11-17 3:13 ` Zhang, Xiantao
2009-11-17 3:45 ` Keir Fraser
2009-11-17 5:20 ` Jeremy Fitzhardinge
2009-11-17 5:44 ` Keir Fraser
2009-11-17 12:46 ` Zhang, Xiantao
2009-11-17 13:05 ` Keir Fraser
2009-11-17 14:17 ` Zhang, Xiantao
2009-11-17 18:51 ` Jeremy Fitzhardinge
2009-11-18 3:37 ` Zhang, Xiantao
2009-11-18 14:29 ` Konrad Rzeszutek Wilk
2009-11-20 1:47 ` Zhang, Xiantao
2009-11-17 19:49 ` Keir Fraser
2009-11-18 3:12 ` Jiang, Yunhong
2009-11-18 3:25 ` Zhang, Xiantao
2009-11-18 9:37 ` Keir Fraser
2009-11-24 10:04 ` Zhang, Xiantao
2009-11-24 19:25 ` Jeremy Fitzhardinge
2009-11-25 1:42 ` Zhang, Xiantao
2009-11-24 19:44 ` Konrad Rzeszutek Wilk
2009-11-24 23:35 ` Jeremy Fitzhardinge
2009-11-25 14:10 ` Konrad Rzeszutek Wilk
2009-11-25 19:14 ` Jeremy Fitzhardinge
2009-11-30 14:26 ` Konrad Rzeszutek Wilk
2009-11-25 2:43 ` Zhang, Xiantao
2009-11-25 13:41 ` Konrad Rzeszutek Wilk
2009-11-25 15:21 ` Zhang, Xiantao
2009-11-25 18:00 ` Konrad Rzeszutek Wilk
2009-11-26 11:53 ` Zhang, Xiantao
2009-11-30 14:34 ` Konrad Rzeszutek Wilk
2009-12-03 2:13 ` Zhang, Xiantao
2009-12-03 14:38 ` Konrad Rzeszutek Wilk
2009-11-25 18:59 ` Jeremy Fitzhardinge
2009-11-26 1:11 ` Zhang, Xiantao
2009-11-18 14:15 ` Konrad Rzeszutek Wilk
2009-11-20 1:45 ` Zhang, Xiantao
2009-11-17 5:12 ` Jeremy Fitzhardinge
2009-09-24 13:20 ` Announcing xen/master: pvops git trees rearranged Christian Tramnitz
2009-09-24 17:47 ` Andy Burns
2009-09-24 18:29 ` Thiago Camargo Martins Cordeiro
2009-09-24 19:32 ` Thiago Camargo Martins Cordeiro
2009-09-24 20:00 ` Jeremy Fitzhardinge
2009-09-24 19:56 ` Jeremy Fitzhardinge
2009-10-11 15:39 ` Pasi Kärkkäinen
2009-10-12 20:02 ` Konrad Rzeszutek Wilk
2009-10-14 21:14 ` Pasi Kärkkäinen
2009-10-15 20:04 ` Konrad Rzeszutek Wilk
2009-10-16 9:01 ` Pasi Kärkkäinen
2009-10-20 16:58 ` [drm:r100_ring_test] *ERROR* radeon: ring test failed Konrad Rzeszutek Wilk
2009-10-21 11:54 ` Pasi Kärkkäinen
2009-10-21 18:31 ` Konrad Rzeszutek Wilk
2009-10-21 18:52 ` Pasi Kärkkäinen
2009-10-21 19:50 ` Jeremy Fitzhardinge
2009-10-21 20:22 ` Pasi Kärkkäinen
2009-10-27 15:46 ` Pasi Kärkkäinen
2009-10-27 17:00 ` Konrad Rzeszutek Wilk
2009-10-27 17:30 ` Pasi Kärkkäinen
2009-10-27 19:45 ` Pasi Kärkkäinen
2009-10-27 19:41 ` Konrad Rzeszutek Wilk
2009-10-27 20:18 ` Pasi Kärkkäinen
2009-10-27 20:13 ` Konrad Rzeszutek Wilk
2009-10-27 20:36 ` Pasi Kärkkäinen
2010-01-01 17:21 ` Pasi Kärkkäinen
2010-01-04 13:37 ` Konrad Rzeszutek Wilk
2010-01-04 19:42 ` Pasi Kärkkäinen
2010-01-14 20:05 ` Konrad Rzeszutek Wilk
2010-01-15 7:18 ` Pasi Kärkkäinen
2009-10-27 20:23 ` Pasi Kärkkäinen
2009-12-04 16:07 ` Announcing xen/master: pvops git trees rearranged Stefan Kuhne
2009-12-04 18:58 ` Pasi Kärkkäinen
2009-12-04 19:27 ` Jeremy Fitzhardinge
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4AFC9F6D.4030806@goop.org \
--to=jeremy@goop.org \
--cc=keir.fraser@eu.citrix.com \
--cc=konrad.wilk@oracle.com \
--cc=weidong.han@intel.com \
--cc=xen-devel@lists.xensource.com \
--cc=xiantao.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.