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

Re: [Xen-devel] [PATCH,RFC 5/7] PCI multi-seg: AMD-IOMMU specificadjustm

>>> On 06.09.11 at 13:03, Wei Wang2 <wei.wang2@xxxxxxx> wrote:

> On Monday 05 September 2011 15:16:14 Jan Beulich wrote:
>> I don't really follow: The two cases where I can't spot where to get the
>> segment number from are register_exclusion_range_for_all_devices()
>> and register_exclusion_range_for_device(), both called in the context
>> of struct acpi_ivmd_block_header(), which only gets a struct
>> acpi_ivmd_block_header (not having a segment number afaict).
> 
> OK, now I understand your question. I thought you are question about iommu 
> specification. For these two functions, I think seg = 0 is fine, since amd 
> iommu does not support multiple pci segment other than 0.

So I'll leave the code unchanged then, also because ...

> Also, You could 
> pass  acpi_ivhd_block_header to parse_ivmd_block() in function 
> parse_ivrs_block(), since both ivhd and ivmd entries shares the same ivhd 
> header.

... this I cannot make sense of: parse_ivrs_block() casts its input (of
type struct acpi_ivrs_block_header *) to either struct
acpi_ivhd_block_header * (on which path I'm already using the available
segment number) or struct acpi_ivmd_block_header * (which doesn't
have a segment number, and which has its start_addr member located
at the offset where pci_segment would be in acpi_ivhd_block_header,
so casting to both types in a single function invocation is clearly wrong).

Jan


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

<Prev in Thread] Current Thread [Next in Thread>