From nobody Tue Apr 7 09:05:36 2026 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id C4654311942 for ; Sat, 14 Mar 2026 03:06:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773457595; cv=none; b=RQyg49EF6hr5xglRNbwr1WAZEnjN76BcBZLHFGLPxa5eBBQgdm/nA3uPyRflsPESozq6SgFkuTJ6LdSm4lh2QWmg+r2Prv8eZe79xF1RYTOOBQnQiecn0BKNa7p3FNj8WDV4Bn2EtgSTJpQUOTrVyA+HenoBUCT1MoNcUdl4D+I= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773457595; c=relaxed/simple; bh=AR35kwCEfJo7sEZa1YVF3bya3llxgaU0XwOpvFCQj3E=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=b302wsbVHSOtZwsFLN9IG3vmB9Rn0vFq+5yVK452lFcg2kdBBW0GuRodgMTmqGAPKArDFRfDREcobdutXWWY3HvRguV3Lg4TMAiFQqKSRudDdy20n9DxSajFQmIA32Ffkzk52YGFfb5+R4gih4ixc+ys2S2BmGuQg6rkWT6UeNc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thingy.jp; spf=pass smtp.mailfrom=0x0f.com; dkim=pass (1024-bit key) header.d=thingy.jp header.i=@thingy.jp header.b=Jr8Ro2Hq; arc=none smtp.client-ip=209.85.210.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thingy.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=0x0f.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=thingy.jp header.i=@thingy.jp header.b="Jr8Ro2Hq" Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-829a9d08644so1668408b3a.1 for ; Fri, 13 Mar 2026 20:06:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thingy.jp; s=google; t=1773457593; x=1774062393; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pKbNTW+AGr0VJ4W7ZqAbg3vbau3fq7bpOdvTyaTfwlU=; b=Jr8Ro2Hq/6jsX69G5m+pN46Dgm9zyctRoO7/GW10jxqoDCejehZ+2Mxw86KZ5AFOxp 3usv24Be7AOQy20zqFYVr+K+zIwayscg6FanJsVO4IycEXHZoKPWff3XRb3/nEb1mj2b f8tgA0I9qVoUqpNykKfcwV5/rugqzLazxHLYQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773457593; x=1774062393; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pKbNTW+AGr0VJ4W7ZqAbg3vbau3fq7bpOdvTyaTfwlU=; b=sh5RvnSyEZ3H4O5aLKcgulJK3c+eUmvIECKL5O7awI98IBdkfskzVigQfglPgm9WVd NBW6mHlZYQUX5gcWq235n0t3yXhmEqx65Ni7kGqeLTVU7yJ4ZOo7waXQ7fOaYrAJlsVg 61rSlo15e3SgkOk8i/H+k8Xtyc4n94Tncr2y54X9m91vw0jgMfWLTnaYqoJbPUgERlAg LHHsV1VWVI9hpll+Ajcz4+QA63OJzmuRQ3/oXfXOe64FfUvNnj1MvqeCH+qIsaxcXFz1 uSFBrmAWppzmjT+4gYgi8EzqUsz0CD/n5sOPMh0Zq1aAxxLxHOmHQXwy0AdAKk8wd+dP 4JrQ== X-Forwarded-Encrypted: i=1; AJvYcCUooZ0hXhHZPw22E3kEvEX24VVadGJ1F4tKtE/gF3DRzj4lCYDmfWFBb2g9YOm3adjqYE6fr5sgnBMZa3I=@vger.kernel.org X-Gm-Message-State: AOJu0YwteL6ZO5aW2StSOgqUpPpoEs6tV9xfx0Fyg2cD6tDeXtDD3uWy GllYH+4ecFfnRyPUHOe9LnIKkwmJkctP4Y/X7FUnLBgHl3GviYiCqoHr0twEtN+3Nr4= X-Gm-Gg: ATEYQzxcHe1sL3W62Fxn66VRlIrAbIZuVbqjQwCNLTPgVq5+VM1UO1oQTBlUgtYuQbC E1+t+QOqCGB7YjAMSjfwkKhtj7o1HJF+Pt3TDQ4bclnN4RkR5DhGgfR0SxINxhB1WSrkYgY/oOD idiARlp84DtzCHrzkGnayqHmuq2OEJKDMzUDzVaUjtZfIRN9/LYOV2ReeJhUq2TFUen5BFChsRZ VzUIb04GTFw1cw1HSmlPprnqlZ8/qgMy1CnpMW1sPqpyM2dRz1yR4IRjXVRGobR0n6VBDvafm0c +QcQV9TdGyuSCzyu8CxvlSNNb6AzLMrYnq8lKUnu+RgF1RFJCgPWLMTsORmKIQcv7JEDbOB/QmU V+pUT6nyd7SG9HMJ4hOL1ni5kgjl1thfNbCRPG26HqEW9sdyDV0ojDtuB+SetV1Myhjp5LHO5TP ldaU4s2OR2qY1+hPbtRMEwkBJSv1v2xbjaxUPWya1dXX6fCrWb+W+jz2RLbwcZrG33V8YnlhUpm lqr4hQsxnH4mgOL X-Received: by 2002:a05:6a00:2e99:b0:829:88e7:c88b with SMTP id d2e1a72fcca58-82a196db76dmr5417644b3a.19.1773457593159; Fri, 13 Mar 2026 20:06:33 -0700 (PDT) Received: from kinako.work.home.arpa (p1766150-ipxg00e01sizuokaden.shizuoka.ocn.ne.jp. [153.167.218.150]) by smtp.googlemail.com with ESMTPSA id d2e1a72fcca58-82a13a2f2d6sm8630734b3a.9.2026.03.13.20.06.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 20:06:30 -0700 (PDT) From: Daniel Palmer To: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com Cc: virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, arnd@kernel.org, Daniel Palmer Subject: [PATCH 1/2] virtio-mmio: Replace sizeof x with sizeof(x) Date: Sat, 14 Mar 2026 12:06:10 +0900 Message-ID: <20260314030612.1949420-2-daniel@thingy.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260314030612.1949420-1-daniel@thingy.jp> References: <20260314030612.1949420-1-daniel@thingy.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" checkpatch wants the braces. Signed-off-by: Daniel Palmer --- drivers/virtio/virtio_mmio.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c index 595c2274fbb5..dda915b2ac9f 100644 --- a/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c @@ -152,21 +152,21 @@ static void vm_get(struct virtio_device *vdev, unsign= ed int offset, switch (len) { case 1: b =3D readb(base + offset); - memcpy(buf, &b, sizeof b); + memcpy(buf, &b, sizeof(b)); break; case 2: w =3D cpu_to_le16(readw(base + offset)); - memcpy(buf, &w, sizeof w); + memcpy(buf, &w, sizeof(w)); break; case 4: l =3D cpu_to_le32(readl(base + offset)); - memcpy(buf, &l, sizeof l); + memcpy(buf, &l, sizeof(l)); break; case 8: l =3D cpu_to_le32(readl(base + offset)); - memcpy(buf, &l, sizeof l); - l =3D cpu_to_le32(ioread32(base + offset + sizeof l)); - memcpy(buf + sizeof l, &l, sizeof l); + memcpy(buf, &l, sizeof(l)); + l =3D cpu_to_le32(ioread32(base + offset + sizeof(l))); + memcpy(buf + sizeof(l), &l, sizeof(l)); break; default: BUG(); @@ -194,22 +194,22 @@ static void vm_set(struct virtio_device *vdev, unsign= ed int offset, =20 switch (len) { case 1: - memcpy(&b, buf, sizeof b); + memcpy(&b, buf, sizeof(b)); writeb(b, base + offset); break; case 2: - memcpy(&w, buf, sizeof w); + memcpy(&w, buf, sizeof(w)); writew(le16_to_cpu(w), base + offset); break; case 4: - memcpy(&l, buf, sizeof l); + memcpy(&l, buf, sizeof(l)); writel(le32_to_cpu(l), base + offset); break; case 8: - memcpy(&l, buf, sizeof l); + memcpy(&l, buf, sizeof(l)); writel(le32_to_cpu(l), base + offset); - memcpy(&l, buf + sizeof l, sizeof l); - writel(le32_to_cpu(l), base + offset + sizeof l); + memcpy(&l, buf + sizeof(l), sizeof(l)); + writel(le32_to_cpu(l), base + offset + sizeof(l)); break; default: BUG(); --=20 2.51.0 From nobody Tue Apr 7 09:05:36 2026 Received: from mail-pf1-f170.google.com (mail-pf1-f170.google.com [209.85.210.170]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DCA4530F540 for ; Sat, 14 Mar 2026 03:06:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.170 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773457598; cv=none; b=asx7muaiqcWvBl+tgaVnTC19wBeJpVxD0QsQ/ZVF5Ix0Uy4OROeQD72L9PUrkaSvokV4vCxXTXCHYQaHgcmyQ54XYwUjqe0tIdLsFGPkVp2m1Us1kBkfUB4f0OwXqPu1n3KU6eAnvue0E8XOk0JOCXEdHlpDMOSIItKuJNpRMBA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773457598; c=relaxed/simple; bh=ZCWJCyW6WD5vSFHgmTB0ZOIU1gR4DOLFSnoLv4aien0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SscX5QFjq3cC30GEISZOVaQiMlvmFa/UOjkty2+n9sSxBwORgCXbnhzXSu6jFAdyklP5f774fvLtMz3kGykvm88mnhwuJwntq54NgyAugOahJSN0eU0Rpth0A8W+97RxLUEcLxRHAyfP7wwMtOxBIYIx6hGhwR+j5bkVj107298= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thingy.jp; spf=pass smtp.mailfrom=0x0f.com; dkim=pass (1024-bit key) header.d=thingy.jp header.i=@thingy.jp header.b=BlzlXYWH; arc=none smtp.client-ip=209.85.210.170 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=thingy.jp Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=0x0f.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=thingy.jp header.i=@thingy.jp header.b="BlzlXYWH" Received: by mail-pf1-f170.google.com with SMTP id d2e1a72fcca58-82995242934so1542638b3a.0 for ; Fri, 13 Mar 2026 20:06:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=thingy.jp; s=google; t=1773457596; x=1774062396; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=EUxqj+VyJFyV6/4cZL41qfYeQvqWY65y8qLHAn3DJeo=; b=BlzlXYWHEVvJeZRTJ2ag28fWpQ0iLpt6GDJaYY+8kii3RpiLXPpYTuqrt6MbDRoDD+ 72UZppqHdeMkfMh1ZfMA1of5aHbmH5kheVms7VqLTrypqZEYJczOmffEJN72li67cDYN LAoL4WzZlqrIf12TYFAkqWmrOjHZeAVrEGO10= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773457596; x=1774062396; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=EUxqj+VyJFyV6/4cZL41qfYeQvqWY65y8qLHAn3DJeo=; b=hY5E6tAYyumEvXXCRw86+i5DFKgEjaTxYkVNE1LgDzuKIiA/Q3vuu2s5kmzeMH7o1q RxP/cJIGIkprOoiMm3nJbxI8rb4ehTcLj3ut7V5ZJ12L38LTAdvplyy2Dq9VpdZXQ7mc tMEuQImFtf1gkjElImtMwPM/3Iu4lyAUalb8w+OYQ/gaOJU2b1hy8gvUSYgrVntyL5Ld 0WJreKgLKBv7O2MEZ0C4WBUg0z/wCrl0yPuvHv9BQ3XHgQ1uEN093L2C2SPXrqVATasw e52COr0f7/cdRPxk02W8PS2flCBtkjmb/SMvJVYRuZ7K/gSOYvkK6jruLuIY5FvvXdUC F7aQ== X-Forwarded-Encrypted: i=1; AJvYcCUpRylQ4S6AQCmcpKRESq0hf6ZIlSbda5VFCWv04UCOK1bQYkeMz8ncbVogcCZ2/vAnFMeWOtmdBye0Ydk=@vger.kernel.org X-Gm-Message-State: AOJu0Ywo5714zZlqDYY8OxvdrdYbDmsnCuU5ExZMTvcCe+WestF0jhl1 Z4oXQO2XDJe7pfrZCtoYrCq1zrrOEJNw6UbVsrCIJmZEEeiXJDmzg86d/sVuELNW6sI= X-Gm-Gg: ATEYQzxFdmVAx20gj05NY4yfCJ5tMyfZ3+Fs7yya1aSrdrkU4tsOCSZtLwZcj4b2q66 y8uBHuSH0Ii89ZrbBPTzJ7wduG3nYcO9h8VkDu/OMDs8uGjcyxQ+NM+g2Y7Kq8kLvoclmNaO35F XJdLrNCSVBx41NOdqVgTHf6PYbA4Ggg0E9USBbzOyNo865oEtHcyU6ERi2rKNVFze5DnDRnlk8q JCUNQyiyoYCu5U/CE8/djV8Fg7kKfmTTE7emQie2QW8XxOJD1bXhOAaKoNqt/sks1QBFxivS9iB ahpgymmHtI53mpXaq2+R54BYWDGyiF6q6mAqEKJNoc/N6QrTxc+apQN9byRpDbM2h0LFaQMcvt3 nxC91WzpIaIcrwzL3F1o8mVdyL3JZJUuOuDEio6ryAESlblvYf+WuaLVAjBbUe54ULeHlurTr4e n07KiDSbzj+CMpbyjdVmijvCi5oUNSuRazDuwhTFFUz7VcaTKU0nb9Gs+nrrf5zfQWhroF36kfy kr8h63/hnd6cGqw X-Received: by 2002:a05:6a00:99b:b0:81f:804f:af26 with SMTP id d2e1a72fcca58-82a07285f11mr7610311b3a.19.1773457596235; Fri, 13 Mar 2026 20:06:36 -0700 (PDT) Received: from kinako.work.home.arpa (p1766150-ipxg00e01sizuokaden.shizuoka.ocn.ne.jp. [153.167.218.150]) by smtp.googlemail.com with ESMTPSA id d2e1a72fcca58-82a13a2f2d6sm8630734b3a.9.2026.03.13.20.06.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 Mar 2026 20:06:35 -0700 (PDT) From: Daniel Palmer To: mst@redhat.com, jasowang@redhat.com, xuanzhuo@linux.alibaba.com, eperezma@redhat.com Cc: virtualization@lists.linux.dev, linux-kernel@vger.kernel.org, linux-m68k@lists.linux-m68k.org, arnd@kernel.org, Daniel Palmer Subject: [PATCH 2/2] virtio-mmio: Use raw io accessors to avoid arch issues Date: Sat, 14 Mar 2026 12:06:11 +0900 Message-ID: <20260314030612.1949420-3-daniel@thingy.jp> X-Mailer: git-send-email 2.51.0 In-Reply-To: <20260314030612.1949420-1-daniel@thingy.jp> References: <20260314030612.1949420-1-daniel@thingy.jp> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" virtio-mmio registers are always little endian even on machines where peripheral registers are normally big endian. At least on nommu, non-coldfire, m68k (see: arch/m68k/include/asm/io_no.h) readl() and friends are defined to the raw versions. So the value from the bus is returned as is. Since virtio-mmio is a bit special and will always be little endian even if that is different to the machine's convention use the raw accessors and do the endian swap, where needed, in house. There are some places in the code where the little endian values are actually wanted and we currently swap those back again. If we don't swap them in the first place maybe that saves some unneeded swapping? Signed-off-by: Daniel Palmer --- drivers/virtio/virtio_mmio.c | 120 +++++++++++++++++++---------------- 1 file changed, 64 insertions(+), 56 deletions(-) diff --git a/drivers/virtio/virtio_mmio.c b/drivers/virtio/virtio_mmio.c index dda915b2ac9f..4050533cc976 100644 --- a/drivers/virtio/virtio_mmio.c +++ b/drivers/virtio/virtio_mmio.c @@ -70,7 +70,14 @@ #include #include =20 - +/* + * The virtio registers are always little endian, even on machines + * where everything else is big endian. readl()/write() could use the + * value from the bus as-is or endian swap it from little endian. + * To avoid confusion use the raw accessors and do the swap here. + */ +#define virtio_mmio_readl(addr) le32_to_cpu(__raw_readl(addr)) +#define virtio_mmio_writel(value, addr) __raw_writel(cpu_to_le32(value), a= ddr) =20 /* The alignment to use between consumer and producer parts of vring. * Currently hardcoded to the page size. */ @@ -96,12 +103,12 @@ static u64 vm_get_features(struct virtio_device *vdev) struct virtio_mmio_device *vm_dev =3D to_virtio_mmio_device(vdev); u64 features; =20 - writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); - features =3D readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); + virtio_mmio_writel(1, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); + features =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES= ); features <<=3D 32; =20 - writel(0, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); - features |=3D readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES); + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURES_SEL); + features |=3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_DEVICE_FEATURE= S); =20 return features; } @@ -120,12 +127,12 @@ static int vm_finalize_features(struct virtio_device = *vdev) return -EINVAL; } =20 - writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); - writel((u32)(vdev->features >> 32), + virtio_mmio_writel(1, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); + virtio_mmio_writel((u32)(vdev->features >> 32), vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); =20 - writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); - writel((u32)vdev->features, + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES_SEL); + virtio_mmio_writel((u32)vdev->features, vm_dev->base + VIRTIO_MMIO_DRIVER_FEATURES); =20 return 0; @@ -155,17 +162,17 @@ static void vm_get(struct virtio_device *vdev, unsign= ed int offset, memcpy(buf, &b, sizeof(b)); break; case 2: - w =3D cpu_to_le16(readw(base + offset)); + w =3D __raw_readw(base + offset); memcpy(buf, &w, sizeof(w)); break; case 4: - l =3D cpu_to_le32(readl(base + offset)); + l =3D __raw_readl(base + offset); memcpy(buf, &l, sizeof(l)); break; case 8: - l =3D cpu_to_le32(readl(base + offset)); + l =3D __raw_readl(base + offset); memcpy(buf, &l, sizeof(l)); - l =3D cpu_to_le32(ioread32(base + offset + sizeof(l))); + l =3D __raw_readl(base + offset + sizeof(l)); memcpy(buf + sizeof(l), &l, sizeof(l)); break; default: @@ -199,17 +206,17 @@ static void vm_set(struct virtio_device *vdev, unsign= ed int offset, break; case 2: memcpy(&w, buf, sizeof(w)); - writew(le16_to_cpu(w), base + offset); + __raw_writew(w, base + offset); break; case 4: memcpy(&l, buf, sizeof(l)); - writel(le32_to_cpu(l), base + offset); + __raw_writel(l, base + offset); break; case 8: memcpy(&l, buf, sizeof(l)); - writel(le32_to_cpu(l), base + offset); + __raw_writel(l, base + offset); memcpy(&l, buf + sizeof(l), sizeof(l)); - writel(le32_to_cpu(l), base + offset + sizeof(l)); + __raw_writel(l, base + offset + sizeof(l)); break; default: BUG(); @@ -223,14 +230,14 @@ static u32 vm_generation(struct virtio_device *vdev) if (vm_dev->version =3D=3D 1) return 0; else - return readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION); + return virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_CONFIG_GENERATION); } =20 static u8 vm_get_status(struct virtio_device *vdev) { struct virtio_mmio_device *vm_dev =3D to_virtio_mmio_device(vdev); =20 - return readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff; + return virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_STATUS) & 0xff; } =20 static void vm_set_status(struct virtio_device *vdev, u8 status) @@ -245,7 +252,7 @@ static void vm_set_status(struct virtio_device *vdev, u= 8 status) * that the cache coherent memory writes have completed * before writing to the MMIO region. */ - writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); + virtio_mmio_writel(status, vm_dev->base + VIRTIO_MMIO_STATUS); } =20 static void vm_reset(struct virtio_device *vdev) @@ -253,7 +260,7 @@ static void vm_reset(struct virtio_device *vdev) struct virtio_mmio_device *vm_dev =3D to_virtio_mmio_device(vdev); =20 /* 0 status means a reset. */ - writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_STATUS); } =20 =20 @@ -267,7 +274,7 @@ static bool vm_notify(struct virtqueue *vq) =20 /* We write the queue's selector into the notification register to * signal the other end */ - writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); + virtio_mmio_writel(vq->index, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); return true; } =20 @@ -276,7 +283,7 @@ static bool vm_notify_with_data(struct virtqueue *vq) struct virtio_mmio_device *vm_dev =3D to_virtio_mmio_device(vq->vdev); u32 data =3D vring_notification_data(vq); =20 - writel(data, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); + virtio_mmio_writel(data, vm_dev->base + VIRTIO_MMIO_QUEUE_NOTIFY); =20 return true; } @@ -290,8 +297,8 @@ static irqreturn_t vm_interrupt(int irq, void *opaque) irqreturn_t ret =3D IRQ_NONE; =20 /* Read and acknowledge interrupts */ - status =3D readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); - writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); + status =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_INTERRUPT_STATUS); + virtio_mmio_writel(status, vm_dev->base + VIRTIO_MMIO_INTERRUPT_ACK); =20 if (unlikely(status & VIRTIO_MMIO_INT_CONFIG)) { virtio_config_changed(&vm_dev->vdev); @@ -314,12 +321,12 @@ static void vm_del_vq(struct virtqueue *vq) unsigned int index =3D vq->index; =20 /* Select and deactivate the queue */ - writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); + virtio_mmio_writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); if (vm_dev->version =3D=3D 1) { - writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); } else { - writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); - WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); + WARN_ON(virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); } =20 vring_del_virtqueue(vq); @@ -362,16 +369,17 @@ static struct virtqueue *vm_setup_vq(struct virtio_de= vice *vdev, unsigned int in return NULL; =20 /* Select the queue we're interested in */ - writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); + virtio_mmio_writel(index, vm_dev->base + VIRTIO_MMIO_QUEUE_SEL); =20 /* Queue shouldn't already be set up. */ - if (readl(vm_dev->base + (vm_dev->version =3D=3D 1 ? + if (virtio_mmio_readl(vm_dev->base + (vm_dev->version =3D=3D 1 ? VIRTIO_MMIO_QUEUE_PFN : VIRTIO_MMIO_QUEUE_READY))) { err =3D -ENOENT; goto error_available; } =20 - num =3D readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX); + num =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_QUEUE_NUM_MAX); + if (num =3D=3D 0) { err =3D -ENOENT; goto error_new_virtqueue; @@ -388,7 +396,7 @@ static struct virtqueue *vm_setup_vq(struct virtio_devi= ce *vdev, unsigned int in vq->num_max =3D num; =20 /* Activate the queue */ - writel(virtqueue_get_vring_size(vq), vm_dev->base + VIRTIO_MMIO_QUEUE_NUM= ); + virtio_mmio_writel(virtqueue_get_vring_size(vq), vm_dev->base + VIRTIO_MM= IO_QUEUE_NUM); if (vm_dev->version =3D=3D 1) { u64 q_pfn =3D virtqueue_get_desc_addr(vq) >> PAGE_SHIFT; =20 @@ -405,27 +413,27 @@ static struct virtqueue *vm_setup_vq(struct virtio_de= vice *vdev, unsigned int in goto error_bad_pfn; } =20 - writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN); - writel(q_pfn, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); + virtio_mmio_writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_QUEUE_ALIGN); + virtio_mmio_writel(q_pfn, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); } else { u64 addr; =20 addr =3D virtqueue_get_desc_addr(vq); - writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW); - writel((u32)(addr >> 32), + virtio_mmio_writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_LOW); + virtio_mmio_writel((u32)(addr >> 32), vm_dev->base + VIRTIO_MMIO_QUEUE_DESC_HIGH); =20 addr =3D virtqueue_get_avail_addr(vq); - writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW); - writel((u32)(addr >> 32), + virtio_mmio_writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_LOW= ); + virtio_mmio_writel((u32)(addr >> 32), vm_dev->base + VIRTIO_MMIO_QUEUE_AVAIL_HIGH); =20 addr =3D virtqueue_get_used_addr(vq); - writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW); - writel((u32)(addr >> 32), + virtio_mmio_writel((u32)addr, vm_dev->base + VIRTIO_MMIO_QUEUE_USED_LOW); + virtio_mmio_writel((u32)(addr >> 32), vm_dev->base + VIRTIO_MMIO_QUEUE_USED_HIGH); =20 - writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); + virtio_mmio_writel(1, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); } =20 return vq; @@ -434,10 +442,10 @@ static struct virtqueue *vm_setup_vq(struct virtio_de= vice *vdev, unsigned int in vring_del_virtqueue(vq); error_new_virtqueue: if (vm_dev->version =3D=3D 1) { - writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_PFN); } else { - writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); - WARN_ON(readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); + virtio_mmio_writel(0, vm_dev->base + VIRTIO_MMIO_QUEUE_READY); + WARN_ON(virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_QUEUE_READY)); } error_available: return ERR_PTR(err); @@ -496,11 +504,11 @@ static bool vm_get_shm_region(struct virtio_device *v= dev, u64 len, addr; =20 /* Select the region we're interested in */ - writel(id, vm_dev->base + VIRTIO_MMIO_SHM_SEL); + virtio_mmio_writel(id, vm_dev->base + VIRTIO_MMIO_SHM_SEL); =20 /* Read the region size */ - len =3D (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_LOW); - len |=3D (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_HIGH) << 32; + len =3D (u64) virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_LOW); + len |=3D (u64) virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_SHM_LEN_HIGH)= << 32; =20 region->len =3D len; =20 @@ -511,8 +519,8 @@ static bool vm_get_shm_region(struct virtio_device *vde= v, return false; =20 /* Read the region base address */ - addr =3D (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_LOW); - addr |=3D (u64) readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_HIGH) << 32; + addr =3D (u64) virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_LOW); + addr |=3D (u64) virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_SHM_BASE_HIG= H) << 32; =20 region->addr =3D addr; =20 @@ -548,7 +556,7 @@ static int virtio_mmio_restore(struct device *dev) struct virtio_mmio_device *vm_dev =3D dev_get_drvdata(dev); =20 if (vm_dev->version =3D=3D 1) - writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); + virtio_mmio_writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE= ); =20 return virtio_device_restore(&vm_dev->vdev); } @@ -591,7 +599,7 @@ static int virtio_mmio_probe(struct platform_device *pd= ev) } =20 /* Check magic value */ - magic =3D readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); + magic =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_MAGIC_VALUE); if (magic !=3D ('v' | 'i' << 8 | 'r' << 16 | 't' << 24)) { dev_warn(&pdev->dev, "Wrong magic value 0x%08lx!\n", magic); rc =3D -ENODEV; @@ -599,7 +607,7 @@ static int virtio_mmio_probe(struct platform_device *pd= ev) } =20 /* Check device version */ - vm_dev->version =3D readl(vm_dev->base + VIRTIO_MMIO_VERSION); + vm_dev->version =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_VERSION); if (vm_dev->version < 1 || vm_dev->version > 2) { dev_err(&pdev->dev, "Version %ld not supported!\n", vm_dev->version); @@ -607,7 +615,7 @@ static int virtio_mmio_probe(struct platform_device *pd= ev) goto free_vm_dev; } =20 - vm_dev->vdev.id.device =3D readl(vm_dev->base + VIRTIO_MMIO_DEVICE_ID); + vm_dev->vdev.id.device =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_D= EVICE_ID); if (vm_dev->vdev.id.device =3D=3D 0) { /* * virtio-mmio device with an ID 0 is a (dummy) placeholder @@ -616,10 +624,10 @@ static int virtio_mmio_probe(struct platform_device *= pdev) rc =3D -ENODEV; goto free_vm_dev; } - vm_dev->vdev.id.vendor =3D readl(vm_dev->base + VIRTIO_MMIO_VENDOR_ID); + vm_dev->vdev.id.vendor =3D virtio_mmio_readl(vm_dev->base + VIRTIO_MMIO_V= ENDOR_ID); =20 if (vm_dev->version =3D=3D 1) { - writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE); + virtio_mmio_writel(PAGE_SIZE, vm_dev->base + VIRTIO_MMIO_GUEST_PAGE_SIZE= ); =20 rc =3D dma_set_mask(&pdev->dev, DMA_BIT_MASK(64)); /* --=20 2.51.0