On Tue, Mar 03, 2009 at 05:32:42PM +0800, Zhang, Xiantao wrote:
>
> Isaku Yamahata wrote:
> > Could you elaborate on the concrete issue which you're seeing?
> > I guess the issue occurs when passed through pci device
> > is unplugged. But in that case, the region was occupied by
> > the device so that qemu haven't seen io on the area anyway.
>
> For assigning a device to a hvm domain, all mmio regions of the pci device
> should be mapped in p2m table, but a corner case is that accessing some
> pages(for example, vector table in msi-x's bar) in one region maybe need
> route to qemu and emulate the corresponding logic in qemu. In that case, we
> have to remove the mapping for the specified pages in p2m, and let accessing
> these pages intercepted by hyperviosr and forward the io requests to qemu.
> But zap_domain_page_one can't intilziate the mmio p2m entries for hvm domain.
> Clear ? :-)
You mean pt_iomem_map() which calls remove_msix_mapping() in
pass-through.c of qemu-dm? Is there any case other than msi-x?
I couldn't find any other usefull case because the current xen/ia64
doesn't support msi/msi-x.
> > And why GPFN_LOW_MMIO independently of addr? Shouldn't it be aware
> > of io_ranges[]?
>
> For the low mmio ranges (3G-3.5G), we can use the fixed mfn GPFN_LOW_MMIO
> combined with ASSIGN_io to indicate whether the p2m entries are mmio ranges.
> You may refer to io_ranges and it also use the fixed GPFN_LOW_MMIO to
> intialize p2m entries for low mmio range.
Hmm, there are two cases to call xc_domain_mempry_mapping(DPCI_REMOVE_MAPPING).
- Just to remove the entry.
zap_domain_page_one() is wanted.
the one in pt_iomem_map() and remove_msix_mapping() excpet called
by pt_iomem_map()
- mmio on the area should be rounted to qemu-dm
GPFN_LOW_MMIO and ASSIGN_io are wanted.
remove_msix_mapping() which is called by pt_iomem_map().
Is there a way to distinguish them?
thanks,
> Xiantao
>
> >
> > On Tue, Mar 03, 2009 at 03:14:02PM +0800, Zhang, Xiantao wrote:
> >> PATCH: Fix the logic when deassign the mmio ranges for vti-domain.
> >>
> >> When de-assign the mmio range, it should resume its original value
> >> for p2m value, otherwise, it may fail to determin mmio range's type.
> >>
> >> Signed-off-by: Xiantao Zhang <xiantao.zhang@xxxxxxxxx>
> >>
> >> diff -r 67f2e14613ef xen/arch/ia64/xen/mm.c
> >> --- a/xen/arch/ia64/xen/mm.c Tue Feb 10 13:47:02 2009 +0800
> >> +++ b/xen/arch/ia64/xen/mm.c Tue Mar 03 15:04:54 2009 +0800
> >> @@ -1508,8 +1508,14 @@ deassign_domain_mmio_page(struct domain
> >> return -EINVAL; }
> >>
> >> - for (; addr < end; addr += PAGE_SIZE )
> >> - zap_domain_page_one(d, addr, 0, INVALID_MFN);
> >> + for (; addr < end; addr += PAGE_SIZE ) {
> >> + if (is_hvm_domain(d))
> >> + __assign_domain_page(d, addr, GPFN_LOW_MMIO <<
> >> PAGE_SHIFT, +
> >> ASSIGN_writable |
> >> ASSIGN_io); + else + zap_domain_page_one(d, addr, 0,
> >> INVALID_MFN); + } +
> >> return 0;
> >> }
> >>
> >
> >> _______________________________________________
> >> 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
|