WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

Re: [Xen-devel] Machine hangs when doing pass-through of all the USB de

To: Simon Horman <horms@xxxxxxxxxxxx>
Subject: Re: [Xen-devel] Machine hangs when doing pass-through of all the USB devices on a Lenovo T400 - With xen-unstable
From: Tom Rotenberg <tom.rotenberg@xxxxxxxxx>
Date: Mon, 27 Jul 2009 18:07:58 +0300
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 27 Jul 2009 08:09:04 -0700
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=gO8v/0pKJhC0aqiU9mO4Gn2WZURaQ0XOyvdNrp/991w=; b=hxTO+qGE+fX34tHSgqvYO5TyLcbrpdv/Oe89Oj7OulYuRKL6p28NOAcGA49E3h+xUr 7Mo3Q3dLyStTRwVUrCXu2W12SM2JK51+rUt++AQk4/Q+8Mraf6F2bO2JS69fvbGfb+OU WSLHe5JmuPipdZB8Q5b+Z4SCeA5p1VttjFAMo=
Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; b=R73ZUyA7fACBuCa2RiqWkHfRULmurx+S3PZSYP9ka7w/blrDuF6wR2mQ5oCfPmn9Tp 89jSfbiNcbvnWeVyXpLXIDQtvEYcIhwCfjEXbvSp9YfSIWs5IY+++jlM0h+RNebbwW7x 69DaDzdEDk6231CPSFKLW0WZRKGxG/YlQuYjw=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <20090727115858.GA11917@xxxxxxxxxxxx>
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
References: <8686c3cd0907260746y1232c2c2of9634ef1760e37d2@xxxxxxxxxxxxxx> <20090727115858.GA11917@xxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Simon,

It looks like each one of your  patches (when applied separately)
solved the problem. However, it looks like the first patch caused it
to work better (i didn't run real benchmarks tough).
Will u post a fix for this issue?

Tom

On Mon, Jul 27, 2009 at 2:59 PM, Simon Horman<horms@xxxxxxxxxxxx> wrote:
> On Sun, Jul 26, 2009 at 05:46:22PM +0300, Tom Rotenberg wrote:
>> Hi,
>>
>> Just to notify you all, i have tested the same scenario, on the latest
>> xen-unstable, and i got the same result - the machine hangs. It looks
>> like a major bug.
>> Can someone please help me with this?
>
> Hi Tom,
>
> this is a bit of a stab in the dark, but could you try each
> of the following patches _separately_ to see if they make any difference?
>
> 1)
>
> Allow virtual functions to use the legacy interrupt pin of the
> corresponding physical device.  This was already half-implemented, and I
> wonder if this missing piece is causing problems.
>
> Index: ioemu-remote/hw/pass-through.c
> ===================================================================
> --- ioemu-remote.orig/hw/pass-through.c 2009-07-27 21:42:12.000000000 +1000
> +++ ioemu-remote/hw/pass-through.c      2009-07-27 21:47:34.000000000 +1000
> @@ -2617,13 +2617,7 @@ static uint32_t pt_status_reg_init(struc
>  static uint32_t pt_irqpin_reg_init(struct pt_dev *ptdev,
>         struct pt_reg_info_tbl *reg, uint32_t real_offset)
>  {
> -    int reg_field = 0;
> -
> -    /* set Interrupt Pin register to use INTA# if it has */
> -    if (ptdev->dev.config[real_offset])
> -        reg_field = 0x01;
> -
> -    return reg_field;
> +    return ptdev->dev.config[real_offset];
>  }
>
>  /* initialize BAR */
>
> 2) Always use INTA everywhere. This should revert things to
>   they way they were before the multi-function changes.
>
>
> diff --git a/hw/pass-through.c b/hw/pass-through.c
> index f3d033b..cddfe5c 100644
> --- a/hw/pass-through.c
> +++ b/hw/pass-through.c
> @@ -4329,21 +4329,7 @@ int pt_init(PCIBus *e_bus)
>  */
>  static uint8_t pci_read_intx(struct pt_dev *ptdev)
>  {
> -    uint8_t r_val = pci_read_byte(ptdev->pci_dev, PCI_INTERRUPT_PIN);
> -
> -    PT_LOG("intx=%i\n", r_val);
> -    if (r_val < 1 || r_val > 4)
> -    {
> -        PT_LOG("Interrupt pin read from hardware is out of range: "
> -               "value=%i, acceptable range is 1 - 4\n", r_val);
> -        r_val = 0;
> -    }
> -    else
> -    {
> -        r_val -= 1;
> -    }
> -
> -    return r_val;
> +    return 0;
>  }
>
>  /*
>
>

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel