From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from fhigh-b3-smtp.messagingengine.com (fhigh-b3-smtp.messagingengine.com [202.12.124.154]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1791028A403; Thu, 10 Apr 2025 13:05:27 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=202.12.124.154 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744290335; cv=none; b=pCyOGtUZQ5v90cGxpgL1mko0OBCnFen4XoNzK3BPtzXVNqktMZLer2t3oBDneauHHQgHDNqUzlmWsmtBbKfen/LuaSyueAdafygyoRj6LhgPPK1FlIdoa0vs5ZVTFVWxgSPyh7Seb6wvUVHF6nb3Wbe705UrRAuEbEvRrBa9ywE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1744290335; c=relaxed/simple; bh=U+NdL3Uok4E5swNFbxk2aaFc+aN6tSLetnL1vOzDlnA=; h=MIME-Version:Date:From:To:Cc:Message-Id:In-Reply-To:References: Subject:Content-Type; b=cKE2yTIvNJgYV77ESDeqTXGYkUUpeTI9CZlFGS1dsxTkHkRC6ARccKc4iPe2vsSfbUPg4/a437UE8tItGS90Aw5Ho+C2wwnX9bYs+er6ztF1IyX/CohEzbLHV3mQWJC4dBvTFJ9ek0dG2IlEc/1Pb6INHDOB651WyD4DsY/aPAA= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de; spf=pass smtp.mailfrom=arndb.de; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b=BnYrBz8R; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b=W1FiHWxX; arc=none smtp.client-ip=202.12.124.154 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=arndb.de Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=arndb.de Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=arndb.de header.i=@arndb.de header.b="BnYrBz8R"; dkim=pass (2048-bit key) header.d=messagingengine.com header.i=@messagingengine.com header.b="W1FiHWxX" Received: from phl-compute-05.internal (phl-compute-05.phl.internal [10.202.2.45]) by mailfhigh.stl.internal (Postfix) with ESMTP id BFD9425401FD; Thu, 10 Apr 2025 09:05:26 -0400 (EDT) Received: from phl-imap-11 ([10.202.2.101]) by phl-compute-05.internal (MEProxy); Thu, 10 Apr 2025 09:05:27 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=arndb.de; h=cc :cc:content-transfer-encoding:content-type:content-type:date :date:from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to; s=fm1; t=1744290326; x=1744376726; bh=NHurAmfHUHUOmL7XUC6RQJpOSSL17rD55W5SHMQI/3w=; b= BnYrBz8ReR4DmRmv+VYz3d/YOWKhwacAf3qbsQf4CXfMGwN4DYiCt1ncf7QcfXfb 3fU4oLLrnCz45QDi25XqGqQavuzVK/MlAXfm55YkNFsnbFXDOxb+svPOHESdlLkV ibJO/H8cYK91YTgoxP5+PyAI+TbARR1iJ11e4/iLWSx+4eRI7rqtsBUo2jaXcxAn hU/MwbgS0WD/4vt5btfeJQiz8QFDK0Tw27K7FEm5DSq9zrshRPKXhqql59tdjkHN NQzI9XDKWxxlFDJkJJzkdDKHkUqQ3m9c2Cb5SzObO+nS906zt2dGKz8dAN4h+8SE 3eWRGInHOcN9aTn35e8qjw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:cc:content-transfer-encoding :content-type:content-type:date:date:feedback-id:feedback-id :from:from:in-reply-to:in-reply-to:message-id:mime-version :references:reply-to:subject:subject:to:to:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm2; t=1744290326; x= 1744376726; bh=NHurAmfHUHUOmL7XUC6RQJpOSSL17rD55W5SHMQI/3w=; b=W 1FiHWxXK5ot29wAE86KsHGqQ2k6rVIV1WUiCo02GW3iC9HMXKaHyL2dSe8xltHSG xB1s33l1dnM0xbqMdr1oVRvs9cEyeHxElVVhRW63lXEYh4iHwlirTYwR6E+W/11E DT2dmcOdd3tlnGj9ngi+rTzEdjBjY71mGKPREBhrfhoGy8ajdlfm23xvHMlOjgtz Ujgr5Ttgyc3jsfxlADB2zQXCDNUaY1ZjbJn/r3c1Ojy7b5H2vx4K0QoEDU6lK/Be 51nX5Yfiu8CLzNvlyojCvpEDtWVbcu1fLGyzHWcqVEnLRPL1rHuQXiXuL80MZ+ay hyL4ovTCl1J2RlVeg9DAw== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeefvddrtddtgddvtdekleelucetufdoteggodetrf dotffvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdggtfgfnhhsuhgsshgtrhhisggv pdfurfetoffkrfgpnffqhgenuceurghilhhouhhtmecufedttdenucesvcftvggtihhpih gvnhhtshculddquddttddmnecujfgurhepofggfffhvfevkfgjfhfutgfgsehtjeertder tddtnecuhfhrohhmpedftehrnhguuceuvghrghhmrghnnhdfuceorghrnhgusegrrhhnug gsrdguvgeqnecuggftrfgrthhtvghrnhephfdthfdvtdefhedukeetgefggffhjeeggeet fefggfevudegudevledvkefhvdeinecuvehluhhsthgvrhfuihiivgeptdenucfrrghrrg hmpehmrghilhhfrhhomheprghrnhgusegrrhhnuggsrdguvgdpnhgspghrtghpthhtohep udefpdhmohguvgepshhmthhpohhuthdprhgtphhtthhopegrnhhtohhnrdhivhgrnhhovh estggrmhgsrhhiughgvghgrhgvhihsrdgtohhmpdhrtghpthhtoheplhhoghgrnhhgsegu vghlthgrthgvvgdrtghomhdprhgtphhtthhopehfuhhjihhtrgdrthhomhhonhhorhhise hgmhgrihhlrdgtohhmpdhrtghpthhtohepmhhighhuvghlrdhojhgvuggrrdhsrghnugho nhhishesghhmrghilhdrtghomhdprhgtphhtthhopegurghkrheskhgvrhhnvghlrdhorh hgpdhrtghpthhtohepughinhhguhihvghnsehkvghrnhgvlhdrohhrghdprhgtphhtthho pehgvggvrhhtsehlihhnuhigqdhmieekkhdrohhrghdprhgtphhtthhopehlihhnuhigqd humheslhhishhtshdrihhnfhhrrgguvggrugdrohhrghdprhgtphhtthhopehrihgthhgr rhgusehnohgurdgrth X-ME-Proxy: Feedback-ID: i56a14606:Fastmail Received: by mailuser.phl.internal (Postfix, from userid 501) id 268022220073; Thu, 10 Apr 2025 09:05:25 -0400 (EDT) X-Mailer: MessagingEngine.com Webmail Interface Precedence: bulk X-Mailing-List: rust-for-linux@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-ThreadId: Tbf81c49526c64944 Date: Thu, 10 Apr 2025 15:05:04 +0200 From: "Arnd Bergmann" To: "Geert Uytterhoeven" Cc: "Miguel Ojeda" , "FUJITA Tomonori" , "Richard Weinberger" , "Anton Ivanov" , "Johannes Berg" , linux-um@lists.infradead.org, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, "Logan Gunthorpe" , "Stephen Bates" , "Danilo Krummrich" , "Dinh Nguyen" Message-Id: <115f0e3d-da77-4059-8468-96741bbe7f81@app.fastmail.com> In-Reply-To: References: <20250409061129.136788-1-fujita.tomonori@gmail.com> Subject: Re: [PATCH v1] um: fix incompatible argument type in iounmap() Content-Type: text/plain Content-Transfer-Encoding: 7bit On Thu, Apr 10, 2025, at 09:30, Geert Uytterhoeven wrote: > On Wed, 9 Apr 2025 at 21:07, Arnd Bergmann wrote: >> On Wed, Apr 9, 2025, at 19:07, Geert Uytterhoeven wrote: >> > On Wed, 9 Apr 2025 at 16:48, Miguel Ojeda > >> In theory we could go through all the old drivers and >> also remove the 'volatile' markers from struct members that >> store __iomem pointers, but there is no practical benefit to >> that. > > Most drivers must have been fixed already, as m68k allmodconfig > does not complain. Still, I guess I should update m68k to match the > others, right? (FTR, that also builds fine) > Right, it's even rarer than I expected. According to my randconfig builds, these re the ones that actually have the extra volatile annotations: drivers/media/pci/bt8xx/bt878.c | 2 +- drivers/media/pci/bt8xx/bt878.h | 2 +- drivers/media/pci/ivtv/ivtv-driver.h | 8 +- drivers/media/pci/ivtv/ivtv-firmware.c | 10 +- drivers/mtd/devices/spear_smi.c | 2 +- drivers/net/ethernet/broadcom/bnxt/bnxt.h | 5 +- drivers/scsi/aacraid/aacraid.h | 5 +- drivers/scsi/aacraid/rx.c | 2 +- drivers/scsi/megaraid/megaraid_sas.h | 2 +- drivers/scsi/megaraid/megaraid_sas_base.c | 2 +- drivers/scsi/mpi3mr/mpi3mr.h | 2 +- drivers/scsi/smartpqi/smartpqi_init.c | 2 +- drivers/video/fbdev/imsttfb.c | 4 +- drivers/video/fbdev/kyro/STG4000InitDevice.c | 4 +- drivers/video/fbdev/kyro/STG4000Interface.h | 26 +- drivers/video/fbdev/kyro/STG4000OverlayDevice.c | 10 +- drivers/video/fbdev/kyro/STG4000Ramdac.c | 6 +- drivers/video/fbdev/kyro/STG4000Reg.h | 376 ++++++++++++------------ drivers/video/fbdev/kyro/STG4000VTG.c | 8 +- drivers/video/fbdev/nvidia/nv_type.h | 38 +-- drivers/video/fbdev/nvidia/nvidia.c | 9 +- drivers/video/fbdev/riva/fbdev.c | 2 +- drivers/video/fbdev/riva/nv_driver.c | 26 +- drivers/video/fbdev/riva/riva_hw.h | 60 ++-- include/asm-generic/io.h | 136 ++++----- include/asm-generic/video.h | 22 +- include/linux/io-64-nonatomic-hi-lo.h | 12 +- include/linux/io-64-nonatomic-lo-hi.h | 12 +- include/linux/io.h | 2 +- lib/check_signature.c | 2 +- lib/iomem_copy.c | 6 +- lib/trace_readwrite.c | 8 +- mm/ioremap.c | 4 +- 33 files changed, 404 insertions(+), 413 deletions(-) diff --git a/drivers/media/pci/bt8xx/bt878.c b/drivers/media/pci/bt8xx/bt878.c index 62a6c4a80bed..dc4885d03838 100644 --- a/drivers/media/pci/bt8xx/bt878.c +++ b/drivers/media/pci/bt8xx/bt878.c @@ -442,7 +442,7 @@ static int bt878_probe(struct pci_dev *dev, const struct pci_device_id *pci_id) bt->irq, lat, bt->bt878_adr); #ifdef __sparc__ - bt->bt878_mem = (unsigned char *) bt->bt878_adr; + bt->bt878_mem = (unsigned char __iomem *) bt->bt878_adr; #else bt->bt878_mem = ioremap(bt->bt878_adr, 0x1000); #endif diff --git a/drivers/media/pci/bt8xx/bt878.h b/drivers/media/pci/bt8xx/bt878.h index 5b1c7f56e553..1f03019af187 100644 --- a/drivers/media/pci/bt8xx/bt878.h +++ b/drivers/media/pci/bt8xx/bt878.h @@ -103,7 +103,7 @@ struct bt878 { unsigned char revision; unsigned int irq; unsigned long bt878_adr; - volatile void __iomem *bt878_mem; /* function 1 */ + void __iomem *bt878_mem; /* function 1 */ volatile u32 finished_block; volatile u32 last_block; diff --git a/drivers/media/pci/ivtv/ivtv-driver.h b/drivers/media/pci/ivtv/ivtv-driver.h index a6ffa99e16bc..24225b4ecbf3 100644 --- a/drivers/media/pci/ivtv/ivtv-driver.h +++ b/drivers/media/pci/ivtv/ivtv-driver.h @@ -210,7 +210,7 @@ struct ivtv_api_cache { }; struct ivtv_mailbox_data { - volatile struct ivtv_mailbox __iomem *mbox; + struct ivtv_mailbox __iomem *mbox; /* Bits 0-2 are for the encoder mailboxes, 0-1 are for the decoder mailboxes. If the bit is set, then the corresponding mailbox is in use by the driver. */ unsigned long busy; @@ -623,9 +623,9 @@ struct ivtv { struct v4l2_subdev *sd_audio; /* controlling audio subdev */ struct v4l2_subdev *sd_muxer; /* controlling audio muxer subdev */ resource_size_t base_addr; /* PCI resource base address */ - volatile void __iomem *enc_mem; /* pointer to mapped encoder memory */ - volatile void __iomem *dec_mem; /* pointer to mapped decoder memory */ - volatile void __iomem *reg_mem; /* pointer to mapped registers */ + void __iomem *enc_mem; /* pointer to mapped encoder memory */ + void __iomem *dec_mem; /* pointer to mapped decoder memory */ + void __iomem *reg_mem; /* pointer to mapped registers */ struct ivtv_options options; /* user options */ struct v4l2_device v4l2_dev; diff --git a/drivers/media/pci/ivtv/ivtv-firmware.c b/drivers/media/pci/ivtv/ivtv-firmware.c index 56b25255faf5..abac1fa5a1ab 100644 --- a/drivers/media/pci/ivtv/ivtv-firmware.c +++ b/drivers/media/pci/ivtv/ivtv-firmware.c @@ -37,7 +37,7 @@ #define IVTV_FW_ENC_SIZE (376836) #define IVTV_FW_DEC_SIZE (256*1024) -static int load_fw_direct(const char *fn, volatile u8 __iomem *mem, struct ivtv *itv, long size) +static int load_fw_direct(const char *fn, u8 __iomem *mem, struct ivtv *itv, long size) { const struct firmware *fw = NULL; int retries = 3; @@ -45,7 +45,7 @@ static int load_fw_direct(const char *fn, volatile u8 __iomem *mem, struct ivtv retry: if (retries && request_firmware(&fw, fn, &itv->pdev->dev) == 0) { int i; - volatile u32 __iomem *dst = (volatile u32 __iomem *)mem; + u32 __iomem *dst = (u32 __iomem *)mem; const u32 *src = (const u32 *)fw->data; if (fw->size != size) { @@ -163,7 +163,7 @@ static int ivtv_firmware_copy(struct ivtv *itv) return 0; } -static volatile struct ivtv_mailbox __iomem *ivtv_search_mailbox(const volatile u8 __iomem *mem, u32 size) +static struct ivtv_mailbox __iomem *ivtv_search_mailbox(const u8 __iomem *mem, u32 size) { int i; @@ -174,7 +174,7 @@ static volatile struct ivtv_mailbox __iomem *ivtv_search_mailbox(const volatile readl(mem + i + 4) == 0x34567812 && readl(mem + i + 8) == 0x56781234 && readl(mem + i + 12) == 0x78123456) { - return (volatile struct ivtv_mailbox __iomem *)(mem + i + 16); + return (struct ivtv_mailbox __iomem *)(mem + i + 16); } } return NULL; @@ -233,7 +233,7 @@ void ivtv_init_mpeg_decoder(struct ivtv *itv) { u32 data[CX2341X_MBOX_MAX_DATA]; long readbytes; - volatile u8 __iomem *mem_offset; + u8 __iomem *mem_offset; data[0] = 0; data[1] = itv->cxhdl.width; /* YUV source width */ diff --git a/drivers/mtd/devices/spear_smi.c b/drivers/mtd/devices/spear_smi.c index f02f96bff450..f6d6795dcdfd 100644 --- a/drivers/mtd/devices/spear_smi.c +++ b/drivers/mtd/devices/spear_smi.c @@ -599,7 +599,7 @@ static int spear_mtd_read(struct mtd_info *mtd, loff_t from, size_t len, * implementation detail and not part of the API. Not mentioning the comment * stating that _memcpy_toio() should be optimized. */ -static void spear_smi_memcpy_toio_b(volatile void __iomem *dest, +static void spear_smi_memcpy_toio_b(void __iomem *dest, const void *src, size_t len) { const unsigned char *from = src; diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt.h b/drivers/net/ethernet/broadcom/bnxt/bnxt.h index 21726cf56586..b9d77bdc4369 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt.h +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt.h @@ -2804,8 +2804,7 @@ static inline u32 bnxt_tx_avail(struct bnxt *bp, return bp->tx_ring_size - (used & bp->tx_ring_mask); } -static inline void bnxt_writeq(struct bnxt *bp, u64 val, - volatile void __iomem *addr) +static inline void bnxt_writeq(struct bnxt *bp, u64 val, void __iomem *addr) { #if BITS_PER_LONG == 32 spin_lock(&bp->db_lock); @@ -2817,7 +2816,7 @@ static inline void bnxt_writeq(struct bnxt *bp, u64 val, } static inline void bnxt_writeq_relaxed(struct bnxt *bp, u64 val, - volatile void __iomem *addr) + void __iomem *addr) { #if BITS_PER_LONG == 32 spin_lock(&bp->db_lock); diff --git a/drivers/scsi/aacraid/aacraid.h b/drivers/scsi/aacraid/aacraid.h index 8c384c25dca1..6385483a4a70 100644 --- a/drivers/scsi/aacraid/aacraid.h +++ b/drivers/scsi/aacraid/aacraid.h @@ -1627,8 +1627,9 @@ struct aac_dev char __iomem *bar1; } src; } regs; - volatile void __iomem *base, *dbg_base_mapped; - volatile struct rx_inbound __iomem *IndexRegs; + void __iomem *base; + void __iomem *dbg_base_mapped; + struct rx_inbound __iomem *IndexRegs; u32 OIMR; /* Mask Register Cache */ /* * AIF thread states diff --git a/drivers/scsi/aacraid/rx.c b/drivers/scsi/aacraid/rx.c index e06ff83b69ce..60abddaa2f87 100644 --- a/drivers/scsi/aacraid/rx.c +++ b/drivers/scsi/aacraid/rx.c @@ -423,7 +423,7 @@ static int aac_rx_deliver_message(struct fib * fib) struct aac_queue *q = &dev->queues->queue[AdapNormCmdQueue]; u32 Index; u64 addr; - volatile void __iomem *device; + void __iomem *device; unsigned long count = 10000000L; /* 50 seconds */ atomic_inc(&q->numpending); diff --git a/drivers/scsi/megaraid/megaraid_sas.h b/drivers/scsi/megaraid/megaraid_sas.h index 8ee2bfe47571..319ed4518d5c 100644 --- a/drivers/scsi/megaraid/megaraid_sas.h +++ b/drivers/scsi/megaraid/megaraid_sas.h @@ -2741,7 +2741,7 @@ int megasas_adp_reset_wait_for_ready(struct megasas_instance *instance, int megasas_irqpoll(struct irq_poll *irqpoll, int budget); void megasas_dump_fusion_io(struct scsi_cmnd *scmd); u32 megasas_readl(struct megasas_instance *instance, - const volatile void __iomem *addr); + const void __iomem *addr); struct megasas_cmd *megasas_get_cmd(struct megasas_instance *instance); void megasas_return_cmd(struct megasas_instance *instance, struct megasas_cmd *cmd); diff --git a/drivers/scsi/megaraid/megaraid_sas_base.c b/drivers/scsi/megaraid/megaraid_sas_base.c index 5e33d411fa3d..de6ff8542b7d 100644 --- a/drivers/scsi/megaraid/megaraid_sas_base.c +++ b/drivers/scsi/megaraid/megaraid_sas_base.c @@ -254,7 +254,7 @@ static inline void megasas_init_ctrl_params(struct megasas_instance *instance); u32 megasas_readl(struct megasas_instance *instance, - const volatile void __iomem *addr) + const void __iomem *addr) { u32 i = 0, ret_val; /* diff --git a/drivers/scsi/mpi3mr/mpi3mr.h b/drivers/scsi/mpi3mr/mpi3mr.h index 9bbc7cb98ca3..bf272dd69d23 100644 --- a/drivers/scsi/mpi3mr/mpi3mr.h +++ b/drivers/scsi/mpi3mr/mpi3mr.h @@ -1185,7 +1185,7 @@ struct mpi3mr_ioc { char name[MPI3MR_NAME_LENGTH]; char driver_name[MPI3MR_NAME_LENGTH]; - volatile struct mpi3_sysif_registers __iomem *sysif_regs; + struct mpi3_sysif_registers __iomem *sysif_regs; resource_size_t sysif_regs_phys; int bars; u64 dma_mask; diff --git a/drivers/scsi/smartpqi/smartpqi_init.c b/drivers/scsi/smartpqi/smartpqi_init.c index 8a26eca4fdc9..02aebbbfc081 100644 --- a/drivers/scsi/smartpqi/smartpqi_init.c +++ b/drivers/scsi/smartpqi/smartpqi_init.c @@ -3933,7 +3933,7 @@ static inline void pqi_configure_legacy_intx(struct pqi_ctrl_info *ctrl_info, bo { u32 intx_mask; struct pqi_device_registers __iomem *pqi_registers; - volatile void __iomem *register_addr; + void __iomem *register_addr; pqi_registers = ctrl_info->pqi_registers; diff --git a/drivers/video/fbdev/imsttfb.c b/drivers/video/fbdev/imsttfb.c index dc4e659e06af..0434367120ba 100644 --- a/drivers/video/fbdev/imsttfb.c +++ b/drivers/video/fbdev/imsttfb.c @@ -402,7 +402,7 @@ static void imsttfb_remove(struct pci_dev *pdev); /* * Register access */ -static inline u32 read_reg_le32(volatile u32 __iomem *base, int regindex) +static inline u32 read_reg_le32(u32 __iomem *base, int regindex) { #ifdef __powerpc__ return in_le32(base + regindex); @@ -411,7 +411,7 @@ static inline u32 read_reg_le32(volatile u32 __iomem *base, int regindex) #endif } -static inline void write_reg_le32(volatile u32 __iomem *base, int regindex, u32 val) +static inline void write_reg_le32(u32 __iomem *base, int regindex, u32 val) { #ifdef __powerpc__ out_le32(base + regindex, val); diff --git a/drivers/video/fbdev/kyro/STG4000InitDevice.c b/drivers/video/fbdev/kyro/STG4000InitDevice.c index 79886a246638..94ebf10668de 100644 --- a/drivers/video/fbdev/kyro/STG4000InitDevice.c +++ b/drivers/video/fbdev/kyro/STG4000InitDevice.c @@ -80,7 +80,7 @@ volatile u32 i,count=0; \ for(i=0;iArchitecture >= NV_ARCH_10) - par->CURSOR = (volatile u32 __iomem *)(info->screen_base + - par->CursorStart); + par->CURSOR = (u32 __iomem *)(info->screen_base + + par->CursorStart); if (info->var.sync & FB_SYNC_HOR_HIGH_ACT) state->misc_output &= ~0x40; @@ -1201,8 +1201,7 @@ static int nvidia_set_fbinfo(struct fb_info *info) return nvidiafb_check_var(&info->var, info); } -static u32 nvidia_get_chipset(struct pci_dev *pci_dev, - volatile u32 __iomem *REGS) +static u32 nvidia_get_chipset(struct pci_dev *pci_dev, u32 __iomem *REGS) { u32 id = (pci_dev->vendor << 16) | pci_dev->device; @@ -1281,7 +1280,7 @@ static int nvidiafb_probe(struct pci_dev *pd, const struct pci_device_id *ent) struct fb_info *info; unsigned short cmd; int ret; - volatile u32 __iomem *REGS; + u32 __iomem *REGS; int Chipset; u32 Architecture; diff --git a/drivers/video/fbdev/riva/fbdev.c b/drivers/video/fbdev/riva/fbdev.c index 1e377b2ec089..f8998fc3ac5f 100644 --- a/drivers/video/fbdev/riva/fbdev.c +++ b/drivers/video/fbdev/riva/fbdev.c @@ -1487,7 +1487,7 @@ static void rivafb_imageblit(struct fb_info *info, struct riva_par *par = info->par; u32 fgx = 0, bgx = 0, width, tmp; u8 *cdat = (u8 *) image->data; - volatile u32 __iomem *d; + u32 __iomem *d; int i, size; if ((info->flags & FBINFO_HWACCEL_DISABLED) || image->depth != 1) { diff --git a/drivers/video/fbdev/riva/nv_driver.c b/drivers/video/fbdev/riva/nv_driver.c index a3d9c66973ad..48e15aef6c13 100644 --- a/drivers/video/fbdev/riva/nv_driver.c +++ b/drivers/video/fbdev/riva/nv_driver.c @@ -51,7 +51,7 @@ static inline unsigned char MISCin(struct riva_par *par) static Bool riva_is_connected(struct riva_par *par, Bool second) { - volatile U032 __iomem *PRAMDAC = par->riva.PRAMDAC0; + U032 __iomem *PRAMDAC = par->riva.PRAMDAC0; U032 reg52C, reg608; Bool present; @@ -315,22 +315,14 @@ void riva_common_setup(struct riva_par *par) { par->riva.EnableIRQ = 0; - par->riva.PRAMDAC0 = - (volatile U032 __iomem *)(par->ctrl_base + 0x00680000); - par->riva.PFB = - (volatile U032 __iomem *)(par->ctrl_base + 0x00100000); - par->riva.PFIFO = - (volatile U032 __iomem *)(par->ctrl_base + 0x00002000); - par->riva.PGRAPH = - (volatile U032 __iomem *)(par->ctrl_base + 0x00400000); - par->riva.PEXTDEV = - (volatile U032 __iomem *)(par->ctrl_base + 0x00101000); - par->riva.PTIMER = - (volatile U032 __iomem *)(par->ctrl_base + 0x00009000); - par->riva.PMC = - (volatile U032 __iomem *)(par->ctrl_base + 0x00000000); - par->riva.FIFO = - (volatile U032 __iomem *)(par->ctrl_base + 0x00800000); + par->riva.PRAMDAC0 = (U032 __iomem *)(par->ctrl_base + 0x00680000); + par->riva.PFB = (U032 __iomem *)(par->ctrl_base + 0x00100000); + par->riva.PFIFO = (U032 __iomem *)(par->ctrl_base + 0x00002000); + par->riva.PGRAPH = (U032 __iomem *)(par->ctrl_base + 0x00400000); + par->riva.PEXTDEV = (U032 __iomem *)(par->ctrl_base + 0x00101000); + par->riva.PTIMER = (U032 __iomem *)(par->ctrl_base + 0x00009000); + par->riva.PMC = (U032 __iomem *)(par->ctrl_base + 0x00000000); + par->riva.FIFO = (U032 __iomem *)(par->ctrl_base + 0x00800000); par->riva.PCIO0 = par->ctrl_base + 0x00601000; par->riva.PDIO0 = par->ctrl_base + 0x00681000; par->riva.PVIO = par->ctrl_base + 0x000C0000; diff --git a/drivers/video/fbdev/riva/riva_hw.h b/drivers/video/fbdev/riva/riva_hw.h index 5e7b35466b00..d9f3f4c7888c 100644 --- a/drivers/video/fbdev/riva/riva_hw.h +++ b/drivers/video/fbdev/riva/riva_hw.h @@ -104,7 +104,7 @@ typedef unsigned int U032; /* * Raster OPeration. Windows style ROP3. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -119,7 +119,7 @@ typedef volatile struct /* * 8X8 Monochrome pattern. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -138,7 +138,7 @@ typedef volatile struct /* * Scissor clip rectangle. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -154,7 +154,7 @@ typedef volatile struct /* * 2D filled rectangle. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -172,7 +172,7 @@ typedef volatile struct /* * 2D screen-screen BLT. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -189,7 +189,7 @@ typedef volatile struct /* * 2D pixel BLT. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -208,7 +208,7 @@ typedef volatile struct /* * Filled rectangle combined with monochrome expand. Useful for glyphs. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -274,7 +274,7 @@ typedef volatile struct /* * 3D textured, Z buffered triangle. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -304,7 +304,7 @@ typedef volatile struct float TextureS; float TextureT; } RivaTexturedTriangle03; -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -342,7 +342,7 @@ typedef volatile struct /* * 2D line. */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -377,7 +377,7 @@ typedef volatile struct /* * 2D/3D surfaces */ -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -389,7 +389,7 @@ typedef volatile struct U032 reserved01[0x0BE]; U032 Offset; } RivaSurface; -typedef volatile struct +typedef struct { U032 reserved00[4]; #ifdef __BIG_ENDIAN @@ -441,24 +441,24 @@ typedef struct _riva_hw_inst /* * Non-FIFO registers. */ - volatile U032 __iomem *PCRTC0; - volatile U032 __iomem *PCRTC; - volatile U032 __iomem *PRAMDAC0; - volatile U032 __iomem *PFB; - volatile U032 __iomem *PFIFO; - volatile U032 __iomem *PGRAPH; - volatile U032 __iomem *PEXTDEV; - volatile U032 __iomem *PTIMER; - volatile U032 __iomem *PMC; - volatile U032 __iomem *PRAMIN; - volatile U032 __iomem *FIFO; - volatile U032 __iomem *CURSOR; - volatile U008 __iomem *PCIO0; - volatile U008 __iomem *PCIO; - volatile U008 __iomem *PVIO; - volatile U008 __iomem *PDIO0; - volatile U008 __iomem *PDIO; - volatile U032 __iomem *PRAMDAC; + U032 __iomem *PCRTC0; + U032 __iomem *PCRTC; + U032 __iomem *PRAMDAC0; + U032 __iomem *PFB; + U032 __iomem *PFIFO; + U032 __iomem *PGRAPH; + U032 __iomem *PEXTDEV; + U032 __iomem *PTIMER; + U032 __iomem *PMC; + U032 __iomem *PRAMIN; + U032 __iomem *FIFO; + U032 __iomem *CURSOR; + U008 __iomem *PCIO0; + U008 __iomem *PCIO; + U008 __iomem *PVIO; + U008 __iomem *PDIO0; + U008 __iomem *PDIO; + U032 __iomem *PRAMDAC; /* * Common chip functions. */ diff --git a/include/asm-generic/io.h b/include/asm-generic/io.h index e22e5ece063f..75ad78a68d43 100644 --- a/include/asm-generic/io.h +++ b/include/asm-generic/io.h @@ -80,24 +80,24 @@ DECLARE_TRACEPOINT(rwmmio_post_write); DECLARE_TRACEPOINT(rwmmio_read); DECLARE_TRACEPOINT(rwmmio_post_read); -void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr, +void log_write_mmio(u64 val, u8 width, void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0); -void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr, +void log_post_write_mmio(u64 val, u8 width, void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0); -void log_read_mmio(u8 width, const volatile void __iomem *addr, +void log_read_mmio(u8 width, const void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0); -void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr, +void log_post_read_mmio(u64 val, u8 width, const void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0); #else -static inline void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr, +static inline void log_write_mmio(u64 val, u8 width, void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) {} -static inline void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr, +static inline void log_post_write_mmio(u64 val, u8 width, void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) {} -static inline void log_read_mmio(u8 width, const volatile void __iomem *addr, +static inline void log_read_mmio(u8 width, const void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) {} -static inline void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr, +static inline void log_post_read_mmio(u64 val, u8 width, const void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) {} #endif /* CONFIG_TRACE_MMIO_ACCESS */ @@ -112,7 +112,7 @@ static inline void log_post_read_mmio(u64 val, u8 width, const volatile void __i #ifndef __raw_readb #define __raw_readb __raw_readb -static inline u8 __raw_readb(const volatile void __iomem *addr) +static inline u8 __raw_readb(const void __iomem *addr) { return *(const volatile u8 __force *)addr; } @@ -120,7 +120,7 @@ static inline u8 __raw_readb(const volatile void __iomem *addr) #ifndef __raw_readw #define __raw_readw __raw_readw -static inline u16 __raw_readw(const volatile void __iomem *addr) +static inline u16 __raw_readw(const void __iomem *addr) { return *(const volatile u16 __force *)addr; } @@ -128,7 +128,7 @@ static inline u16 __raw_readw(const volatile void __iomem *addr) #ifndef __raw_readl #define __raw_readl __raw_readl -static inline u32 __raw_readl(const volatile void __iomem *addr) +static inline u32 __raw_readl(const void __iomem *addr) { return *(const volatile u32 __force *)addr; } @@ -137,7 +137,7 @@ static inline u32 __raw_readl(const volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef __raw_readq #define __raw_readq __raw_readq -static inline u64 __raw_readq(const volatile void __iomem *addr) +static inline u64 __raw_readq(const void __iomem *addr) { return *(const volatile u64 __force *)addr; } @@ -146,7 +146,7 @@ static inline u64 __raw_readq(const volatile void __iomem *addr) #ifndef __raw_writeb #define __raw_writeb __raw_writeb -static inline void __raw_writeb(u8 value, volatile void __iomem *addr) +static inline void __raw_writeb(u8 value, void __iomem *addr) { *(volatile u8 __force *)addr = value; } @@ -154,7 +154,7 @@ static inline void __raw_writeb(u8 value, volatile void __iomem *addr) #ifndef __raw_writew #define __raw_writew __raw_writew -static inline void __raw_writew(u16 value, volatile void __iomem *addr) +static inline void __raw_writew(u16 value, void __iomem *addr) { *(volatile u16 __force *)addr = value; } @@ -162,7 +162,7 @@ static inline void __raw_writew(u16 value, volatile void __iomem *addr) #ifndef __raw_writel #define __raw_writel __raw_writel -static inline void __raw_writel(u32 value, volatile void __iomem *addr) +static inline void __raw_writel(u32 value, void __iomem *addr) { *(volatile u32 __force *)addr = value; } @@ -171,7 +171,7 @@ static inline void __raw_writel(u32 value, volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef __raw_writeq #define __raw_writeq __raw_writeq -static inline void __raw_writeq(u64 value, volatile void __iomem *addr) +static inline void __raw_writeq(u64 value, void __iomem *addr) { *(volatile u64 __force *)addr = value; } @@ -185,7 +185,7 @@ static inline void __raw_writeq(u64 value, volatile void __iomem *addr) #ifndef readb #define readb readb -static inline u8 readb(const volatile void __iomem *addr) +static inline u8 readb(const void __iomem *addr) { u8 val; @@ -200,7 +200,7 @@ static inline u8 readb(const volatile void __iomem *addr) #ifndef readw #define readw readw -static inline u16 readw(const volatile void __iomem *addr) +static inline u16 readw(const void __iomem *addr) { u16 val; @@ -215,7 +215,7 @@ static inline u16 readw(const volatile void __iomem *addr) #ifndef readl #define readl readl -static inline u32 readl(const volatile void __iomem *addr) +static inline u32 readl(const void __iomem *addr) { u32 val; @@ -231,7 +231,7 @@ static inline u32 readl(const volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef readq #define readq readq -static inline u64 readq(const volatile void __iomem *addr) +static inline u64 readq(const void __iomem *addr) { u64 val; @@ -247,7 +247,7 @@ static inline u64 readq(const volatile void __iomem *addr) #ifndef writeb #define writeb writeb -static inline void writeb(u8 value, volatile void __iomem *addr) +static inline void writeb(u8 value, void __iomem *addr) { log_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_); __io_bw(); @@ -259,7 +259,7 @@ static inline void writeb(u8 value, volatile void __iomem *addr) #ifndef writew #define writew writew -static inline void writew(u16 value, volatile void __iomem *addr) +static inline void writew(u16 value, void __iomem *addr) { log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_); __io_bw(); @@ -271,7 +271,7 @@ static inline void writew(u16 value, volatile void __iomem *addr) #ifndef writel #define writel writel -static inline void writel(u32 value, volatile void __iomem *addr) +static inline void writel(u32 value, void __iomem *addr) { log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_); __io_bw(); @@ -284,7 +284,7 @@ static inline void writel(u32 value, volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef writeq #define writeq writeq -static inline void writeq(u64 value, volatile void __iomem *addr) +static inline void writeq(u64 value, void __iomem *addr) { log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); __io_bw(); @@ -302,7 +302,7 @@ static inline void writeq(u64 value, volatile void __iomem *addr) */ #ifndef readb_relaxed #define readb_relaxed readb_relaxed -static inline u8 readb_relaxed(const volatile void __iomem *addr) +static inline u8 readb_relaxed(const void __iomem *addr) { u8 val; @@ -315,7 +315,7 @@ static inline u8 readb_relaxed(const volatile void __iomem *addr) #ifndef readw_relaxed #define readw_relaxed readw_relaxed -static inline u16 readw_relaxed(const volatile void __iomem *addr) +static inline u16 readw_relaxed(const void __iomem *addr) { u16 val; @@ -328,7 +328,7 @@ static inline u16 readw_relaxed(const volatile void __iomem *addr) #ifndef readl_relaxed #define readl_relaxed readl_relaxed -static inline u32 readl_relaxed(const volatile void __iomem *addr) +static inline u32 readl_relaxed(const void __iomem *addr) { u32 val; @@ -341,7 +341,7 @@ static inline u32 readl_relaxed(const volatile void __iomem *addr) #if defined(readq) && !defined(readq_relaxed) #define readq_relaxed readq_relaxed -static inline u64 readq_relaxed(const volatile void __iomem *addr) +static inline u64 readq_relaxed(const void __iomem *addr) { u64 val; @@ -354,7 +354,7 @@ static inline u64 readq_relaxed(const volatile void __iomem *addr) #ifndef writeb_relaxed #define writeb_relaxed writeb_relaxed -static inline void writeb_relaxed(u8 value, volatile void __iomem *addr) +static inline void writeb_relaxed(u8 value, void __iomem *addr) { log_write_mmio(value, 8, addr, _THIS_IP_, _RET_IP_); __raw_writeb(value, addr); @@ -364,7 +364,7 @@ static inline void writeb_relaxed(u8 value, volatile void __iomem *addr) #ifndef writew_relaxed #define writew_relaxed writew_relaxed -static inline void writew_relaxed(u16 value, volatile void __iomem *addr) +static inline void writew_relaxed(u16 value, void __iomem *addr) { log_write_mmio(value, 16, addr, _THIS_IP_, _RET_IP_); __raw_writew((u16 __force)cpu_to_le16(value), addr); @@ -374,7 +374,7 @@ static inline void writew_relaxed(u16 value, volatile void __iomem *addr) #ifndef writel_relaxed #define writel_relaxed writel_relaxed -static inline void writel_relaxed(u32 value, volatile void __iomem *addr) +static inline void writel_relaxed(u32 value, void __iomem *addr) { log_write_mmio(value, 32, addr, _THIS_IP_, _RET_IP_); __raw_writel((u32 __force)__cpu_to_le32(value), addr); @@ -384,7 +384,7 @@ static inline void writel_relaxed(u32 value, volatile void __iomem *addr) #if defined(writeq) && !defined(writeq_relaxed) #define writeq_relaxed writeq_relaxed -static inline void writeq_relaxed(u64 value, volatile void __iomem *addr) +static inline void writeq_relaxed(u64 value, void __iomem *addr) { log_write_mmio(value, 64, addr, _THIS_IP_, _RET_IP_); __raw_writeq((u64 __force)__cpu_to_le64(value), addr); @@ -398,7 +398,7 @@ static inline void writeq_relaxed(u64 value, volatile void __iomem *addr) */ #ifndef readsb #define readsb readsb -static inline void readsb(const volatile void __iomem *addr, void *buffer, +static inline void readsb(const void __iomem *addr, void *buffer, unsigned int count) { if (count) { @@ -414,7 +414,7 @@ static inline void readsb(const volatile void __iomem *addr, void *buffer, #ifndef readsw #define readsw readsw -static inline void readsw(const volatile void __iomem *addr, void *buffer, +static inline void readsw(const void __iomem *addr, void *buffer, unsigned int count) { if (count) { @@ -430,7 +430,7 @@ static inline void readsw(const volatile void __iomem *addr, void *buffer, #ifndef readsl #define readsl readsl -static inline void readsl(const volatile void __iomem *addr, void *buffer, +static inline void readsl(const void __iomem *addr, void *buffer, unsigned int count) { if (count) { @@ -447,7 +447,7 @@ static inline void readsl(const volatile void __iomem *addr, void *buffer, #ifdef CONFIG_64BIT #ifndef readsq #define readsq readsq -static inline void readsq(const volatile void __iomem *addr, void *buffer, +static inline void readsq(const void __iomem *addr, void *buffer, unsigned int count) { if (count) { @@ -464,7 +464,7 @@ static inline void readsq(const volatile void __iomem *addr, void *buffer, #ifndef writesb #define writesb writesb -static inline void writesb(volatile void __iomem *addr, const void *buffer, +static inline void writesb(void __iomem *addr, const void *buffer, unsigned int count) { if (count) { @@ -479,7 +479,7 @@ static inline void writesb(volatile void __iomem *addr, const void *buffer, #ifndef writesw #define writesw writesw -static inline void writesw(volatile void __iomem *addr, const void *buffer, +static inline void writesw(void __iomem *addr, const void *buffer, unsigned int count) { if (count) { @@ -494,7 +494,7 @@ static inline void writesw(volatile void __iomem *addr, const void *buffer, #ifndef writesl #define writesl writesl -static inline void writesl(volatile void __iomem *addr, const void *buffer, +static inline void writesl(void __iomem *addr, const void *buffer, unsigned int count) { if (count) { @@ -510,7 +510,7 @@ static inline void writesl(volatile void __iomem *addr, const void *buffer, #ifdef CONFIG_64BIT #ifndef writesq #define writesq writesq -static inline void writesq(volatile void __iomem *addr, const void *buffer, +static inline void writesq(void __iomem *addr, const void *buffer, unsigned int count) { if (count) { @@ -851,7 +851,7 @@ static inline void outsl_p(unsigned long addr, const void *buffer, #ifndef CONFIG_GENERIC_IOMAP #ifndef ioread8 #define ioread8 ioread8 -static inline u8 ioread8(const volatile void __iomem *addr) +static inline u8 ioread8(const void __iomem *addr) { return readb(addr); } @@ -859,7 +859,7 @@ static inline u8 ioread8(const volatile void __iomem *addr) #ifndef ioread16 #define ioread16 ioread16 -static inline u16 ioread16(const volatile void __iomem *addr) +static inline u16 ioread16(const void __iomem *addr) { return readw(addr); } @@ -867,7 +867,7 @@ static inline u16 ioread16(const volatile void __iomem *addr) #ifndef ioread32 #define ioread32 ioread32 -static inline u32 ioread32(const volatile void __iomem *addr) +static inline u32 ioread32(const void __iomem *addr) { return readl(addr); } @@ -876,7 +876,7 @@ static inline u32 ioread32(const volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef ioread64 #define ioread64 ioread64 -static inline u64 ioread64(const volatile void __iomem *addr) +static inline u64 ioread64(const void __iomem *addr) { return readq(addr); } @@ -885,7 +885,7 @@ static inline u64 ioread64(const volatile void __iomem *addr) #ifndef iowrite8 #define iowrite8 iowrite8 -static inline void iowrite8(u8 value, volatile void __iomem *addr) +static inline void iowrite8(u8 value, void __iomem *addr) { writeb(value, addr); } @@ -893,7 +893,7 @@ static inline void iowrite8(u8 value, volatile void __iomem *addr) #ifndef iowrite16 #define iowrite16 iowrite16 -static inline void iowrite16(u16 value, volatile void __iomem *addr) +static inline void iowrite16(u16 value, void __iomem *addr) { writew(value, addr); } @@ -901,7 +901,7 @@ static inline void iowrite16(u16 value, volatile void __iomem *addr) #ifndef iowrite32 #define iowrite32 iowrite32 -static inline void iowrite32(u32 value, volatile void __iomem *addr) +static inline void iowrite32(u32 value, void __iomem *addr) { writel(value, addr); } @@ -910,7 +910,7 @@ static inline void iowrite32(u32 value, volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef iowrite64 #define iowrite64 iowrite64 -static inline void iowrite64(u64 value, volatile void __iomem *addr) +static inline void iowrite64(u64 value, void __iomem *addr) { writeq(value, addr); } @@ -919,7 +919,7 @@ static inline void iowrite64(u64 value, volatile void __iomem *addr) #ifndef ioread16be #define ioread16be ioread16be -static inline u16 ioread16be(const volatile void __iomem *addr) +static inline u16 ioread16be(const void __iomem *addr) { return swab16(readw(addr)); } @@ -927,7 +927,7 @@ static inline u16 ioread16be(const volatile void __iomem *addr) #ifndef ioread32be #define ioread32be ioread32be -static inline u32 ioread32be(const volatile void __iomem *addr) +static inline u32 ioread32be(const void __iomem *addr) { return swab32(readl(addr)); } @@ -936,7 +936,7 @@ static inline u32 ioread32be(const volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef ioread64be #define ioread64be ioread64be -static inline u64 ioread64be(const volatile void __iomem *addr) +static inline u64 ioread64be(const void __iomem *addr) { return swab64(readq(addr)); } @@ -945,7 +945,7 @@ static inline u64 ioread64be(const volatile void __iomem *addr) #ifndef iowrite16be #define iowrite16be iowrite16be -static inline void iowrite16be(u16 value, void volatile __iomem *addr) +static inline void iowrite16be(u16 value, void __iomem *addr) { writew(swab16(value), addr); } @@ -953,7 +953,7 @@ static inline void iowrite16be(u16 value, void volatile __iomem *addr) #ifndef iowrite32be #define iowrite32be iowrite32be -static inline void iowrite32be(u32 value, volatile void __iomem *addr) +static inline void iowrite32be(u32 value, void __iomem *addr) { writel(swab32(value), addr); } @@ -962,7 +962,7 @@ static inline void iowrite32be(u32 value, volatile void __iomem *addr) #ifdef CONFIG_64BIT #ifndef iowrite64be #define iowrite64be iowrite64be -static inline void iowrite64be(u64 value, volatile void __iomem *addr) +static inline void iowrite64be(u64 value, void __iomem *addr) { writeq(swab64(value), addr); } @@ -971,7 +971,7 @@ static inline void iowrite64be(u64 value, volatile void __iomem *addr) #ifndef ioread8_rep #define ioread8_rep ioread8_rep -static inline void ioread8_rep(const volatile void __iomem *addr, void *buffer, +static inline void ioread8_rep(const void __iomem *addr, void *buffer, unsigned int count) { readsb(addr, buffer, count); @@ -980,7 +980,7 @@ static inline void ioread8_rep(const volatile void __iomem *addr, void *buffer, #ifndef ioread16_rep #define ioread16_rep ioread16_rep -static inline void ioread16_rep(const volatile void __iomem *addr, +static inline void ioread16_rep(const void __iomem *addr, void *buffer, unsigned int count) { readsw(addr, buffer, count); @@ -989,7 +989,7 @@ static inline void ioread16_rep(const volatile void __iomem *addr, #ifndef ioread32_rep #define ioread32_rep ioread32_rep -static inline void ioread32_rep(const volatile void __iomem *addr, +static inline void ioread32_rep(const void __iomem *addr, void *buffer, unsigned int count) { readsl(addr, buffer, count); @@ -999,7 +999,7 @@ static inline void ioread32_rep(const volatile void __iomem *addr, #ifdef CONFIG_64BIT #ifndef ioread64_rep #define ioread64_rep ioread64_rep -static inline void ioread64_rep(const volatile void __iomem *addr, +static inline void ioread64_rep(const void __iomem *addr, void *buffer, unsigned int count) { readsq(addr, buffer, count); @@ -1009,7 +1009,7 @@ static inline void ioread64_rep(const volatile void __iomem *addr, #ifndef iowrite8_rep #define iowrite8_rep iowrite8_rep -static inline void iowrite8_rep(volatile void __iomem *addr, +static inline void iowrite8_rep(void __iomem *addr, const void *buffer, unsigned int count) { @@ -1019,7 +1019,7 @@ static inline void iowrite8_rep(volatile void __iomem *addr, #ifndef iowrite16_rep #define iowrite16_rep iowrite16_rep -static inline void iowrite16_rep(volatile void __iomem *addr, +static inline void iowrite16_rep(void __iomem *addr, const void *buffer, unsigned int count) { @@ -1029,7 +1029,7 @@ static inline void iowrite16_rep(volatile void __iomem *addr, #ifndef iowrite32_rep #define iowrite32_rep iowrite32_rep -static inline void iowrite32_rep(volatile void __iomem *addr, +static inline void iowrite32_rep(void __iomem *addr, const void *buffer, unsigned int count) { @@ -1040,7 +1040,7 @@ static inline void iowrite32_rep(volatile void __iomem *addr, #ifdef CONFIG_64BIT #ifndef iowrite64_rep #define iowrite64_rep iowrite64_rep -static inline void iowrite64_rep(volatile void __iomem *addr, +static inline void iowrite64_rep(void __iomem *addr, const void *buffer, unsigned int count) { @@ -1078,7 +1078,7 @@ static inline void __iomem *ioremap(phys_addr_t offset, size_t size) #ifndef iounmap #define iounmap iounmap -static inline void iounmap(volatile void __iomem *addr) +static inline void iounmap(void __iomem *addr) { } #endif @@ -1088,8 +1088,8 @@ void __iomem *generic_ioremap_prot(phys_addr_t phys_addr, size_t size, void __iomem *ioremap_prot(phys_addr_t phys_addr, size_t size, pgprot_t prot); -void iounmap(volatile void __iomem *addr); -void generic_iounmap(volatile void __iomem *addr); +void iounmap(void __iomem *addr); +void generic_iounmap(void __iomem *addr); #ifndef ioremap void __iomem *ioremap(phys_addr_t addr, size_t size); #endif @@ -1174,7 +1174,7 @@ extern void ioport_unmap(void __iomem *p); * * Set a range of I/O memory to a given value. */ -void memset_io(volatile void __iomem *addr, int val, size_t count); +void memset_io(void __iomem *addr, int val, size_t count); #endif #ifndef memcpy_fromio @@ -1186,7 +1186,7 @@ void memset_io(volatile void __iomem *addr, int val, size_t count); * * Copy a block of data from I/O memory. */ -void memcpy_fromio(void *dst, const volatile void __iomem *src, size_t count); +void memcpy_fromio(void *dst, const void __iomem *src, size_t count); #endif #ifndef memcpy_toio @@ -1198,7 +1198,7 @@ void memcpy_fromio(void *dst, const volatile void __iomem *src, size_t count); * * Copy a block of data to I/O memory. */ -void memcpy_toio(volatile void __iomem *dst, const void *src, size_t count); +void memcpy_toio(void __iomem *dst, const void *src, size_t count); #endif extern int devmem_is_allowed(unsigned long pfn); diff --git a/include/asm-generic/video.h b/include/asm-generic/video.h index b1da2309d943..22c1a945f2a7 100644 --- a/include/asm-generic/video.h +++ b/include/asm-generic/video.h @@ -42,7 +42,7 @@ static inline bool video_is_primary_device(struct device *dev) */ #ifndef fb_readb -static inline u8 fb_readb(const volatile void __iomem *addr) +static inline u8 fb_readb(const void __iomem *addr) { return __raw_readb(addr); } @@ -50,7 +50,7 @@ static inline u8 fb_readb(const volatile void __iomem *addr) #endif #ifndef fb_readw -static inline u16 fb_readw(const volatile void __iomem *addr) +static inline u16 fb_readw(const void __iomem *addr) { return __raw_readw(addr); } @@ -58,7 +58,7 @@ static inline u16 fb_readw(const volatile void __iomem *addr) #endif #ifndef fb_readl -static inline u32 fb_readl(const volatile void __iomem *addr) +static inline u32 fb_readl(const void __iomem *addr) { return __raw_readl(addr); } @@ -67,7 +67,7 @@ static inline u32 fb_readl(const volatile void __iomem *addr) #ifndef fb_readq #if defined(__raw_readq) -static inline u64 fb_readq(const volatile void __iomem *addr) +static inline u64 fb_readq(const void __iomem *addr) { return __raw_readq(addr); } @@ -76,7 +76,7 @@ static inline u64 fb_readq(const volatile void __iomem *addr) #endif #ifndef fb_writeb -static inline void fb_writeb(u8 b, volatile void __iomem *addr) +static inline void fb_writeb(u8 b, void __iomem *addr) { __raw_writeb(b, addr); } @@ -84,7 +84,7 @@ static inline void fb_writeb(u8 b, volatile void __iomem *addr) #endif #ifndef fb_writew -static inline void fb_writew(u16 b, volatile void __iomem *addr) +static inline void fb_writew(u16 b, void __iomem *addr) { __raw_writew(b, addr); } @@ -92,7 +92,7 @@ static inline void fb_writew(u16 b, volatile void __iomem *addr) #endif #ifndef fb_writel -static inline void fb_writel(u32 b, volatile void __iomem *addr) +static inline void fb_writel(u32 b, void __iomem *addr) { __raw_writel(b, addr); } @@ -101,7 +101,7 @@ static inline void fb_writel(u32 b, volatile void __iomem *addr) #ifndef fb_writeq #if defined(__raw_writeq) -static inline void fb_writeq(u64 b, volatile void __iomem *addr) +static inline void fb_writeq(u64 b, void __iomem *addr) { __raw_writeq(b, addr); } @@ -110,7 +110,7 @@ static inline void fb_writeq(u64 b, volatile void __iomem *addr) #endif #ifndef fb_memcpy_fromio -static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, size_t n) +static inline void fb_memcpy_fromio(void *to, const void __iomem *from, size_t n) { memcpy_fromio(to, from, n); } @@ -118,7 +118,7 @@ static inline void fb_memcpy_fromio(void *to, const volatile void __iomem *from, #endif #ifndef fb_memcpy_toio -static inline void fb_memcpy_toio(volatile void __iomem *to, const void *from, size_t n) +static inline void fb_memcpy_toio(void __iomem *to, const void *from, size_t n) { memcpy_toio(to, from, n); } @@ -126,7 +126,7 @@ static inline void fb_memcpy_toio(volatile void __iomem *to, const void *from, s #endif #ifndef fb_memset -static inline void fb_memset_io(volatile void __iomem *addr, int c, size_t n) +static inline void fb_memset_io(void __iomem *addr, int c, size_t n) { memset_io(addr, c, n); } diff --git a/include/linux/io-64-nonatomic-hi-lo.h b/include/linux/io-64-nonatomic-hi-lo.h index d3eade7cf663..111b8063a9d9 100644 --- a/include/linux/io-64-nonatomic-hi-lo.h +++ b/include/linux/io-64-nonatomic-hi-lo.h @@ -5,9 +5,9 @@ #include #include -static inline __u64 hi_lo_readq(const volatile void __iomem *addr) +static inline __u64 hi_lo_readq(const void __iomem *addr) { - const volatile u32 __iomem *p = addr; + const u32 __iomem *p = addr; u32 low, high; high = readl(p + 1); @@ -16,15 +16,15 @@ static inline __u64 hi_lo_readq(const volatile void __iomem *addr) return low + ((u64)high << 32); } -static inline void hi_lo_writeq(__u64 val, volatile void __iomem *addr) +static inline void hi_lo_writeq(__u64 val, void __iomem *addr) { writel(val >> 32, addr + 4); writel(val, addr); } -static inline __u64 hi_lo_readq_relaxed(const volatile void __iomem *addr) +static inline __u64 hi_lo_readq_relaxed(const void __iomem *addr) { - const volatile u32 __iomem *p = addr; + const u32 __iomem *p = addr; u32 low, high; high = readl_relaxed(p + 1); @@ -33,7 +33,7 @@ static inline __u64 hi_lo_readq_relaxed(const volatile void __iomem *addr) return low + ((u64)high << 32); } -static inline void hi_lo_writeq_relaxed(__u64 val, volatile void __iomem *addr) +static inline void hi_lo_writeq_relaxed(__u64 val, void __iomem *addr) { writel_relaxed(val >> 32, addr + 4); writel_relaxed(val, addr); diff --git a/include/linux/io-64-nonatomic-lo-hi.h b/include/linux/io-64-nonatomic-lo-hi.h index 94e676ec3d3f..259615fe39d4 100644 --- a/include/linux/io-64-nonatomic-lo-hi.h +++ b/include/linux/io-64-nonatomic-lo-hi.h @@ -5,9 +5,9 @@ #include #include -static inline __u64 lo_hi_readq(const volatile void __iomem *addr) +static inline __u64 lo_hi_readq(const void __iomem *addr) { - const volatile u32 __iomem *p = addr; + const u32 __iomem *p = addr; u32 low, high; low = readl(p); @@ -16,15 +16,15 @@ static inline __u64 lo_hi_readq(const volatile void __iomem *addr) return low + ((u64)high << 32); } -static inline void lo_hi_writeq(__u64 val, volatile void __iomem *addr) +static inline void lo_hi_writeq(__u64 val, void __iomem *addr) { writel(val, addr); writel(val >> 32, addr + 4); } -static inline __u64 lo_hi_readq_relaxed(const volatile void __iomem *addr) +static inline __u64 lo_hi_readq_relaxed(const void __iomem *addr) { - const volatile u32 __iomem *p = addr; + const u32 __iomem *p = addr; u32 low, high; low = readl_relaxed(p); @@ -33,7 +33,7 @@ static inline __u64 lo_hi_readq_relaxed(const volatile void __iomem *addr) return low + ((u64)high << 32); } -static inline void lo_hi_writeq_relaxed(__u64 val, volatile void __iomem *addr) +static inline void lo_hi_writeq_relaxed(__u64 val, void __iomem *addr) { writel_relaxed(val, addr); writel_relaxed(val >> 32, addr + 4); diff --git a/include/linux/io.h b/include/linux/io.h index 5a430d1f845e..8c0a8e8b6066 100644 --- a/include/linux/io.h +++ b/include/linux/io.h @@ -68,7 +68,7 @@ void __iomem *devm_ioremap_uc(struct device *dev, resource_size_t offset, void __iomem *devm_ioremap_wc(struct device *dev, resource_size_t offset, resource_size_t size); void devm_iounmap(struct device *dev, void __iomem *addr); -int check_signature(const volatile void __iomem *io_addr, +int check_signature(const void __iomem *io_addr, const unsigned char *signature, int length); void devm_ioremap_release(struct device *dev, void *res); diff --git a/lib/check_signature.c b/lib/check_signature.c index 43a7301da7ab..9d8132d433b5 100644 --- a/lib/check_signature.c +++ b/lib/check_signature.c @@ -13,7 +13,7 @@ * Returns 1 on a match. */ -int check_signature(const volatile void __iomem *io_addr, +int check_signature(const void __iomem *io_addr, const unsigned char *signature, int length) { while (length--) { diff --git a/lib/iomem_copy.c b/lib/iomem_copy.c index dec7eaea60e0..614c499f196d 100644 --- a/lib/iomem_copy.c +++ b/lib/iomem_copy.c @@ -18,7 +18,7 @@ * * Set a range of I/O memory to a given value. */ -void memset_io(volatile void __iomem *addr, int val, size_t count) +void memset_io(void __iomem *addr, int val, size_t count) { long qc = (u8)val; @@ -59,7 +59,7 @@ EXPORT_SYMBOL(memset_io); * * Copy a block of data from I/O memory. */ -void memcpy_fromio(void *dst, const volatile void __iomem *src, size_t count) +void memcpy_fromio(void *dst, const void __iomem *src, size_t count) { while (count && !IS_ALIGNED((long)src, sizeof(long))) { *(u8 *)dst = __raw_readb(src); @@ -101,7 +101,7 @@ EXPORT_SYMBOL(memcpy_fromio); * * Copy a block of data to I/O memory. */ -void memcpy_toio(volatile void __iomem *dst, const void *src, size_t count) +void memcpy_toio(void __iomem *dst, const void *src, size_t count) { while (count && !IS_ALIGNED((long)dst, sizeof(long))) { __raw_writeb(*(u8 *)src, dst); diff --git a/lib/trace_readwrite.c b/lib/trace_readwrite.c index a94cd56a1e4c..9c85cdd98a5e 100644 --- a/lib/trace_readwrite.c +++ b/lib/trace_readwrite.c @@ -13,7 +13,7 @@ #include #ifdef CONFIG_TRACE_MMIO_ACCESS -void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr, +void log_write_mmio(u64 val, u8 width, void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) { trace_rwmmio_write(caller_addr, caller_addr0, val, width, addr); @@ -21,7 +21,7 @@ void log_write_mmio(u64 val, u8 width, volatile void __iomem *addr, EXPORT_SYMBOL_GPL(log_write_mmio); EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_write); -void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr, +void log_post_write_mmio(u64 val, u8 width, void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) { trace_rwmmio_post_write(caller_addr, caller_addr0, val, width, addr); @@ -29,7 +29,7 @@ void log_post_write_mmio(u64 val, u8 width, volatile void __iomem *addr, EXPORT_SYMBOL_GPL(log_post_write_mmio); EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_post_write); -void log_read_mmio(u8 width, const volatile void __iomem *addr, +void log_read_mmio(u8 width, const void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) { trace_rwmmio_read(caller_addr, caller_addr0, width, addr); @@ -37,7 +37,7 @@ void log_read_mmio(u8 width, const volatile void __iomem *addr, EXPORT_SYMBOL_GPL(log_read_mmio); EXPORT_TRACEPOINT_SYMBOL_GPL(rwmmio_read); -void log_post_read_mmio(u64 val, u8 width, const volatile void __iomem *addr, +void log_post_read_mmio(u64 val, u8 width, const void __iomem *addr, unsigned long caller_addr, unsigned long caller_addr0) { trace_rwmmio_post_read(caller_addr, caller_addr0, val, width, addr); diff --git a/mm/ioremap.c b/mm/ioremap.c index 5cae72004a16..3f5e00d206ec 100644 --- a/mm/ioremap.c +++ b/mm/ioremap.c @@ -65,7 +65,7 @@ void __iomem *ioremap(phys_addr_t phys_addr, size_t size) EXPORT_SYMBOL(ioremap); #endif -void generic_iounmap(volatile void __iomem *addr) +void generic_iounmap(void __iomem *addr) { void *vaddr = (void *)((unsigned long)addr & PAGE_MASK); @@ -74,7 +74,7 @@ void generic_iounmap(volatile void __iomem *addr) } #ifndef iounmap -void iounmap(volatile void __iomem *addr) +void iounmap(void __iomem *addr) { generic_iounmap(addr); }