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-ia64-devel

Re: [Xen-ia64-devel][PATCH][VTD] add hypercalls needed for VTD

Applied, thanks.

On Wed, Oct 22, 2008 at 03:12:29PM +0800, Xu, Anthony wrote:
> The new one,
> I applies manually #Cset 18649 -- 18653 in xen-devel tree on #Cset 18637.
> Tested by booting rhel5.1 guest.
> 
> Please pull xen-devel tree and apply this patch.
> I'll send out other patches soon.
> 
> Thanks
> Anthony
> 
> 
> 
> 
> 
> Isaku Yamahata wrote:
> > Hi Anthony.
> > With the following 3 patches applied, xen panics.
> >
> > 0 A hypercall_for_vtd2.patch
> > 1 A ia64-px-xen-setpxinfo-update.patch
> > 2 A add_head_file_for_VTD2.patch
> >
> > dom0->arch.pdev_list doesn't seem to be initialized.
> > diversity_vtd.patch has the corresponding line, but the hunk should
> > be included in add_head_file_for_VTD2.patch. The patch should be
> > complete itself.
> >
> > ip corresponds to the line
> > int pci_add_device(u8 bus, u8 devfn)
> > ...
> >         list_add(&pdev->domain_list, &dom0->arch.pdev_list);
> >
> >
> > Please test patches before sending.
> >
> > thanks,
> >
> > (XEN) *** xen_handle_domain_access: exception table lookup failed,
> > iip=0xf40000000406e340, addr=0x8, spinning... (XEN) $$$$$ PANIC in
> > domain 0 (k6=0xf0000002f65d0000): *** xen_handle_domain_access:
> > exception table lookup failed, iip=0xf40000000406e340, addr=0x8,
> > spinning... (XEN) d 0xf000000004770080 domid 0 (XEN) vcpu
> > 0xf0000002f65d0000 vcpu 0 (XEN) (XEN) CPU 5
> > (XEN) psr : 0000121008226018 ifs : 800000000000050e ip  :
> > [<f40000000406e341>] (XEN) ip is at pci_add_device+0x1b1/0x250
> > (XEN) unat: 0000000000000000 pfs : 000000000000050e rsc :
> > 0000000000000003 (XEN) rnat: 0000000000000000 bsps: 0000000000000000
> > pr  : 000000000000a559 (XEN) ldrs: 0000000000000000 ccv :
> > 0000000000000000 fpsr: 0009804c0270033f (XEN) csd : 0000000000000000
> > ssd : 0000000000000000 (XEN) b0  : f40000000406e2e0 b6  :
> > f400000004099eb0 b7  : f400000004002e30 (XEN) f6  :
> > 000000000000000000000 f7  : 0ffe3d7c0000000000000 (XEN) f8  :
> > 1000bd7c0000000000000 f9  : 10000c000000000000000 (XEN) f10 :
> > 1000a8fd5555554c58000 f11 : 1003e00000000000008fd (XEN) r1  :
> > f4000000043f89f0 r2  : f0000002f65d7dd0 r3  : 000000000000050e (XEN)
> > r8  : f00000000436be30 r9  : 0000000000000000 r10 : 2000000000000000
> > (XEN) r11 : 0000000000000008 r12 : f0000002f65d7dd0 r13 :
> > f0000002f65d0000 (XEN) r14 : f000000004770740 r15 : 0000000000000000
> > r16 : 0000000000000008 (XEN) r17 : f00000000436be38 r18 :
> > f00000000436be50 r19 : f00000000436be70 (XEN) r20 : f00000000436be60
> > r21 : f00000000436be48 r22 : f00000000436be68 (XEN) r23 :
> > 0000000000000002 r24 : 00000000000000e8 r25 : 0000000000000000 (XEN)
> > r26 : 00000000000c0300 r27 : 0000000000000000 r28 : 0000000000000000
> > (XEN) r29 : 0000000080000000 r30 : 0000000000000000 r31 :
> > f00000000436be60 (XEN) (XEN) Call Trace: (XEN)  [<f4000000040fb4c0>]
> > show_stack+0x90/0xb0 (XEN)
> > sp=f0000002f65d7880 bsp=f0000002f65d18d8 (XEN)  [<f4000000040fbf80>]
> > show_registers+0xaa0/0xac0 (XEN)
> > sp=f0000002f65d7a50 bsp=f0000002f65d1898 (XEN)  [<f4000000040c1440>]
> > panic_domain+0x120/0x170 (XEN)
> > sp=f0000002f65d7a50 bsp=f0000002f65d1828 (XEN)  [<f4000000040b2220>]
> > ia64_do_page_fault+0x710/0x720 (XEN)
> > sp=f0000002f65d7b90 bsp=f0000002f65d1788 (XEN)  [<f4000000040f2ca0>]
> > ia64_leave_kernel+0x0/0x300 (XEN)
> > sp=f0000002f65d7bd0 bsp=f0000002f65d1788 (XEN)  [<f40000000406e340>]
> > pci_add_device+0x1b0/0x250 (XEN)
> > sp=f0000002f65d7dd0 bsp=f0000002f65d1718 (XEN)  [<f400000004099f40>]
> > do_physdev_op+0x5b0/0x8e0 (XEN)
> > sp=f0000002f65d7dd0 bsp=f0000002f65d16e8 (XEN)  [<f400000004002e60>]
> > fast_hypercall+0x170/0x310 (XEN)
> > sp=f0000002f65d7e00 bsp=f0000002f65d16e8 (XEN) domain_crash_sync
> > called from xenmisc.c:141 (XEN) Domain 0 (vcpu#0) crashed on cpu#5:
> > (XEN) d 0xf000000004770080 domid 0
> > (XEN) vcpu 0xf0000002f65d0000 vcpu 0
> > (XEN)
> >
> >
> > On Tue, Oct 21, 2008 at 06:36:35PM +0800, Xu, Anthony wrote:
> >> Updated one per your comments
> >>
> >> Thanks,
> >> Anthony
> >>
> >> Isaku Yamahata wrote:
> >>> On Tue, Oct 21, 2008 at 05:05:51PM +0800, Xu, Anthony wrote:
> >>>> Add hypercalls needed for VTD
> >>>>
> >>>> Signed-off-by; Anthony Xu < anthony.xu@xxxxxxxxx >
> >>>
> >>>
> >>>> diff -r 3b1ff707d130 -r 55251ad3e262 xen/arch/ia64/xen/hypercall.c
> >>>> --- a/xen/arch/ia64/xen/hypercall.c   Tue Oct 21 10:41:54 2008
> >>>> +0800 +++ b/xen/arch/ia64/xen/hypercall.c   Tue Oct 21 14:12:29
> >>>>  2008 +0800 @@ -35,6 +35,7 @@ #include
> >>>>  <public/arch-ia64/debug_op.h>  #include <asm/sioemu.h> #include
> >>>> <public/arch-ia64/sioemu.h> +#include <xen/pci.h>
> >>>>
> >>>>  static IA64FAULT
> >>>>  xen_hypercall (struct pt_regs *regs)
> >>>> @@ -313,6 +314,22 @@
> >>>>  iosapic_guest_write(
> >>>>      unsigned long physbase, unsigned int reg, u32 pval);
> >>>>
> >>>> +
> >>>> +/*
> >>>> + * XXX We don't support MSI for PCI passthrough, so just return
> >>>> success + */ +static int physdev_map_pirq(struct physdev_map_pirq
> >>>> *map) +{ +     return 0; +}
> >>>> +
> >>>> +static int physdev_unmap_pirq(struct physdev_unmap_pirq *unmap)
> >>>> +{ +     return 0; +}
> >>>> +
> >>>> +
> >>>> +
> >>>>  long do_physdev_op(int cmd, XEN_GUEST_HANDLE(void) arg)  {
> >>>>      int irq;
> >>>
> >>> -ENOSYS?
> >>> Or is other code confused with -ENOSYS?
> >>>
> >>>
> >>>> diff -r 3b1ff707d130 -r 55251ad3e262 xen/arch/ia64/xen/mm.c
> >>>> --- a/xen/arch/ia64/xen/mm.c  Tue Oct 21 10:41:54 2008 +0800
> >>>> +++ b/xen/arch/ia64/xen/mm.c  Tue Oct 21 14:12:29 2008 +0800 @@
> >>>>          -1456,12 +1456,38 @@ BUG_ON(mfn != pte_pfn(ret_pte));
> >>>> }
> >>>>
> >>>> +    perfc_incr(zap_domain_page_one);
> >>>> +    if(!mfn_valid(mfn))
> >>>> +        return;
> >>>> +
> >>>>      page = mfn_to_page(mfn);
> >>>>      BUG_ON((page->count_info & PGC_count_mask) == 0);
> >>>>
> >>>>      BUG_ON(clear_PGC_allocate && (page_get_owner(page) == NULL));
> >>>>      domain_put_page(d, mpaddr, pte, old_pte, clear_PGC_allocate);
> >>>> -    perfc_incr(zap_domain_page_one);
> >>>> +}
> >>>
> >>> The BUG_ON() above this hunk should be updated too. something like
> >>> -        BUG_ON(page_get_owner(mfn_to_page(mfn)) != d &&
> >>> -               page_get_owner(mfn_to_page(mfn)) != NULL);
> >>> +        BUG_ON(mfn_valid(mfn) &&
> >>> +               page_get_owner(mfn_to_page(mfn)) != d &&
> >>> +               page_get_owner(mfn_to_page(mfn)) != NULL);
> >>>
> >>>
> >>> thanks,
> >
> >
> >> _______________________________________________
> >> Xen-ia64-devel mailing list
> >> Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
> >> http://lists.xensource.com/xen-ia64-devel


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

-- 
yamahata

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