On 10/19/2012 11:17 AM, Jan Beulich wrote:> While the MSI message format doesn''t need adjustment for AMD
IOMMUs,
> the interrupt remapping tables still need updating. The respective code
> has to be able to determine the IOMMU responsible, which currently
> requires an associated PCI device. The absence of that device in the
> HPET case causes the code to crash, and the code determining the source
> ID to be used for HPETs (parse_ivhd_device_special() afaict) isn''t
even
> looking at whether it''s dealing with an IO-APIC or a HPET (i.e.
ignores
> the "variety" structure member). If I tried to fix that, I would
have
> no way to test that I did things right, so all I can do to fix the
> crash is make the setup fail if the IOMMU did not provide a handler
> (which, considering the above, is the right thing anyway).
>
> Signed-off-by: Jan Beulich<jbeulich@suse.com>
>
> --- a/xen/drivers/passthrough/iommu.c
> +++ b/xen/drivers/passthrough/iommu.c
> @@ -498,7 +498,7 @@ unsigned int iommu_read_apic_from_ire(un
> int __init iommu_setup_hpet_msi(struct msi_desc *msi)
> {
> const struct iommu_ops *ops = iommu_get_ops();
> - return ops->setup_hpet_msi ? ops->setup_hpet_msi(msi) : 0;
> + return ops->setup_hpet_msi ? ops->setup_hpet_msi(msi) : -ENODEV;
> }
>
> void iommu_resume()
>
>
>
Acked, I will work on AMD part for HPET MSI remapping.
Thanks,
Wei