In my patch, registers inside Vendor Specific Capability Structure
(Capability ID is 09h) are all passthrough, except Next Capability
Pointer Register.
Registers area defined by device are not belonging to Capability
Structure, and they are all passthrough.
Do you mean non standard Capability Structure should be passthrough?
For PCI-X Capability Structure, we have to emulate Function Number
Field, Device Number Field, and Bus Number Field in PCI-X Status
Register at least. The reason is that the value for host and guest
maybe different.
Additionally, I think we have to emulate Maximum Outstanding Split
Transactions Field in PCI-X Command Register too. The reason is that
the real value should be decided by considering all over the system,
and we should also prevent guest software writing value.
Thanks.
--
Yuji Shimada
On Tue, 1 Jul 2008 10:27:02 +0800
"Dong, Eddie" <eddie.dong@xxxxxxxxx> wrote:
> Yuji Shimada wrote:
> > I think it is NOT safe to pass through operations with
> > unknown behaviour. qemu-dm should prevent guest software
>
> This used to be the reason why we only pass through CMD register, but we
> then suffer from that in different devices and I have to admit, without
> passthrough real setting, the device won't function correctly in many
> cases.
>
> Do u have any real data ? Device memory access is fine with IOMMU, irq
> vector is virtualized now.
>
> > setting unsafe value to register. We have to investigate
> > each register and decide to emulate(virtualize) or
> > passthrough.
>
> Investigation is defintely good, eventually we need to know all
> configuration registers, but even with that, there are still device
> specifc registers we have to deal such as Vendor specific capability and
> those registers directly defined by devices (not a standard PCI
> capability). But hidding settings due to the reason we didn't
> investigate yet will simply make things worse, and we already observed
> this with more devices tested such as UHCI mouse etc.
>
>
> >
> > I haven't investigated some capability structures (like
> > PCI-X Capability Structure). I hide them from guest
> > software.
>
> ditto
>
> >
> > Device Specific Registers (exclude capability structures)
> > is passthrough. In non-virtualized environment, OS does
> > not touch device specific registers, but device drivers
> > configure them. In virtualized environment, we have to
> > allow device drivers to configure them.
>
> We need to pass through except the device is doing IRQ vector setting
> which can't be handled in either case, those devices are simply not
> assignable.
>
> Thanks, eddie
>
> _______________________________________________
> Xen-devel mailing list
> Xen-devel@xxxxxxxxxxxxxxxxxxx
> http://lists.xensource.com/xen-devel
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|