Re: linux-next: build failure after merge of the pci tree
On Tue, Nov 06, 2012 at 11:27:29AM +1100, Stephen Rothwell wrote: Hi Bjorn, After merging the pci tree, today's linux-next build (x86_64 allmodconfig) failed like this: ... drivers/scsi/gdth.c: In function 'gdth_init_pci': drivers/scsi/gdth.c::34: error: lvalue required as left operand of assignment Here's what I think we should do about the GDT issue. I'll send this via the usual channels. commit c6156dd31228e608e0a820d2eed7403fd1fd620b Author: Bjorn Helgaas bhelg...@google.com Date: Tue Nov 6 14:19:03 2012 -0700 [SCSI] gdth: Remove buggy ROM handling The ROM address handling in gdth_init_pci() is useless and possibly dangerous. This patch removes it. pci_resource_start(pdev, 8) is not well-defined. PCI resources 0-5 are standard PCI BARs and 6 is the expansion ROM. Resource 8 is either an SR-IOV BAR (if CONFIG_PCI_IOV=y, resources 7-12 are SR-IOV BARs) or a bridge window (resources 7-10). The GDT device is neither an SR-IOV device nor a bridge, so in either case resource 8 should be zero since struct pci_dev is allocated with kzalloc(). It is illegal for a driver to write an arbitrary address to the ROM BAR because it has no way of knowing whether the ROM will conflict with another device. I think the only effect of the code being removed was to: 1) Enable the ROM at 0xFEFF (possibly causing a conflict with another device) 2) Delay one millisecond 3) Write zero to the ROM BAR, disabling it I doubt the delay is needed, but I left it since it seems innocuous. Signed-off-by: Bjorn Helgaas bhelg...@google.com diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c index 5d72274..3efe4ef 100644 --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c @@ -1107,14 +1107,8 @@ static int __devinit gdth_init_pci(struct pci_dev *pdev, gdth_pci_str *pcistr, pci_read_config_word(pdev, PCI_COMMAND, command); command |= 6; pci_write_config_word(pdev, PCI_COMMAND, command); - if (pci_resource_start(pdev, 8) == 1UL) - pci_resource_start(pdev, 8) = 0UL; -i = 0xFEFF0001UL; - pci_write_config_dword(pdev, PCI_ROM_ADDRESS, i); -gdth_delay(1); - pci_write_config_dword(pdev, PCI_ROM_ADDRESS, - pci_resource_start(pdev, 8)); - + gdth_delay(1); + dp6m_ptr = ha-brd; /* Ensure that it is safe to access the non HW portions of DPMEM. -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
linux-next: build failure after merge of the pci tree
Hi Bjorn, After merging the pci tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/staging/telephony/ixj.c: In function 'ixj_probe_pci': drivers/staging/telephony/ixj.c:7732:13: warning: assignment makes integer from pointer without a cast [enabled by default] drivers/staging/telephony/ixj.c:7732:38: error: expected ';' before 'pci_resource_start' Exposed by commit 545974a28f78 (PCI: Convert pci_resource_foo macros to static inlines). The macro version of pci_resource_start() made this RHS look like a function call and now it isn't. Maybe it is time this driver just went away. drivers/scsi/gdth.c: In function 'gdth_init_pci': drivers/scsi/gdth.c::34: error: lvalue required as left operand of assignment This was also exposed by the above commit, but is caused by the driver expecting to be able to assign to the result of pci_resource_start(). I have applied the following patch for today (the scsi one could probably be done more correctly): From: Stephen Rothwell s...@canb.auug.org.au Date: Tue, 6 Nov 2012 11:23:45 +1100 Subject: [PATCH] PCI: fixups for pci_resource_start conversion Signed-off-by: Stephen Rothwell s...@canb.auug.org.au --- drivers/scsi/gdth.c |2 +- drivers/staging/telephony/Kconfig |1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/scsi/gdth.c b/drivers/scsi/gdth.c index 5d72274..5209e81 100644 --- a/drivers/scsi/gdth.c +++ b/drivers/scsi/gdth.c @@ -1108,7 +1108,7 @@ static int __devinit gdth_init_pci(struct pci_dev *pdev, gdth_pci_str *pcistr, command |= 6; pci_write_config_word(pdev, PCI_COMMAND, command); if (pci_resource_start(pdev, 8) == 1UL) - pci_resource_start(pdev, 8) = 0UL; + pdev-resource[8].start = 0UL; i = 0xFEFF0001UL; pci_write_config_dword(pdev, PCI_ROM_ADDRESS, i); gdth_delay(1); diff --git a/drivers/staging/telephony/Kconfig b/drivers/staging/telephony/Kconfig index b5f78b6..c5893e2 100644 --- a/drivers/staging/telephony/Kconfig +++ b/drivers/staging/telephony/Kconfig @@ -20,6 +20,7 @@ if PHONE config PHONE_IXJ tristate QuickNet Internet LineJack/PhoneJack support depends on ISA || PCI + depends on BROKEN ---help--- Say M if you have a telephony card manufactured by Quicknet Technologies, Inc. These include the Internet PhoneJACK and -- 1.7.10.280.gaa39 -- Cheers, Stephen Rothwells...@canb.auug.org.au pgp2UGRAiHzzg.pgp Description: PGP signature
Re: linux-next: build failure after merge of the pci tree
On Tue, Nov 06, 2012 at 11:27:29AM +1100, Stephen Rothwell wrote: Hi Bjorn, After merging the pci tree, today's linux-next build (x86_64 allmodconfig) failed like this: drivers/staging/telephony/ixj.c: In function 'ixj_probe_pci': drivers/staging/telephony/ixj.c:7732:13: warning: assignment makes integer from pointer without a cast [enabled by default] drivers/staging/telephony/ixj.c:7732:38: error: expected ';' before 'pci_resource_start' Exposed by commit 545974a28f78 (PCI: Convert pci_resource_foo macros to static inlines). The macro version of pci_resource_start() made this RHS look like a function call and now it isn't. Maybe it is time this driver just went away. It is gone in my tree, and it should be deleted in yours, do you not see that? thanks, greg k-h -- To unsubscribe from this list: send the line unsubscribe linux-scsi in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html