Re: [dpdk-dev] [PATCH v11 2/2] bus/pci: support MMIO in PCI ioport accessors
From: Wang, Haiyue <hidden>
Date: 2021-03-15 13:11:31
-----Original Message----- From: David Marchand <redacted> Sent: Monday, March 15, 2021 18:20 To: Wang, Haiyue <redacted>; 谢华伟(此时此刻) <redacted> Cc: maxime.coquelin@redhat.com; Yigit, Ferruh <redacted>; dev@dpdk.org; Burakov, Anatoly [off-list ref]; xuemingl@nvidia.com; grive@u256.net Subject: Re: [dpdk-dev] [PATCH v11 2/2] bus/pci: support MMIO in PCI ioport accessors On Thu, Mar 11, 2021 at 7:43 AM Wang, Haiyue [off-list ref] wrote:quoted
Like kernel use macro to do pio and mmio, maybe we can also to do so for making code clean: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/iomap.c #define IO_COND(addr, is_pio, is_mmio) do { \ unsigned long port = (unsigned long __force)addr; \ if (port >= PIO_RESERVED) { \ is_mmio; \ } else if (port > PIO_OFFSET) { \ port &= PIO_MASK; \ is_pio; \ } else \ bad_io_access(port, #is_pio ); \ } while (0) Like: #if defined(RTE_ARCH_X86) #define IO_COND(addr, is_pio, is_mmio) do { \ if ((uint64_t)(uintptr_t)addr >= PIO_MAX) { \ is_mmio; \ } else { \ is_pio; \ } \ } while (0) #else #define IO_COND(addr, is_pio, is_mmio) do { \ is_mmio; \ } while (0) #endifWe should not just copy/paste kernel code.
Got it ;-)
-- David Marchand