From patchwork Wed Jan 18 01:21:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jerin Jacob X-Patchwork-Id: 19685 Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id AA5E4FA7B; Wed, 18 Jan 2017 02:24:21 +0100 (CET) Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0079.outbound.protection.outlook.com [104.47.33.79]) by dpdk.org (Postfix) with ESMTP id 5A7CBFA5F for ; Wed, 18 Jan 2017 02:24:05 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=/lZW5ITqbLTzWjBZv0VUsoocRcPL/VP8NvM7E5AXnYY=; b=OgFE7Z3i8Z/I2OIpNRLBBPP/xEj/vp734vbP4Bb3Jr89GCOejArADTf84/xOQmxrCgkwfBy0l1NHWquiPahsb5KFU6Q35JLm+BMQ9Ll/rtPvnK4hu/3WwryVlS4V/CBNZv0SnlYk6TfVMiVox09UVt3H6C7ejS+sl690HgLusdI= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerin.Jacob@cavium.com; Received: from jerin.caveonetworks.com (111.93.218.67) by BY1PR0701MB1721.namprd07.prod.outlook.com (10.162.111.140) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12; Wed, 18 Jan 2017 01:24:00 +0000 From: Jerin Jacob To: CC: , , , , , , Huawei Xie , Yuanhan Liu , Jerin Jacob Date: Wed, 18 Jan 2017 06:51:41 +0530 Message-ID: <1484702502-25451-29-git-send-email-jerin.jacob@caviumnetworks.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1484702502-25451-1-git-send-email-jerin.jacob@caviumnetworks.com> References: <1484637244-7548-1-git-send-email-jerin.jacob@caviumnetworks.com> <1484702502-25451-1-git-send-email-jerin.jacob@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MA1PR01CA0115.INDPRD01.PROD.OUTLOOK.COM (10.174.56.159) To BY1PR0701MB1721.namprd07.prod.outlook.com (10.162.111.140) X-MS-Office365-Filtering-Correlation-Id: 04344b03-0619-40b7-1f4d-08d43f40b098 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY1PR0701MB1721; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 3:0g0CMMPheSHMDcH83pokMWCBdQjenKGD1+SrjAhyfY/I2EUkG3ktuW/YJJDrYsfehrtp0omY1tKf71x69zbzr/UqP55nlbv/o+srN1w51qM3VG6Hc21/n+utA9Pc3AfutOE3fBUrbL6i+f0oaEOb+n7Z9eT/YP49Q5AuWtDxmU1d/RpIlX4QQ4vv8v2b4HBVrPWxP/j8SqVUnlqeXIBzkuR10GKDAtIjHibBIulLc9fFq8rJgczsx7lz9Jh+URUckJMTlUzs1VKOeTuKpv31KA==; 25:p49mQE1KOr2C+kQDcMli5WYx9+mnLCQB/StXb2jNtNcUKFOiFbcNQOKbqAI0fd43phwh4QZFiaRg7dB5ld4j6XJIfptos8aPloKdmxilkzsY/ZjY/+WA3n/EfJP8vh9dGxYV93tvDCh69eq7l4rz2LLLE2D55CNGuqSa0QiZyQ3EsHpWfODRJPyyPNzek2eBEM+WSR34PqV0MJG7jrgTIeMhG8bjDOj0yEzns1aFm9ujXU86Mj9DdixHfWprXZdCWk5arZR+KBEUesSdF0wRFeYuqZ3TH2HUVSgqBkQYocvSsgQiEL7sEwejkw3sO+Pm32qW1wv2SDNinGaiF86PuEMJTbjevZaWJZTtl1GbUhc4lTH1GRut/zUhGA+kvTlarOsJuRWdrc1PXR40IHusxnZXtCKe2iy4TRb39DULwQZDq6Ffhl6PaJTIDmeWk6S1ALOmcSdXyf9qcYPVX8dcoA== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 31:MrHG3Lhw0DNhEWmVnNV5EbeVJLKjWYC02ccLxmir83pT8BHAxzy81tX4B6jOfWZcN0pDgJv+RIBwe4+zZIXYYGxQbLbS0iTFzx6Ck1+ZFNGT0Um1zIC+j+NFvNalzmfYu4bQ3ux1RrDc36uJidtLkOGzEytW4r3pMK2MT07g4GMzC5S/SBb8ZxgRHXyPH0exXtWDwCS9YSC3vQp4fjh0y2wJH5NmRXMzvh+Iv0fPEuXkhWUVMs9mFtJtr/PKNfnt9WWLRtYJCnqzaZUorKH0Xw==; 20:xlQIiNJlcSkngGtzz0P7IJ052jSBnXrUCo31TYI8hplcswljdDK8DFef266PoOj0dxyeqUDbWqJLzkCZrJINMb0ccYb1YryqSpdLAQypTLWkW8quru284GBU1SvCyWXM3asQlUTVtjHC+GcX5M9MOojvMyFxkz11kqtWI5+lNPOSPpJsA8ePMKwZSzUDg5x8GhjY3XPcacslrB0gqgzf9ECcYmBIhraElB9JmwcgjdbsewiWwykIn5u2/vznCWs2hNcF7LBkGSJcra+iIbqkTSalqL/zVRIg+hNQlkGeOYVtD4s/C4Fn0pyLsdAKN+JLhfotGZRKm29XWlQmNLigIFrO41F4u/K6TvJ/ugzNXSkwO/FTp1X60o1aLve/dFegi+xDL/DK7Za35nMrT0E2b3d9kXqrDy8DMWmrG51Fn/mU26JJ7YzMgNmXKpv4pnxngUSebFZidltMazQ8Gv+AR4ud6QxkFyf+LEYMIKHmgxihp9zddckT8X6dTkvlAO6ntdrO0dJ+pEXzY58ic6NzPjxecT5PurhsmnMVpObpqyjRDFb5TNMSLcp/cyWAtQ7na3ku6jUj+cytYfC/Yd9anV9zsh+m2NXk1GYgbeSF7RI= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(788757137089)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123560025)(20161123564025)(20161123555025)(20161123562025)(6072148); SRVR:BY1PR0701MB1721; BCL:0; PCL:0; RULEID:; SRVR:BY1PR0701MB1721; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 4:2BQ2Uibcz0RRjJY6fuLXbZrNWnkwxtR5FME5bQyL1+vET0M3neDyiroikYg1craDZoqsPqn+7r0YinIlw/uc+M3EoUuFmve94T4+R4dl9ENLTyx4sWt80UmkNyIfVBir9BrhRNcrWMzNZxNbMlIVxVMplITPzBBe5jY+W2BdWyZrAz3Ona5U+HIWk8crRQ0SD60+AaU2rDV9eT8amw3WVj2ELOun1pQI4tKbJiNOpgEwC2sWFEBO7L/9KTBRG5xM8srRCHMZ/2MkGqTubleoTE95J0IhKXqTCe9ja3qCbeCJKFGX68PHn29wAoZIbzVEy2R9RfZFuZGo8t0EwhlDVhfNRJHiq89NYXz1qTkS6eBbfWhQh/MEjV3CjnjXc1CjidR4DYHYXi+JY6D6F1USLMsjfvLLxS3NrM8iExmR8LyDe8lnsyz7kYazWdk1HuTBZgDMhaUfb4UkhOYABduzoTp6YbbXN7idnIk2NGUow5J0yTKjidYF67WeSSGf7gImwirKUX8EVvm5VyQktKPhyUYfBMN+9HgqsrH4iQyeoOTmeJQE3ArofCJyC8Ggg3I04OWzRBiEr5Sa7PaBOf61ImhLdEXCB4uPfb4QrnFK/7wWKGhnPrUaSxrj2yrLROAnLjhBOS/ZPlXS6A6/OXNizA== X-Forefront-PRVS: 01917B1794 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(7916002)(39450400003)(199003)(189002)(4326007)(6506006)(50986999)(97736004)(47776003)(107886002)(25786008)(189998001)(54906002)(66066001)(92566002)(101416001)(38730400001)(81156014)(81166006)(6486002)(2906002)(42186005)(53936002)(50226002)(8676002)(2351001)(68736007)(305945005)(53416004)(3846002)(50466002)(6666003)(105586002)(33646002)(6116002)(4001430100002)(5660300001)(6512007)(48376002)(69596002)(76176999)(42882006)(5003940100001)(5009440100003)(36756003)(7736002)(110136003)(6916009)(106356001)(2950100002)(7099028); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0701MB1721; H:jerin.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY1PR0701MB1721; 23:X8ONy7iRVOZQ2apqWqs2YGwpr9awoC8qfhURa8x?= eDt7dCWel1eDNwDJMISGUEcFVDrPkMDkZvJJuLnDmLo80SXKRR2+Ia5LBy70S3w70c+Qapkpis+lx0yxXnH1XGNMz65yr9ngMx4KeUUzL0UegZcm5AXLm8OSF8ZdNX817sXkvaxu4W0dZ51+1DbkaFYYrvOtAa6LS9985gEMJiMRcyqk2SlYi0Lka/8KxCj0+/meOnEmqdSlbFrCoaYD0CdQ3Q15PcRZIGMZ9lnSwnrL5B8GPUWN3gTuWSAVtTiQhjBNESdmvdrmyFWRpzIQFhnYv5KkUtEPNyghmL2lf9W3mZzr2qPaavMcDzrNlyetz207E/4dQr/r/Z5CpDwPhk0x68PkQ1o40tJiAQ/hTvTxBh9owLHXwPx1ZgkEETJuhdpzosTLrLa4mFKk8yA8aZXidbusU1t83iqjEareYJNVjeBoRTVgCXcpr4NkytKiJUL0sBH/OnSnIfo9POqUFWPO4K2ijQzTjr9B9mvpDUCrV/PBYjeHGyYjt+TztcMI3Hd2D7gf+ty66ZGPJM33MLTkiiXAFsBSx+TmvIl+pFhEe9EpJX+ho6TkaR9UGSld1GjaxAMOzvsthFx+tmGaQjrxodV3RMewbOKA1MyN/8RMaiQYAlLIHQRt2G1PWN1Deecf4G2E9VQ6Q1OuLfSAiIozSrehY1yrVM/3anqP+zLQO3G+pH7gMRimsF8YZJ34c2rNhwJpkll+hyOPihOGnwLGKtlgfn/ePyVOuauLYypfsaxw0v22inpGwQP0zfQsz6mLn8fYZVdHpKZ4ujT0yj/nwuapHetGEYZae7VcvVNSYk+rn0sDv4/9Uocv/ZmXNUHScpG+KaXZiQqu6WIO1OaIgJ9U1NXQPSodRbyTPCNM4TJkLYXwo9k75U6GfJLEu1gw6D3dzlYY+av7EYEerbnLP8s92vuNEUNV5U5xqJgQEKF6t271htNvtXIyy0F3zDQd5Cui+Lzka1Y50hD3DfGrAc5iGxRb6rxOF89WQgxLxJWLYOe4tZFRMHnr9GEdcMk10FAx1e3Mg1/0KLrqfc5+8wpgdQz68KZnTylAydBQQ2jTRm88KKWKmj5ddVt0uq0RIh0hSOlndkanWcgIlSK9v09seWUPgduM2c8OAAIXGDppcuuSeXkKNh/YC65e+ckSZkNt9bmFDRjEVEESuB8prdkEM+FKPY2ChyuY+QRloig9UD9ugWoNfY2+jcJahCy8lP1AxuexDavncctdvQgIpeiZHK85QsG7WykEYScUH7A== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 6:o+zxQAshooJdxcf2lwpEZStNWS9h/r9YLP18GWlA50Pe/qvt09G2N1dm1JxpTdB62roiq8+vRxQnSa1Z4QuFOtHloFDI16pQE7HYiFokeVWrayDyBakDjJnhENp712xyVgbfARtHPyBQt2O9fKqQVYOD8kmvd6g5JI5MM7NDA4PPS1QOLaHR+ze2NmYytOslFAC0IOd8v5uLRHfeqk/Y48564NMFcfvnZ1fIDJaljJXx8GxD5oelsZLBHZICmEX4jZP7vmhMTuQW9o6A0mQhbF25Gb7PL08dcgkz5FgzPeUBI2A06U1J6CsurY0a2zJVLQy8Ll0tEx3IV3q9VrczeUpVTlz6tYulXDjmNRh04cR2WGIrX/CsSQ33DgDZX/EB0sv17qmLh3ruzWcQS2iqt83YkMbD+tX46mb+5/UxqgA=; 5:e5GsWKDL3KjC6+em2F63qNwr0UAzD3lmFNadiXaqkAoO90psL9uTWdNPhHA6iIk92tHpCR83AogOxtwmjw2EiW+J7uMgLTDq56gc0fYGvwqVItYoq0el4VgQIk/sg+5JZJ8nYAFvALwbdc8bbv9OwieEe7RjmewKxQ2w/ZYG7Zk=; 24:Zw+z0zjYyLkqNXI83z2z9g6UzZvwtDF+3g5924/BWKxUnYXXJwDAuRdTr2Eb9Whms3P1+8hMWKgJPPldRI6R7Q2tNPORFoQm6TAJWV2kHFU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0701MB1721; 7:j0cFJNJpn32ixlP5+TX/XK5TBbmZdLyv/ft6uoghUMZIX/H/PzsHzkpstnSvl7J+OpDYrgVS0ULzUJosTqMuZ+ccSpa5NyPzFm/JPVULDAALwLoCINwf4EyFwcr5NIe4f/H++rr0fJyTZIQErW/WhlQhxhEuXUJJsj78FYyWFXlsRizHy2sp04CPh2R/nryDfkbx+ptKpk99qjQYzF+GVaD/abcBpQMQIQZ/j7im6Xx7soTTAs129R8AtUxO4HBA6r7bnd2Naap+bY29XFUJ2v3Z8jqXD6gXKPRkjso0ol0lKK8RUuIOeCgFwgRrEwhnYw/KuJcvDXvgdeUxvMxvls8art3f65BFcOm+BkMzPbh1IgpEVrMspXkvE8U0hahhxihloe7wP0p1pOMVKRVEwAVtQ8yLrh43idXKjtSFWQxlUqwPhFsJIPelBKeMMvI/MhowQ9IS8vLDPKUWUeEw4Q== X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Jan 2017 01:24:00.6471 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY1PR0701MB1721 Subject: [dpdk-dev] [PATCH v5 28/29] net/virtio: use eal I/O device memory read/write API X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Santosh Shukla Replace the raw I/O device memory read/write access with eal abstraction for I/O device memory read/write access to fix portability issues across different architectures. CC: Huawei Xie CC: Yuanhan Liu Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob Acked-by: Yuanhan Liu --- drivers/net/virtio/virtio_pci.c | 103 +++++++++++++--------------------------- 1 file changed, 34 insertions(+), 69 deletions(-) diff --git a/drivers/net/virtio/virtio_pci.c b/drivers/net/virtio/virtio_pci.c index 8daeb95..ce9a9d3 100644 --- a/drivers/net/virtio/virtio_pci.c +++ b/drivers/net/virtio/virtio_pci.c @@ -37,6 +37,8 @@ #include #endif +#include + #include "virtio_pci.h" #include "virtio_logs.h" #include "virtqueue.h" @@ -334,48 +336,11 @@ const struct virtio_pci_ops legacy_ops = { .notify_queue = legacy_notify_queue, }; - -static inline uint8_t -io_read8(uint8_t *addr) -{ - return *(volatile uint8_t *)addr; -} - -static inline void -io_write8(uint8_t val, uint8_t *addr) -{ - *(volatile uint8_t *)addr = val; -} - -static inline uint16_t -io_read16(uint16_t *addr) -{ - return *(volatile uint16_t *)addr; -} - -static inline void -io_write16(uint16_t val, uint16_t *addr) -{ - *(volatile uint16_t *)addr = val; -} - -static inline uint32_t -io_read32(uint32_t *addr) -{ - return *(volatile uint32_t *)addr; -} - -static inline void -io_write32(uint32_t val, uint32_t *addr) -{ - *(volatile uint32_t *)addr = val; -} - static inline void io_write64_twopart(uint64_t val, uint32_t *lo, uint32_t *hi) { - io_write32(val & ((1ULL << 32) - 1), lo); - io_write32(val >> 32, hi); + rte_write32(val & ((1ULL << 32) - 1), lo); + rte_write32(val >> 32, hi); } static void @@ -387,13 +352,13 @@ modern_read_dev_config(struct virtio_hw *hw, size_t offset, uint8_t old_gen, new_gen; do { - old_gen = io_read8(&hw->common_cfg->config_generation); + old_gen = rte_read8(&hw->common_cfg->config_generation); p = dst; for (i = 0; i < length; i++) - *p++ = io_read8((uint8_t *)hw->dev_cfg + offset + i); + *p++ = rte_read8((uint8_t *)hw->dev_cfg + offset + i); - new_gen = io_read8(&hw->common_cfg->config_generation); + new_gen = rte_read8(&hw->common_cfg->config_generation); } while (old_gen != new_gen); } @@ -405,7 +370,7 @@ modern_write_dev_config(struct virtio_hw *hw, size_t offset, const uint8_t *p = src; for (i = 0; i < length; i++) - io_write8(*p++, (uint8_t *)hw->dev_cfg + offset + i); + rte_write8((*p++), (((uint8_t *)hw->dev_cfg) + offset + i)); } static uint64_t @@ -413,11 +378,11 @@ modern_get_features(struct virtio_hw *hw) { uint32_t features_lo, features_hi; - io_write32(0, &hw->common_cfg->device_feature_select); - features_lo = io_read32(&hw->common_cfg->device_feature); + rte_write32(0, &hw->common_cfg->device_feature_select); + features_lo = rte_read32(&hw->common_cfg->device_feature); - io_write32(1, &hw->common_cfg->device_feature_select); - features_hi = io_read32(&hw->common_cfg->device_feature); + rte_write32(1, &hw->common_cfg->device_feature_select); + features_hi = rte_read32(&hw->common_cfg->device_feature); return ((uint64_t)features_hi << 32) | features_lo; } @@ -425,25 +390,25 @@ modern_get_features(struct virtio_hw *hw) static void modern_set_features(struct virtio_hw *hw, uint64_t features) { - io_write32(0, &hw->common_cfg->guest_feature_select); - io_write32(features & ((1ULL << 32) - 1), - &hw->common_cfg->guest_feature); + rte_write32(0, &hw->common_cfg->guest_feature_select); + rte_write32(features & ((1ULL << 32) - 1), + &hw->common_cfg->guest_feature); - io_write32(1, &hw->common_cfg->guest_feature_select); - io_write32(features >> 32, - &hw->common_cfg->guest_feature); + rte_write32(1, &hw->common_cfg->guest_feature_select); + rte_write32(features >> 32, + &hw->common_cfg->guest_feature); } static uint8_t modern_get_status(struct virtio_hw *hw) { - return io_read8(&hw->common_cfg->device_status); + return rte_read8(&hw->common_cfg->device_status); } static void modern_set_status(struct virtio_hw *hw, uint8_t status) { - io_write8(status, &hw->common_cfg->device_status); + rte_write8(status, &hw->common_cfg->device_status); } static void @@ -456,29 +421,29 @@ modern_reset(struct virtio_hw *hw) static uint8_t modern_get_isr(struct virtio_hw *hw) { - return io_read8(hw->isr); + return rte_read8(hw->isr); } static uint16_t modern_set_config_irq(struct virtio_hw *hw, uint16_t vec) { - io_write16(vec, &hw->common_cfg->msix_config); - return io_read16(&hw->common_cfg->msix_config); + rte_write16(vec, &hw->common_cfg->msix_config); + return rte_read16(&hw->common_cfg->msix_config); } static uint16_t modern_set_queue_irq(struct virtio_hw *hw, struct virtqueue *vq, uint16_t vec) { - io_write16(vq->vq_queue_index, &hw->common_cfg->queue_select); - io_write16(vec, &hw->common_cfg->queue_msix_vector); - return io_read16(&hw->common_cfg->queue_msix_vector); + rte_write16(vq->vq_queue_index, &hw->common_cfg->queue_select); + rte_write16(vec, &hw->common_cfg->queue_msix_vector); + return rte_read16(&hw->common_cfg->queue_msix_vector); } static uint16_t modern_get_queue_num(struct virtio_hw *hw, uint16_t queue_id) { - io_write16(queue_id, &hw->common_cfg->queue_select); - return io_read16(&hw->common_cfg->queue_size); + rte_write16(queue_id, &hw->common_cfg->queue_select); + return rte_read16(&hw->common_cfg->queue_size); } static int @@ -496,7 +461,7 @@ modern_setup_queue(struct virtio_hw *hw, struct virtqueue *vq) ring[vq->vq_nentries]), VIRTIO_PCI_VRING_ALIGN); - io_write16(vq->vq_queue_index, &hw->common_cfg->queue_select); + rte_write16(vq->vq_queue_index, &hw->common_cfg->queue_select); io_write64_twopart(desc_addr, &hw->common_cfg->queue_desc_lo, &hw->common_cfg->queue_desc_hi); @@ -505,11 +470,11 @@ modern_setup_queue(struct virtio_hw *hw, struct virtqueue *vq) io_write64_twopart(used_addr, &hw->common_cfg->queue_used_lo, &hw->common_cfg->queue_used_hi); - notify_off = io_read16(&hw->common_cfg->queue_notify_off); + notify_off = rte_read16(&hw->common_cfg->queue_notify_off); vq->notify_addr = (void *)((uint8_t *)hw->notify_base + notify_off * hw->notify_off_multiplier); - io_write16(1, &hw->common_cfg->queue_enable); + rte_write16(1, &hw->common_cfg->queue_enable); PMD_INIT_LOG(DEBUG, "queue %u addresses:", vq->vq_queue_index); PMD_INIT_LOG(DEBUG, "\t desc_addr: %" PRIx64, desc_addr); @@ -524,7 +489,7 @@ modern_setup_queue(struct virtio_hw *hw, struct virtqueue *vq) static void modern_del_queue(struct virtio_hw *hw, struct virtqueue *vq) { - io_write16(vq->vq_queue_index, &hw->common_cfg->queue_select); + rte_write16(vq->vq_queue_index, &hw->common_cfg->queue_select); io_write64_twopart(0, &hw->common_cfg->queue_desc_lo, &hw->common_cfg->queue_desc_hi); @@ -533,13 +498,13 @@ modern_del_queue(struct virtio_hw *hw, struct virtqueue *vq) io_write64_twopart(0, &hw->common_cfg->queue_used_lo, &hw->common_cfg->queue_used_hi); - io_write16(0, &hw->common_cfg->queue_enable); + rte_write16(0, &hw->common_cfg->queue_enable); } static void modern_notify_queue(struct virtio_hw *hw __rte_unused, struct virtqueue *vq) { - io_write16(1, vq->notify_addr); + rte_write16(1, vq->notify_addr); } const struct virtio_pci_ops modern_ops = {