[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] Machine hangs when doing pass-through of all the USB devices on a Lenovo T400 - With xen-unstable


  • To: Simon Horman <horms@xxxxxxxxxxxx>
  • 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
  • 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=
  • List-id: Xen developer discussion <xen-devel.lists.xensource.com>

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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.