lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Mon, 18 Apr 2016 09:23:16 -0500 From: Thor Thayer <tthayer@...nsource.altera.com> To: Arnd Bergmann <arnd@...db.de>, Doug Thompson <dougthompson@...ssion.com>, Borislav Petkov <bp@...en8.de>, Mauro Carvalho Chehab <mchehab@....samsung.com> CC: Alan Tull <atull@...nsource.altera.com>, Dinh Nguyen <dinguyen@...nsource.altera.com>, <linux-edac@...r.kernel.org>, <linux-kernel@...r.kernel.org> Subject: Re: [PATCH 2/2] EDAC, altera: avoid unused function warnings On 04/16/2016 03:13 PM, Arnd Bergmann wrote: > The recently added Arria10 OCRAM ECC support caused some new > harmless warnings about unused functions when it is disabled: > > drivers/edac/altera_edac.c:1067:20: error: 'altr_edac_a10_ecc_irq' defined but not used [-Werror=unused-function] > drivers/edac/altera_edac.c:658:12: error: 'altr_check_ecc_deps' defined but not used [-Werror=unused-function] > > This rearranges the code slightly to have those two functions inside > of the same #ifdef that hides their callers. It also manages to > avoid a forward declaration of the IRQ handler in the process. > > Signed-off-by: Arnd Bergmann <arnd@...db.de> > Fixes: c7b4be8db8bc ("EDAC, altera: Add Arria10 OCRAM ECC support") > --- > drivers/edac/altera_edac.c | 78 ++++++++++++++++++++++------------------------ > 1 file changed, 37 insertions(+), 41 deletions(-) > > diff --git a/drivers/edac/altera_edac.c b/drivers/edac/altera_edac.c > index cc987b4ce908..5b4d223d6d68 100644 > --- a/drivers/edac/altera_edac.c > +++ b/drivers/edac/altera_edac.c > @@ -649,26 +649,6 @@ static ssize_t altr_edac_device_trig(struct file *file, > return count; > } > > -/* > - * Test for memory's ECC dependencies upon entry because platform specific > - * startup should have initialized the memory and enabled the ECC. > - * Can't turn on ECC here because accessing un-initialized memory will > - * cause CE/UE errors possibly causing an ABORT. > - */ > -static int altr_check_ecc_deps(struct altr_edac_device_dev *device) > -{ > - void __iomem *base = device->base; > - const struct edac_device_prv_data *prv = device->data; > - > - if (readl(base + prv->ecc_en_ofst) & prv->ecc_enable_mask) > - return 0; > - > - edac_printk(KERN_ERR, EDAC_DEVICE, > - "%s: No ECC present or ECC disabled.\n", > - device->edac_dev_name); > - return -ENODEV; > -} > - > static const struct file_operations altr_edac_device_inject_fops = { > .open = simple_open, > .write = altr_edac_device_trig, > @@ -848,6 +828,25 @@ module_platform_driver(altr_edac_device_driver); > /*********************** OCRAM EDAC Device Functions *********************/ > > #ifdef CONFIG_EDAC_ALTERA_OCRAM > +/* > + * Test for memory's ECC dependencies upon entry because platform specific > + * startup should have initialized the memory and enabled the ECC. > + * Can't turn on ECC here because accessing un-initialized memory will > + * cause CE/UE errors possibly causing an ABORT. > + */ > +static int altr_check_ecc_deps(struct altr_edac_device_dev *device) > +{ > + void __iomem *base = device->base; > + const struct edac_device_prv_data *prv = device->data; > + > + if (readl(base + prv->ecc_en_ofst) & prv->ecc_enable_mask) > + return 0; > + > + edac_printk(KERN_ERR, EDAC_DEVICE, > + "%s: No ECC present or ECC disabled.\n", > + device->edac_dev_name); > + return -ENODEV; > +} > > static void *ocram_alloc_mem(size_t size, void **other) > { > @@ -883,6 +882,24 @@ static void ocram_free_mem(void *p, size_t size, void *other) > gen_pool_free((struct gen_pool *)other, (u32)p, size); > } > > +static irqreturn_t altr_edac_a10_ecc_irq(struct altr_edac_device_dev *dci, > + bool sberr) > +{ > + void __iomem *base = dci->base; > + > + if (sberr) { > + writel(ALTR_A10_ECC_SERRPENA, > + base + ALTR_A10_ECC_INTSTAT_OFST); > + edac_device_handle_ce(dci->edac_dev, 0, 0, dci->edac_dev_name); > + } else { > + writel(ALTR_A10_ECC_DERRPENA, > + base + ALTR_A10_ECC_INTSTAT_OFST); > + edac_device_handle_ue(dci->edac_dev, 0, 0, dci->edac_dev_name); > + panic("\nEDAC:ECC_DEVICE[Uncorrectable errors]\n"); > + } > + return IRQ_HANDLED; > +} > + > const struct edac_device_prv_data ocramecc_data = { > .setup = altr_check_ecc_deps, > .ce_clear_mask = (ALTR_OCR_ECC_EN | ALTR_OCR_ECC_SERR), > @@ -899,9 +916,6 @@ const struct edac_device_prv_data ocramecc_data = { > .inject_fops = &altr_edac_device_inject_fops, > }; > > -static irqreturn_t altr_edac_a10_ecc_irq(struct altr_edac_device_dev *dci, > - bool sberr); > - > const struct edac_device_prv_data a10_ocramecc_data = { > .setup = altr_check_ecc_deps, > .ce_clear_mask = ALTR_A10_ECC_SERRPENA, > @@ -1061,24 +1075,6 @@ static ssize_t altr_edac_a10_device_trig(struct file *file, > return count; > } > > -static irqreturn_t altr_edac_a10_ecc_irq(struct altr_edac_device_dev *dci, > - bool sberr) > -{ > - void __iomem *base = dci->base; > - > - if (sberr) { > - writel(ALTR_A10_ECC_SERRPENA, > - base + ALTR_A10_ECC_INTSTAT_OFST); > - edac_device_handle_ce(dci->edac_dev, 0, 0, dci->edac_dev_name); > - } else { > - writel(ALTR_A10_ECC_DERRPENA, > - base + ALTR_A10_ECC_INTSTAT_OFST); > - edac_device_handle_ue(dci->edac_dev, 0, 0, dci->edac_dev_name); > - panic("\nEDAC:ECC_DEVICE[Uncorrectable errors]\n"); > - } > - return IRQ_HANDLED; > -} > - > static irqreturn_t altr_edac_a10_irq_handler(int irq, void *dev_id) > { > irqreturn_t rc = IRQ_NONE; > Acked-by: Thor Thayer <tthayer@...nsource.altera.com>
Powered by blists - more mailing lists