|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH 04 of 16] amd iommu: Enable ppr log
>>> On 23.12.11 at 12:29, Wei Wang <wei.wang2@xxxxxxx> wrote:
> # HG changeset patch
> # User Wei Wang <wei.wang2@xxxxxxx>
> # Date 1324569381 -3600
> # Node ID 33f88c76776c318eea74b8fc1ba467389407ad57
> # Parent 07f338ae663242ba9080f1ab84298894783da3e2
> amd iommu: Enable ppr log.
> IOMMUv2 writes peripheral page service request (PPR) records into ppr log
> to report DMA page request from ATS devices to OS.
>
> Signed-off-by: Wei Wang <wei.wang2@xxxxxxx>
>
> diff -r 07f338ae6632 -r 33f88c76776c xen/drivers/passthrough/amd/iommu_init.c
> --- a/xen/drivers/passthrough/amd/iommu_init.c Thu Dec 22 16:56:17
> 2011 +0100
> +++ b/xen/drivers/passthrough/amd/iommu_init.c Thu Dec 22 16:56:21
> 2011 +0100
> @@ -178,6 +178,34 @@ static void register_iommu_event_log_in_
> writel(entry, iommu->mmio_base+IOMMU_EVENT_LOG_BASE_HIGH_OFFSET);
> }
>
> +static void register_iommu_ppr_log_in_mmio_space(struct amd_iommu *iommu)
> +{
> + u64 addr_64, addr_lo, addr_hi;
The latter two should be u32.
> + u32 power_of2_entries;
> + u32 entry;
> +
> + ASSERT ( iommu->ppr_log.buffer );
> +
> + addr_64 = (u64)virt_to_maddr(iommu->ppr_log.buffer);
Pointless cast?
> + addr_lo = addr_64 & DMA_32BIT_MASK;
DMA_32BIT_MASK is clearly not meant to be used here (and if addr_lo
was of type u32, a plain assignment would be all that's needed here).
Jan
> + addr_hi = addr_64 >> 32;
> +
> + entry = 0;
> + iommu_set_addr_lo_to_reg(&entry, addr_lo >> PAGE_SHIFT);
> + writel(entry, iommu->mmio_base + IOMMU_PPR_LOG_BASE_LOW_OFFSET);
> +
> + power_of2_entries = get_order_from_bytes(iommu->ppr_log.alloc_size) +
> + IOMMU_PPR_LOG_POWER_OF2_ENTRIES_PER_PAGE;
> +
> + entry = 0;
> + iommu_set_addr_hi_to_reg(&entry, addr_hi);
> + set_field_in_reg_u32(power_of2_entries, entry,
> + IOMMU_PPR_LOG_LENGTH_MASK,
> + IOMMU_PPR_LOG_LENGTH_SHIFT, &entry);
> + writel(entry, iommu->mmio_base + IOMMU_PPR_LOG_BASE_HIGH_OFFSET);
> +}
> +
> +
> static void set_iommu_translation_control(struct amd_iommu *iommu,
> int enable)
> {
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |