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] [PATCH] pt_msix_init: Error: Can't map physical MSI-X ta

To: Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx>
Subject: Re: [Xen-devel] [PATCH] pt_msix_init: Error: Can't map physical MSI-X table: Invalid argument
From: Bruce Edge <bruce.edge@xxxxxxxxx>
Date: Wed, 21 Oct 2009 08:51:06 -0700
Cc: xen-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Wed, 21 Oct 2009 08:51:34 -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; bh=wXjEz6asawz05uDPkK+I3QJA/HKS0aOFqq9uC5VDvPU=; b=KoDJhISV9z6TzEiSCPoPmcHChei3KM71GKaoetqEfWnQ0BPqP2SDxealxgs4zbW1ah M9uq9xUaNJNlDlXoHjWBW+IaIwdF6ubrZAKqpEzT/xu39gWqzB/39EjrQkprhOD+giCM Ki7n+Sf9tfL3chIj1rJHJhUG68/bCOAnPuifs=
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; b=A8INvy2yfmMI6t8e7qGGx2oGSCKAoC3AwbJLCTYFpk1ZCXWWtUlIzAbMIY8fuDP+1o YqpLt6t+y/YqjJCVclvPDX3cTTzuqF3ishP7LPHpR4VqPICH8VpgY152+oj/hmxvL6o4 hqekEr6dMp0sEuM0LYqRfmGGK5bR5x12EokE4=
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <19166.57468.392592.168580@xxxxxxxxxxxxxxxxxxxxxxxx>
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: <45c43ef50910201712qce79e09lbaa15167f2a4c28f@xxxxxxxxxxxxxx> <19166.57468.392592.168580@xxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
Force msi-x init mmap to a page boundary or mmap fails with.
    pt_msix_init: Error: Can't map physical MSI-X table: Invalid argument

Signed-off-by: Bruce Edge <bruce.edge@xxxxxxxxx>

Patch is demangled, unwrapped, attached and in-line.

-Bruce

--cut--
diff -Naur xen-unstable.hg/tools/ioemu-remote/hw/pass-through.h
xen-unstable.hg.msi-x-patch/tools/ioemu-remote/hw/pass-through.h
--- xen-unstable.hg/tools/ioemu-remote/hw/pass-through.h        2009-10-18
21:27:43.000000000 -0700
+++ xen-unstable.hg.msi-x-patch/tools/ioemu-remote/hw/pass-through.h    
2009-10-21
08:42:00.000000000 -0700
@@ -193,6 +193,7 @@
     int mmio_index;
     void *phys_iomem_base;
     struct msix_entry_info msix_entry[0];
+    uint32_t table_offset_adjust;      /* page align mmap */
 };

 struct pt_pm_info {
diff -Naur xen-unstable.hg/tools/ioemu-remote/hw/pt-msi.c
xen-unstable.hg.msi-x-patch/tools/ioemu-remote/hw/pt-msi.c
--- xen-unstable.hg/tools/ioemu-remote/hw/pt-msi.c      2009-10-18
21:27:43.000000000 -0700
+++ xen-unstable.hg.msi-x-patch/tools/ioemu-remote/hw/pt-msi.c  2009-10-21
08:39:43.000000000 -0700
@@ -542,6 +542,7 @@
     int i, total_entries, table_off, bar_index;
     struct pci_dev *pd = dev->pci_dev;
     int fd;
+    int err;

     id = pci_read_byte(pd, pos + PCI_CAP_LIST_ID);

@@ -584,9 +585,15 @@
         PT_LOG("Error: Can't open /dev/mem: %s\n", strerror(errno));
         goto error_out;
     }
-    dev->msix->phys_iomem_base = mmap(0, total_entries * 16,
+    PT_LOG("table_off = %llx, total_entries = %d\n",table_off,total_entries);
+    dev->msix->table_offset_adjust = table_off & 0x0fff;
+    dev->msix->phys_iomem_base = mmap(0, total_entries * 16 +
dev->msix->table_offset_adjust,
                           PROT_WRITE | PROT_READ, MAP_SHARED | MAP_LOCKED,
-                          fd, dev->msix->table_base + table_off);
+                          fd, dev->msix->table_base + table_off -
dev->msix->table_offset_adjust);
+    dev->msix->phys_iomem_base = (void *)((char *)dev->msix->phys_iomem_base +
+                          dev->msix->table_offset_adjust);
+    err = errno;
+    PT_LOG("errno = %d\n",err);
     if ( dev->msix->phys_iomem_base == MAP_FAILED )
     {
         PT_LOG("Error: Can't map physical MSI-X table: %s\n", strerror(errno));
@@ -612,7 +619,8 @@
     {
         PT_LOG("unmapping physical MSI-X table from %lx\n",
            (unsigned long)dev->msix->phys_iomem_base);
-        munmap(dev->msix->phys_iomem_base, dev->msix->total_entries * 16);
+        munmap(dev->msix->phys_iomem_base, dev->msix->total_entries * 16 +
+           dev->msix->table_offset_adjust);
     }

     free(dev->msix);
--cut--


On Wed, Oct 21, 2009 at 3:20 AM, Ian Jackson <Ian.Jackson@xxxxxxxxxxxxx> wrote:
> Bruce Edge writes ("[Xen-devel] [PATCH] pt_msix_init: Error: Can't map 
> physical MSI-X  table: Invalid argument"):
>> I submitted this patch last week and did'nt see any feedback or indication
>> as to why it would not be accepted.
>> This is a confirmed tested fix that is required for pci passthorugh with
>> msi-x.
>
> This looks like a sensible patch.
>
>> If there is something wrong with the format or the contents please let me
>> know so that I can fix and resubmit.
>
> However, your mail program has mangled it:
>
>> --- ./tools/ioemu-remote/hw/pass-through.h.orig 2009-10-15
>> 10:22:17.000000000 -0700
>
> ^ Here it has linewrapped it.
>
>>    struct msix_entry_info msix_entry[0];
>> +       uint32_t table_offset_adjust;   /* page align mmap */
>>  };
>
> ^ And here the indentation is wrong (perhaps you have literal tabs
> with a tab width of 2 or something).
>
> Can you try to resubmit it please ?  Try including the patch as an
> attachment as well as in the body of the message.
>
> Thanks,
> Ian.
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
>

Attachment: msix-mmap-align.patch
Description: Text Data

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