Messages in this thread | | | Subject | Re: virt_to_page/pci_map_page vs. pci_map_single | From | Jes Sorensen <> | Date | 03 Nov 2003 03:10:46 -0500 |
| |
>>>>> "Jamie" == Jamie Wellnitz <Jamie.Wellnitz@emulex.com> writes:
Jamie> page = virt_to_page(buffer); offset = ((unsigned long)buffer & Jamie> ~PAGE_MASK); busaddr = pci_map_page(pci_dev, page, offset, len, Jamie> direction);
Jamie> How is this preferable to:
Jamie> pci_map_single( pci_dev, buffer, len, direction);
Jamie> pci_map_single can't handle highmem pages (because they don't Jamie> have a kernel virtual address) but doesn't virt_to_page suffer Jamie> from the same limitation? Is there some benefit on Jamie> architectures that don't have highmem?
virt_to_page() can handle any page in the standard kernel region including pages that are physically in 64-bit space if the architecture requires it. It doesn't handle vmalloc pages etc. but one shouldn't try and dynamically map vmalloc pages at random. pci_map_page() can handle all memory in the system though as every page that can be mapped has a struct page * entry.
pci_map_page() is the correct API to use, pci_map_single() is deprecated.
Cheers, Jes - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |