[Top] [All Lists]

Re: [PATCH] MIPS: Squash pci_fixup_irqs() compiler warning

To: Kevin Cernekee <>
Subject: Re: [PATCH] MIPS: Squash pci_fixup_irqs() compiler warning
From: David Daney <>
Date: Mon, 18 Apr 2011 10:27:53 -0700
Cc: Ralf Baechle <>, Wu Zhangjin <>,,
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=gamma; h=domainkey-signature:message-id:date:from:user-agent:mime-version:to :cc:subject:references:in-reply-to:content-type :content-transfer-encoding; bh=TQ8QofcuR+uRBP25ysB8KfHxqtdPJcWtSYjxHfVW5+I=; b=hltxnJzTuRxRMPTgj0Hnsgh8DboY55z1gQaJ/wMCpC7Df5o442m/mQ90wAyaTNYwL4 1uNa+tBqyLjk2pGQnVRBTOD+hkar2V3q7zSeQUIxSbsljUhzb7B3NcdyOuJNO0lhbuy3 nY7SW3sFPCA4maSyf/YRKKmS5ltM8LJcTa060=
Domainkey-signature: a=rsa-sha1; c=nofws;; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=Ai93AOg86KTdRC+MQKHQ3jGKbG8/56l6D7NYI+GZSKoux6PKl2Ujq3fajuaFQP/YCZ ru3XAk2OnSYHopaAJkNYCMY0b9dAAlJSwn1BmqVN0LEjNlJgTpAnknciRKFZ/AZR9jbs nLFIiUDVXMNNx0HVcDYgoHdsW5kePXnsvB820=
In-reply-to: <cb01d61712b1374a8c62bc765094ea7e@localhost>
Original-recipient: rfc822;
References: <cb01d61712b1374a8c62bc765094ea7e@localhost>
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv: Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10
On 04/17/2011 12:01 PM, Kevin Cernekee wrote:
MIPS Linux is unique in that it uses a "const struct pci_dev *" argument
to discourage bad coding practices in pcibios_map_irq().  Add a cast so
that this warning goes away:

arch/mips/pci/pci.c: In function 'pcibios_init':
arch/mips/pci/pci.c:165:45: warning: passing argument 2 of 'pci_fixup_irqs' 
from incompatible pointer type
include/linux/pci.h:856:6: note: expected 'int (*)(struct pci_dev *, u8,  u8)' 
but argument is of type 'struct pci_dev *'

Signed-off-by: Kevin Cernekee<>


It's been two years since the original discussion, and the warning is
still there.  It is now the only warning left in my kernel build.

I was hoping we could get this resolved for good (one way or another).

  arch/mips/pci/pci.c |    3 ++-
  1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/arch/mips/pci/pci.c b/arch/mips/pci/pci.c
index 33bba7b..9a35cd6 100644
--- a/arch/mips/pci/pci.c
+++ b/arch/mips/pci/pci.c
@@ -157,7 +157,8 @@ static int __init pcibios_init(void)
        for (hose = hose_head; hose; hose = hose->next)

-       pci_fixup_irqs(pci_common_swizzle, pcibios_map_irq);
+       pci_fixup_irqs(pci_common_swizzle,
+                      (int (*)(struct pci_dev *, u8, u8))pcibios_map_irq);


I think Ralf's idea in the e-mail you referenced is the proper approach.

Change pci_fixup_irqs(...) to take a 'const struct pci_dev *' instead. There is a lot of work going on in the kernel to constify things. This should be fairly easy to get accepted.

The alternative is to change all the pcibios_map_irq to match what is expected by pci_fixup_irqs().

David Daney

        pci_initialized = 1;

<Prev in Thread] Current Thread [Next in Thread>