From mboxrd@z Thu Jan 1 00:00:00 1970 From: Santosh Shukla Subject: Re: [PATCH] eal: map io resources for non x86 architectures Date: Thu, 17 Dec 2015 15:31:29 +0530 Message-ID: References: <1450269064-23608-1-git-send-email-david.marchand@6wind.com> <20151216124834.GR29571@yliu-dev.sh.intel.com> <20151217093847.GB29571@yliu-dev.sh.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Cc: dev@dpdk.org To: Yuanhan Liu Return-path: Received: from mail-pf0-f174.google.com (mail-pf0-f174.google.com [209.85.192.174]) by dpdk.org (Postfix) with ESMTP id 26525B62 for ; Thu, 17 Dec 2015 11:01:30 +0100 (CET) Received: by mail-pf0-f174.google.com with SMTP id v86so28338582pfa.2 for ; Thu, 17 Dec 2015 02:01:30 -0800 (PST) In-Reply-To: <20151217093847.GB29571@yliu-dev.sh.intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Thu, Dec 17, 2015 at 3:08 PM, Yuanhan Liu wrote: > On Wed, Dec 16, 2015 at 07:21:55PM +0530, Santosh Shukla wrote: >> On Wed, Dec 16, 2015 at 6:18 PM, Yuanhan Liu >> wrote: >> > On Wed, Dec 16, 2015 at 01:31:04PM +0100, David Marchand wrote: >> >> x86 requires a special set of instructions to access ioports, but other >> >> architectures let you remap io resources. >> >> So let eal remap io resources by accepting IORESOURCE_IO flag for >> >> architectures other than x86. >> > >> > One question: this patch could be a replacement of the igbuio_iomap patch >> > from Santosh? If so, I like it: It's more elegant. >> > >> > --yliu >> > >> >> I did tried similar in past but not in parse_sysfs (such that >> mem.resource_addr to accept IO_RESOURCE_IO types) and observed that >> pci_map_resource not able to map address hence segfault at tespmd >> initialization. >> >> i was getting these: >> EAL: pci_map_resource(): cannot mmap(19, 0x7fa5c00000, 0x20, 0x0): >> Invalid argument (0xffffffffffffffff) > > That's because ARM (at least the kernel) doesn't allow an IO map: > > arch/arm/kernel/bios32.c > ------------------------ > 618 int pci_mmap_page_range(struct pci_dev *dev, struct vm_area_struct *vma, > 619 enum pci_mmap_state mmap_state, int write_combine) > 620 { > 621 if (mmap_state == pci_mmap_io) > 622 return -EINVAL; > > And with a quick glimpse of powerpc, I see no such limitation. Hence, > this peice of code may work only on Powerpc platform (and maybe a few > others we don't care). > > So, apparently, this will not work for ARM. > Right and I did shared detailed explanation on why it wont work on this link [1], infact this patch shouldn;t work for mips too. As I mentioned earlier I did tried similar approach and so to get everything working like iomem is currently in dpdk; we need to add something like pci_remap_iospace --> ioremap_page_range() but this api not really pci_mmap_page_range types. user need to write more code on top so to use this api efficiently, also this api looks like meant to use by arch file only in kernel space. > --yliu