* [PATCH 0/2] REALLY final InfiniBand updates for 2.6.13 @ 2005-07-28 20:31 Roland Dreier 2005-07-28 20:31 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Roland Dreier 0 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-07-28 20:31 UTC (permalink / raw) To: akpm; +Cc: linux-kernel, openib-general Here are two last-minute fixes for InfiniBand: one to avoid pain in releasing 2.6.13 with an incorrect constant and then having to rename the enum later, and one to fix RARP on IP-over-InfiniBand. After Greg's scolding, I'm sending them as patches, but they're also available in the git tree at rsync://rsync.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git for-linus (pending mirror propagation) The patches update the following files: include/ib_cm.h | 3 ++- ulp/ipoib/ipoib_main.c | 5 +++-- 2 files changed, 5 insertions(+), 3 deletions(-) through the following changes: commit 0dca0f7bf82face7b700890318d5550fd542cabf Author: Hal Rosenstock <halr@voltaire.com> Date: Thu Jul 28 13:17:26 2005 -0700 [PATCH] [IPoIB] Handle sending of unicast RARP responses RARP replies are another valid case where IPoIB may need to send a unicast packet with no neighbour structure. Signed-off-by: Hal Rosenstock <halr@voltaire.com> Signed-off-by: Roland Dreier <rolandd@cisco.com> commit 4e38d36d88ead4e56f3155573976da84d5df18b3 Author: Roland Dreier <roland@eddore.topspincom.com> Date: Thu Jul 28 13:16:30 2005 -0700 [PATCH] [IB/cm]: Correct CM port redirect reject codes Reject code 24 is port and CM redirection, not just port redirection. Port redirection alone is code 25. Therefore we should rename code 24 to IB_CM_REJ_PORT_CM_REDIRECT and use IB_CM_REJ_PORT_REDIRECT for code 25. Signed-off-by: Roland Dreier <rolandd@cisco.com> Thanks, Roland ^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes 2005-07-28 20:31 [PATCH 0/2] REALLY final InfiniBand updates for 2.6.13 Roland Dreier @ 2005-07-28 20:31 ` Roland Dreier 2005-07-28 20:31 ` [PATCH 2/2] [IPoIB] Handle sending of unicast RARP responses Roland Dreier 2005-08-04 0:58 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes yhlu 0 siblings, 2 replies; 37+ messages in thread From: Roland Dreier @ 2005-07-28 20:31 UTC (permalink / raw) To: akpm; +Cc: linux-kernel, openib-general Reject code 24 is port and CM redirection, not just port redirection. Port redirection alone is code 25. Therefore we should rename code 24 to IB_CM_REJ_PORT_CM_REDIRECT and use IB_CM_REJ_PORT_REDIRECT for code 25. Signed-off-by: Roland Dreier <rolandd@cisco.com> --- drivers/infiniband/include/ib_cm.h | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-) 4e38d36d88ead4e56f3155573976da84d5df18b3 diff --git a/drivers/infiniband/include/ib_cm.h b/drivers/infiniband/include/ib_cm.h --- a/drivers/infiniband/include/ib_cm.h +++ b/drivers/infiniband/include/ib_cm.h @@ -169,7 +169,8 @@ enum ib_cm_rej_reason { IB_CM_REJ_INVALID_ALT_TRAFFIC_CLASS = __constant_htons(21), IB_CM_REJ_INVALID_ALT_HOP_LIMIT = __constant_htons(22), IB_CM_REJ_INVALID_ALT_PACKET_RATE = __constant_htons(23), - IB_CM_REJ_PORT_REDIRECT = __constant_htons(24), + IB_CM_REJ_PORT_CM_REDIRECT = __constant_htons(24), + IB_CM_REJ_PORT_REDIRECT = __constant_htons(25), IB_CM_REJ_INVALID_MTU = __constant_htons(26), IB_CM_REJ_INSUFFICIENT_RESP_RESOURCES = __constant_htons(27), IB_CM_REJ_CONSUMER_DEFINED = __constant_htons(28), ^ permalink raw reply [flat|nested] 37+ messages in thread
* [PATCH 2/2] [IPoIB] Handle sending of unicast RARP responses 2005-07-28 20:31 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Roland Dreier @ 2005-07-28 20:31 ` Roland Dreier 2005-08-04 0:58 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes yhlu 1 sibling, 0 replies; 37+ messages in thread From: Roland Dreier @ 2005-07-28 20:31 UTC (permalink / raw) To: akpm; +Cc: linux-kernel, openib-general From: Hal Rosenstock <halr@voltaire.com> RARP replies are another valid case where IPoIB may need to send a unicast packet with no neighbour structure. Signed-off-by: Hal Rosenstock <halr@voltaire.com> Signed-off-by: Roland Dreier <rolandd@cisco.com> --- drivers/infiniband/ulp/ipoib/ipoib_main.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) 0dca0f7bf82face7b700890318d5550fd542cabf diff --git a/drivers/infiniband/ulp/ipoib/ipoib_main.c b/drivers/infiniband/ulp/ipoib/ipoib_main.c --- a/drivers/infiniband/ulp/ipoib/ipoib_main.c +++ b/drivers/infiniband/ulp/ipoib/ipoib_main.c @@ -600,9 +600,10 @@ static int ipoib_start_xmit(struct sk_bu ipoib_mcast_send(dev, (union ib_gid *) (phdr->hwaddr + 4), skb); } else { - /* unicast GID -- should be ARP reply */ + /* unicast GID -- should be ARP or RARP reply */ - if (be16_to_cpup((u16 *) skb->data) != ETH_P_ARP) { + if ((be16_to_cpup((__be16 *) skb->data) != ETH_P_ARP) && + (be16_to_cpup((__be16 *) skb->data) != ETH_P_RARP)) { ipoib_warn(priv, "Unicast, no %s: type %04x, QPN %06x " IPOIB_GID_FMT "\n", skb->dst ? "neigh" : "dst", ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes 2005-07-28 20:31 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Roland Dreier 2005-07-28 20:31 ` [PATCH 2/2] [IPoIB] Handle sending of unicast RARP responses Roland Dreier @ 2005-08-04 0:58 ` yhlu 2005-08-04 1:39 ` [openib-general] " Grant Grundler ` (2 more replies) 1 sibling, 3 replies; 37+ messages in thread From: yhlu @ 2005-08-04 0:58 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general Roland, In LinuxBIOS, If I enable the prefmem64 to use real 64 range. the IB driver in Kernel can not be loaded. YH PCI: 00:18.0 1c1 <- [0x0000001000 - 0x0000003fff] io <node 0 link 1> PCI: 00:18.0 1b9 <- [0xfce0000000 - 0xfcf07fffff] prefmem <node 0 link 1> PCI: 00:18.0 1b1 <- [0x00fc000000 - 0x00fd2fffff] mem <node 0 link 1> PCI: 01:0f.0 24 <- [0xfce0000000 - 0xfcf07fffff] bus 4 prefmem PCI: 01:0f.0 20 <- [0x00fd100000 - 0x00fd1fffff] bus 4 mem PCI: 04:00.0 10 <- [0x00fd100000 - 0x00fd1fffff] mem64 PCI: 04:00.0 18 <- [0xfcf0000000 - 0xfcf07fffff] prefmem64 PCI: 04:00.0 20 <- [0xfce0000000 - 0xfcefffffff] prefmem64 ib_mthca: Mellanox InfiniBand HCA driver v0.06 (June 23, 2005) ib_mthca: Initializing Mellanox Technologies MT25208 InfiniHost III Ex (Tavor c) ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. ib_mthca: probe of 0000:04:00.0 failed with error -16 ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [openib-general] Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes 2005-08-04 0:58 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes yhlu @ 2005-08-04 1:39 ` Grant Grundler 2005-08-04 4:44 ` mthca and LinuxBIOS (was: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes) Roland Dreier 2005-08-04 6:42 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Michael S. Tsirkin 2 siblings, 0 replies; 37+ messages in thread From: Grant Grundler @ 2005-08-04 1:39 UTC (permalink / raw) To: yhlu; +Cc: Roland Dreier, linux-kernel, openib-general On Wed, Aug 03, 2005 at 05:58:11PM -0700, yhlu wrote: > Roland, > > In LinuxBIOS, If I enable the prefmem64 to use real 64 range. the IB > driver in Kernel can not be loaded. Can you provide a few more details about the configuration? o kernel version o architecture (i386 or x86-64) o post the full console output from power up? Recent email on linux-pci raised awareness that 32-bit kernel can not support 64-bit PCI MMIO addresses. struct resource (defined in include/linux/ioport.h) defines the start/end field as "unsigned long". That's only 32-bit on i386 kernels. > PCI: 04:00.0 18 <- [0xfcf0000000 - 0xfcf07fffff] prefmem64 > PCI: 04:00.0 20 <- [0xfce0000000 - 0xfcefffffff] prefmem64 I have to wonder if those BARs are truly prefetchable. Does Mellanox assume CPU is the only one to write the 3rd BAR (RAM) and the CPU implements a write-through cache (vs write back)? I'm just guessing because I don't understand exactly how the 256MB of onboard RAM is accessed. hth, grant > > ib_mthca: Mellanox InfiniBand HCA driver v0.06 (June 23, 2005) > ib_mthca: Initializing Mellanox Technologies MT25208 InfiniHost III Ex (Tavor c) > ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. > ib_mthca: probe of 0000:04:00.0 failed with error -16 > _______________________________________________ > openib-general mailing list > openib-general@openib.org > http://openib.org/mailman/listinfo/openib-general > > To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general And I have to wonder if those BARs truly are prefetchable. It would imply only the CPU writes them and ^ permalink raw reply [flat|nested] 37+ messages in thread
* mthca and LinuxBIOS (was: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes) 2005-08-04 0:58 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes yhlu 2005-08-04 1:39 ` [openib-general] " Grant Grundler @ 2005-08-04 4:44 ` Roland Dreier 2005-08-04 16:33 ` yhlu 2005-08-04 6:42 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Michael S. Tsirkin 2 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-08-04 4:44 UTC (permalink / raw) To: yhlu; +Cc: linux-kernel, openib-general yhlu> In LinuxBIOS, If I enable the prefmem64 to use real 64 yhlu> range. the IB driver in Kernel can not be loaded. What does it mean to "enable the prefmem64 to use real 64 range"? Does the driver work if you don't do this? yhlu> ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. Can you add printk()s to mthca_qp.c::mthca_init_qp_table() to find out how far the function gets before it fails? It would also be useful for you to build with CONFIG_INFINIBAND_MTHCA_DEBUG=y and send the kernel output you get with that. - Roland ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS (was: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes) 2005-08-04 4:44 ` mthca and LinuxBIOS (was: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes) Roland Dreier @ 2005-08-04 16:33 ` yhlu 2005-08-04 16:36 ` mthca and LinuxBIOS Roland Dreier 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-04 16:33 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general YES. I will send you the output message later about "CONFIG_INFINIBAND_MTHCA_DEBUG=y" YH On 8/3/05, Roland Dreier <rolandd@cisco.com> wrote: > yhlu> In LinuxBIOS, If I enable the prefmem64 to use real 64 > yhlu> range. the IB driver in Kernel can not be loaded. > > What does it mean to "enable the prefmem64 to use real 64 range"? > > Does the driver work if you don't do this? > > yhlu> ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. > > Can you add printk()s to mthca_qp.c::mthca_init_qp_table() to find out > how far the function gets before it fails? > > It would also be useful for you to build with CONFIG_INFINIBAND_MTHCA_DEBUG=y > and send the kernel output you get with that. > > - Roland > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-04 16:33 ` yhlu @ 2005-08-04 16:36 ` Roland Dreier 2005-08-04 17:23 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-08-04 16:36 UTC (permalink / raw) To: yhlu; +Cc: linux-kernel, openib-general >>>>> "yhlu" == yhlu <yhlu.kernel@gmail.com> writes: yhlu> YES. I will send you the output message later about yhlu> "CONFIG_INFINIBAND_MTHCA_DEBUG=y" Thanks. In the meantime, can you explain what it means to "enable the prefmem64 to use real 64 range"? What is the difference between this and the configuration that works? - R. ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-04 16:36 ` mthca and LinuxBIOS Roland Dreier @ 2005-08-04 17:23 ` yhlu 2005-08-04 18:01 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-04 17:23 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general The mellanox can use prefmem64, but the BIOS could only allocate the some range below 4G, So 32 bit OS still can use the IB cards. but for 64bit OS, We could allocate range above 4G (0xfc00000000), So the mmio below 4G can be smaller. ( for example from 512M to 128M, the user can get back some RAM back if Opteron don't have hardware memhole support). YH On 8/4/05, Roland Dreier <rolandd@cisco.com> wrote: > >>>>> "yhlu" == yhlu <yhlu.kernel@gmail.com> writes: > > yhlu> YES. I will send you the output message later about > yhlu> "CONFIG_INFINIBAND_MTHCA_DEBUG=y" > > Thanks. In the meantime, can you explain what it means to "enable the > prefmem64 to use real 64 range"? What is the difference between this > and the configuration that works? > > - R. > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-04 17:23 ` yhlu @ 2005-08-04 18:01 ` yhlu 2005-08-04 18:35 ` Roland Dreier 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-04 18:01 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general i enable CCONFIG_INFINIBAND_MTHCA_DEBUG=y I didn't get any more debug info, is that depend other setting? YH On 8/4/05, yhlu <yhlu.kernel@gmail.com> wrote: > The mellanox can use prefmem64, but the BIOS could only allocate the > some range below 4G, So 32 bit OS still can use the IB cards. > but for 64bit OS, We could allocate range above 4G (0xfc00000000), So > the mmio below 4G can be smaller. ( for example from 512M to 128M, the > user can get back some RAM back if Opteron don't have hardware memhole > support). > > YH > > > > On 8/4/05, Roland Dreier <rolandd@cisco.com> wrote: > > >>>>> "yhlu" == yhlu <yhlu.kernel@gmail.com> writes: > > > > yhlu> YES. I will send you the output message later about > > yhlu> "CONFIG_INFINIBAND_MTHCA_DEBUG=y" > > > > Thanks. In the meantime, can you explain what it means to "enable the > > prefmem64 to use real 64 range"? What is the difference between this > > and the configuration that works? > > > > - R. > > > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-04 18:01 ` yhlu @ 2005-08-04 18:35 ` Roland Dreier 2005-08-04 19:30 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-08-04 18:35 UTC (permalink / raw) To: yhlu; +Cc: linux-kernel, openib-general yhlu> i enable CCONFIG_INFINIBAND_MTHCA_DEBUG=y I didn't get any yhlu> more debug info, is that depend other setting? It shouldn't depend on anything. mthca_dbg() gets turned into dev_dbg(), which just does dev_printk(KERN_DEBUG,...). Perhaps you have to change your console level to see KERN_DEBUG messages? Since you're getting to the call to mthca_init_qp_table(), there are mthca_dbg() calls that you should definitely be getting output from. - R. ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-04 18:35 ` Roland Dreier @ 2005-08-04 19:30 ` yhlu 2005-08-05 3:47 ` Roland Dreier 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-04 19:30 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general ib_mthca: Mellanox InfiniBand HCA driver v0.06 (June 23, 2005) ib_mthca: Initializing Mellanox Technologies MT25208 InfiniHost III Ex (Tavor compatibility mode) (0000:04:00.0) ib_mthca 0000:04:00.0: FW version 000400060002, max commands 64 ib_mthca 0000:04:00.0: FW size 6143 KB (start fcefa00000, end fcefffffff) ib_mthca 0000:04:00.0: HCA memory size 262143 KB (start fce0000000, end fcefffffff) ib_mthca 0000:04:00.0: Max QPs: 16777216, reserved QPs: 1024, entry size: 256 ib_mthca 0000:04:00.0: Max CQs: 16777216, reserved CQs: 128, entry size: 64 ib_mthca 0000:04:00.0: Max EQs: 64, reserved EQs: 1, entry size: 64 ib_mthca 0000:04:00.0: reserved MPTs: 16, reserved MTTs: 16 ib_mthca 0000:04:00.0: Max PDs: 16777216, reserved PDs: 0, reserved UARs: 1 ib_mthca 0000:04:00.0: Max QP/MCG: 16777216, reserved MGMs: 0 ib_mthca 0000:04:00.0: Flags: 00370347 ib_mthca 0000:04:00.0: profile[ 0]--10/20 @ 0x fce0000000 (size 0x 4000000) ib_mthca 0000:04:00.0: profile[ 1]-- 0/16 @ 0x fce4000000 (size 0x 1000000) ib_mthca 0000:04:00.0: profile[ 2]-- 7/18 @ 0x fce5000000 (size 0x 800000) ib_mthca 0000:04:00.0: profile[ 3]-- 9/17 @ 0x fce5800000 (size 0x 800000) ib_mthca 0000:04:00.0: profile[ 4]-- 3/16 @ 0x fce6000000 (size 0x 400000) ib_mthca 0000:04:00.0: profile[ 5]-- 4/16 @ 0x fce6400000 (size 0x 200000) ib_mthca 0000:04:00.0: profile[ 6]--12/15 @ 0x fce6600000 (size 0x 100000) ib_mthca 0000:04:00.0: profile[ 7]-- 8/13 @ 0x fce6700000 (size 0x 80000) ib_mthca 0000:04:00.0: profile[ 8]--11/11 @ 0x fce6780000 (size 0x 10000) ib_mthca 0000:04:00.0: profile[ 9]-- 6/ 5 @ 0x fce6790000 (size 0x 800) ib_mthca 0000:04:00.0: HCA memory: allocated 106050 KB/256000 KB (149950 KB free) ib_mthca 0000:04:00.0: Allocated EQ 1 with 65536 entries ib_mthca 0000:04:00.0: Allocated EQ 2 with 128 entries ib_mthca 0000:04:00.0: Allocated EQ 3 with 128 entries ib_mthca 0000:04:00.0: Setting mask 00000000000f43fe for eqn 2 ib_mthca 0000:04:00.0: Setting mask 0000000000000400 for eqn 3 ib_mthca 0000:04:00.0: NOP command IRQ test passed <------------------------------------------------------------------------------------------------------stuck 30s ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. ib_mthca 0000:04:00.0: Clearing mask 00000000000f43fe for eqn 2 ib_mthca 0000:04:00.0: Clearing mask 0000000000000400 for eqn 3 ib_mthca: probe of 0000:04:00.0 failed with error -16 On 8/4/05, Roland Dreier <rolandd@cisco.com> wrote: > yhlu> i enable CCONFIG_INFINIBAND_MTHCA_DEBUG=y I didn't get any > yhlu> more debug info, is that depend other setting? > > It shouldn't depend on anything. mthca_dbg() gets turned into > dev_dbg(), which just does dev_printk(KERN_DEBUG,...). Perhaps you > have to change your console level to see KERN_DEBUG messages? > > Since you're getting to the call to mthca_init_qp_table(), there are > mthca_dbg() calls that you should definitely be getting output from. > > - R. > - > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-04 19:30 ` yhlu @ 2005-08-05 3:47 ` Roland Dreier 2005-08-05 18:03 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-08-05 3:47 UTC (permalink / raw) To: yhlu; +Cc: linux-kernel, openib-general Hmm, that output all looks fine. Can you run with the patch below to see exactly where the QP table initialization fails? (I haven't actually compiled this patch so you may have to fix a typo or two) I'm guessing that the CONF_SPECIAL_QP command is failing, but let's make sure. Thanks, Roland diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c --- a/drivers/infiniband/hw/mthca/mthca_qp.c +++ b/drivers/infiniband/hw/mthca/mthca_qp.c @@ -2214,13 +2214,16 @@ int __devinit mthca_init_qp_table(struct (1 << 24) - 1, dev->qp_table.sqp_start + MTHCA_MAX_PORTS * 2); - if (err) + if (err) { + mthca_err(dev, "mthca_init_qp_table: mthca_alloc_init failed (%d)\n", err); return err; + } err = mthca_array_init(&dev->qp_table.qp, dev->limits.num_qps); if (err) { mthca_alloc_cleanup(&dev->qp_table.alloc); + mthca_err(dev, "mthca_init_qp_table: mthca_array_init failed (%d)\n", err); return err; } @@ -2228,8 +2231,10 @@ int __devinit mthca_init_qp_table(struct err = mthca_CONF_SPECIAL_QP(dev, i ? IB_QPT_GSI : IB_QPT_SMI, dev->qp_table.sqp_start + i * 2, &status); - if (err) + if (err) { + mthca_err(dev, "mthca_init_qp_table: mthca_CONF_SPECIAL_QP failed for %d/%d (%d)\n", i, dev->qp_table.sqp_start + i * 2, err); goto err_out; + } if (status) { mthca_warn(dev, "CONF_SPECIAL_QP returned " "status %02x, aborting.\n", ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 3:47 ` Roland Dreier @ 2005-08-05 18:03 ` yhlu 2005-08-05 18:07 ` yhlu ` (2 more replies) 0 siblings, 3 replies; 37+ messages in thread From: yhlu @ 2005-08-05 18:03 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general You are right. CONG_SPECIAL_QP ib_mthca: Mellanox InfiniBand HCA driver v0.06 (June 23, 2005) ib_mthca: Initializing Mellanox Technologies MT25208 InfiniHost III Ex (Tavor compatibility mode) (0000:04:00.0) ib_mthca 0000:04:00.0: FW version 000400060002, max commands 64 ib_mthca 0000:04:00.0: FW size 6143 KB (start fcefa00000, end fcefffffff) ib_mthca 0000:04:00.0: HCA memory size 262143 KB (start fce0000000, end fcefffffff) ib_mthca 0000:04:00.0: Max QPs: 16777216, reserved QPs: 1024, entry size: 256 ib_mthca 0000:04:00.0: Max CQs: 16777216, reserved CQs: 128, entry size: 64 ib_mthca 0000:04:00.0: Max EQs: 64, reserved EQs: 1, entry size: 64 ib_mthca 0000:04:00.0: reserved MPTs: 16, reserved MTTs: 16 ib_mthca 0000:04:00.0: Max PDs: 16777216, reserved PDs: 0, reserved UARs: 1 ib_mthca 0000:04:00.0: Max QP/MCG: 16777216, reserved MGMs: 0 ib_mthca 0000:04:00.0: Flags: 00370347 ib_mthca 0000:04:00.0: profile[ 0]--10/20 @ 0x fce0000000 (size 0x 4000000) ib_mthca 0000:04:00.0: profile[ 1]-- 0/16 @ 0x fce4000000 (size 0x 1000000) ib_mthca 0000:04:00.0: profile[ 2]-- 7/18 @ 0x fce5000000 (size 0x 800000) ib_mthca 0000:04:00.0: profile[ 3]-- 9/17 @ 0x fce5800000 (size 0x 800000) ib_mthca 0000:04:00.0: profile[ 4]-- 3/16 @ 0x fce6000000 (size 0x 400000) ib_mthca 0000:04:00.0: profile[ 5]-- 4/16 @ 0x fce6400000 (size 0x 200000) ib_mthca 0000:04:00.0: profile[ 6]--12/15 @ 0x fce6600000 (size 0x 100000) ib_mthca 0000:04:00.0: profile[ 7]-- 8/13 @ 0x fce6700000 (size 0x 80000) ib_mthca 0000:04:00.0: profile[ 8]--11/11 @ 0x fce6780000 (size 0x 10000) ib_mthca 0000:04:00.0: profile[ 9]-- 6/ 5 @ 0x fce6790000 (size 0x 800) ib_mthca 0000:04:00.0: HCA memory: allocated 106050 KB/256000 KB (149950 KB free) ib_mthca 0000:04:00.0: Allocated EQ 1 with 65536 entries ib_mthca 0000:04:00.0: Allocated EQ 2 with 128 entries ib_mthca 0000:04:00.0: Allocated EQ 3 with 128 entries ib_mthca 0000:04:00.0: Setting mask 00000000000f43fe for eqn 2 ib_mthca 0000:04:00.0: Setting mask 0000000000000400 for eqn 3 ib_mthca 0000:04:00.0: NOP command IRQ test passed ib_mthca 0000:04:00.0: mthca_init_qp_table: mthca_CONF_SPECIAL_QP failed for 0/1024 (-16) ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. ib_mthca 0000:04:00.0: Clearing mask 00000000000f43fe for eqn 2 ib_mthca 0000:04:00.0: Clearing mask 0000000000000400 for eqn 3 ib_mthca: probe of 0000:04:00.0 failed with error -16 ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 18:03 ` yhlu @ 2005-08-05 18:07 ` yhlu 2005-08-05 18:13 ` Roland Dreier 2005-08-05 18:11 ` Roland Dreier 2005-08-06 0:57 ` yhlu 2 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-05 18:07 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general ps. some kernel pci code patch broke sth yesterday night. it mask out bit [32-39] ib_mthca 0000:04:00.0: profile[ 0]--10/20 @ 0x e0000000 (size 0x 4000000) ib_mthca 0000:04:00.0: profile[ 1]-- 0/16 @ 0x e4000000 (size 0x 1000000) ib_mthca 0000:04:00.0: profile[ 2]-- 7/18 @ 0x e5000000 (size 0x 800000) ib_mthca 0000:04:00.0: profile[ 3]-- 9/17 @ 0x e5800000 (size 0x 800000) ib_mthca 0000:04:00.0: profile[ 4]-- 3/16 @ 0x e6000000 (size 0x 400000) ib_mthca 0000:04:00.0: profile[ 5]-- 4/16 @ 0x e6400000 (size 0x 200000) ib_mthca 0000:04:00.0: profile[ 6]--12/15 @ 0x e6600000 (size 0x 100000) ib_mthca 0000:04:00.0: profile[ 7]-- 8/13 @ 0x e6700000 (size 0x 80000) ib_mthca 0000:04:00.0: profile[ 8]--11/11 @ 0x e6780000 (size 0x 10000) ib_mthca 0000:04:00.0: profile[ 9]-- 6/ 5 @ 0x e6790000 (size 0x 800) YH On 8/5/05, yhlu <yhlu.kernel@gmail.com> wrote: > You are right. CONG_SPECIAL_QP > > ib_mthca: Mellanox InfiniBand HCA driver v0.06 (June 23, 2005) > ib_mthca: Initializing Mellanox Technologies MT25208 InfiniHost III Ex > (Tavor compatibility mode) (0000:04:00.0) > ib_mthca 0000:04:00.0: FW version 000400060002, max commands 64 > ib_mthca 0000:04:00.0: FW size 6143 KB (start fcefa00000, end fcefffffff) > ib_mthca 0000:04:00.0: HCA memory size 262143 KB (start fce0000000, > end fcefffffff) > ib_mthca 0000:04:00.0: Max QPs: 16777216, reserved QPs: 1024, entry size: 256 > ib_mthca 0000:04:00.0: Max CQs: 16777216, reserved CQs: 128, entry size: 64 > ib_mthca 0000:04:00.0: Max EQs: 64, reserved EQs: 1, entry size: 64 > ib_mthca 0000:04:00.0: reserved MPTs: 16, reserved MTTs: 16 > ib_mthca 0000:04:00.0: Max PDs: 16777216, reserved PDs: 0, reserved UARs: 1 > ib_mthca 0000:04:00.0: Max QP/MCG: 16777216, reserved MGMs: 0 > ib_mthca 0000:04:00.0: Flags: 00370347 > ib_mthca 0000:04:00.0: profile[ 0]--10/20 @ 0x fce0000000 (size 0x 4000000) > ib_mthca 0000:04:00.0: profile[ 1]-- 0/16 @ 0x fce4000000 (size 0x 1000000) > ib_mthca 0000:04:00.0: profile[ 2]-- 7/18 @ 0x fce5000000 (size 0x 800000) > ib_mthca 0000:04:00.0: profile[ 3]-- 9/17 @ 0x fce5800000 (size 0x 800000) > ib_mthca 0000:04:00.0: profile[ 4]-- 3/16 @ 0x fce6000000 (size 0x 400000) > ib_mthca 0000:04:00.0: profile[ 5]-- 4/16 @ 0x fce6400000 (size 0x 200000) > ib_mthca 0000:04:00.0: profile[ 6]--12/15 @ 0x fce6600000 (size 0x 100000) > ib_mthca 0000:04:00.0: profile[ 7]-- 8/13 @ 0x fce6700000 (size 0x 80000) > ib_mthca 0000:04:00.0: profile[ 8]--11/11 @ 0x fce6780000 (size 0x 10000) > ib_mthca 0000:04:00.0: profile[ 9]-- 6/ 5 @ 0x fce6790000 (size 0x 800) > ib_mthca 0000:04:00.0: HCA memory: allocated 106050 KB/256000 KB > (149950 KB free) > ib_mthca 0000:04:00.0: Allocated EQ 1 with 65536 entries > ib_mthca 0000:04:00.0: Allocated EQ 2 with 128 entries > ib_mthca 0000:04:00.0: Allocated EQ 3 with 128 entries > ib_mthca 0000:04:00.0: Setting mask 00000000000f43fe for eqn 2 > ib_mthca 0000:04:00.0: Setting mask 0000000000000400 for eqn 3 > ib_mthca 0000:04:00.0: NOP command IRQ test passed > ib_mthca 0000:04:00.0: mthca_init_qp_table: mthca_CONF_SPECIAL_QP > failed for 0/1024 (-16) > ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. > ib_mthca 0000:04:00.0: Clearing mask 00000000000f43fe for eqn 2 > ib_mthca 0000:04:00.0: Clearing mask 0000000000000400 for eqn 3 > ib_mthca: probe of 0000:04:00.0 failed with error -16 > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 18:07 ` yhlu @ 2005-08-05 18:13 ` Roland Dreier 2005-08-05 18:26 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-08-05 18:13 UTC (permalink / raw) To: yhlu; +Cc: linux-kernel, openib-general yhlu> ps. some kernel pci code patch broke sth yesterday night. yhlu> it mask out bit [32-39] Is it possible that all your problems are coming from the PCI setup code incorrectly assigning BARs? - R. ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 18:13 ` Roland Dreier @ 2005-08-05 18:26 ` yhlu 2005-08-05 19:25 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-05 18:26 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general before I do the cg-update this morning, it didn't mask out the upper 8 bit. YH On 8/5/05, Roland Dreier <rolandd@cisco.com> wrote: > yhlu> ps. some kernel pci code patch broke sth yesterday night. > yhlu> it mask out bit [32-39] > > Is it possible that all your problems are coming from the PCI setup > code incorrectly assigning BARs? > > - R. > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 18:26 ` yhlu @ 2005-08-05 19:25 ` yhlu 2005-08-05 19:45 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-05 19:25 UTC (permalink / raw) To: Roland Dreier, linville, gregkh, torvalds; +Cc: linux-kernel, openib-general pci_restore_bars cause that. it didn't restore that according to if resource is 64 bit or not. So it overwirte upper 32 bit with 0. YH file:1b34fc56067ed8ae0ba9b32f46679e13068bb86c -> file:65ea7d25f6911d7396e19afbf4bb2738906376f7 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -222,6 +222,37 @@ pci_find_parent_resource(const struct pc } /** + * pci_restore_bars - restore a devices BAR values (e.g. after wake-up) + * @dev: PCI device to have its BARs restored + * + * Restore the BAR values for a given device, so as to make it + * accessible by its driver. + */ +void +pci_restore_bars(struct pci_dev *dev) +{ + int i, numres; + + switch (dev->hdr_type) { + case PCI_HEADER_TYPE_NORMAL: + numres = 6; + break; + case PCI_HEADER_TYPE_BRIDGE: + numres = 2; + break; + case PCI_HEADER_TYPE_CARDBUS: + numres = 1; + break; + default: + /* Should never get here, but just in case... */ + return; + } + + for (i = 0; i < numres; i ++) + pci_update_resource(dev, &dev->resource[i], i); +} + +/** On 8/5/05, yhlu <yhlu.kernel@gmail.com> wrote: > before I do the cg-update this morning, it didn't mask out the upper 8 bit. > > YH > > On 8/5/05, Roland Dreier <rolandd@cisco.com> wrote: > > yhlu> ps. some kernel pci code patch broke sth yesterday night. > > yhlu> it mask out bit [32-39] > > > > Is it possible that all your problems are coming from the PCI setup > > code incorrectly assigning BARs? > > > > - R. > > > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 19:25 ` yhlu @ 2005-08-05 19:45 ` yhlu 2005-08-05 20:28 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-05 19:45 UTC (permalink / raw) To: Roland Dreier, linville, gregkh, torvalds; +Cc: linux-kernel, openib-general in drivers/pci/setup-res.c: pci_update_resource() why???? new = 0; /* currently everyone zeros the high address */ if ((new & (PCI_BASE_ADDRESS_SPACE|PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == (PCI_BASE_ADDRESS_SPACE_MEMORY|PCI_BASE_ADDRESS_MEM_TYPE_64)) { new = 0; /* currently everyone zeros the high address */ pci_write_config_dword(dev, reg + 4, new); pci_read_config_dword(dev, reg + 4, &check); if (check != new) { printk(KERN_ERR "PCI: Error updating region " "%s/%d (high %08x != %08x)\n", pci_name(dev), resno, new, check); } } On 8/5/05, yhlu <yhlu.kernel@gmail.com> wrote: > pci_restore_bars cause that. > it didn't restore that according to if resource is 64 bit or not. So > it overwirte upper 32 bit with 0. > > YH > > file:1b34fc56067ed8ae0ba9b32f46679e13068bb86c -> > file:65ea7d25f6911d7396e19afbf4bb2738906376f7 > --- a/drivers/pci/pci.c > +++ b/drivers/pci/pci.c > @@ -222,6 +222,37 @@ pci_find_parent_resource(const struct pc > } > /** > + * pci_restore_bars - restore a devices BAR values (e.g. after wake-up) > + * @dev: PCI device to have its BARs restored > + * > + * Restore the BAR values for a given device, so as to make it > + * accessible by its driver. > + */ > +void > +pci_restore_bars(struct pci_dev *dev) > +{ > + int i, numres; > + > + switch (dev->hdr_type) { > + case PCI_HEADER_TYPE_NORMAL: > + numres = 6; > + break; > + case PCI_HEADER_TYPE_BRIDGE: > + numres = 2; > + break; > + case PCI_HEADER_TYPE_CARDBUS: > + numres = 1; > + break; > + default: > + /* Should never get here, but just in case... */ > + return; > + } > + > + for (i = 0; i < numres; i ++) > + pci_update_resource(dev, &dev->resource[i], i); > +} > + > +/** > > On 8/5/05, yhlu <yhlu.kernel@gmail.com> wrote: > > before I do the cg-update this morning, it didn't mask out the upper 8 bit. > > > > YH > > > > On 8/5/05, Roland Dreier <rolandd@cisco.com> wrote: > > > yhlu> ps. some kernel pci code patch broke sth yesterday night. > > > yhlu> it mask out bit [32-39] > > > > > > Is it possible that all your problems are coming from the PCI setup > > > code incorrectly assigning BARs? > > > > > > - R. > > > > > > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 19:45 ` yhlu @ 2005-08-05 20:28 ` yhlu 2005-08-05 20:38 ` Linus Torvalds 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-05 20:28 UTC (permalink / raw) To: Roland Dreier, linville, gregkh, torvalds; +Cc: linux-kernel, openib-general please check the patch for fix overwrite upper 32bit YH --- drivers/pci/setup-res.c.orig 2005-08-05 10:08:45.000000000 -0700 +++ drivers/pci/setup-res.c 2005-08-05 13:25:06.000000000 -0700 @@ -33,6 +33,18 @@ u32 new, check, mask; int reg; + if (resno < 6) { + reg = PCI_BASE_ADDRESS_0 + 4 * resno; + if((resno & 1)==1) { + /* check if previous reg is 64 mem */ + pci_read_config_dword(dev, reg-4, &check ); + if ((check & (PCI_BASE_ADDRESS_SPACE|PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == + (PCI_BASE_ADDRESS_SPACE_MEMORY|PCI_BASE_ADDRESS_MEM_TYPE_64)) + return; + } + + } + pcibios_resource_to_bus(dev, ®ion, res); pr_debug(" got res [%lx:%lx] bus [%lx:%lx] flags %lx for " @@ -67,7 +79,7 @@ if ((new & (PCI_BASE_ADDRESS_SPACE|PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == (PCI_BASE_ADDRESS_SPACE_MEMORY|PCI_BASE_ADDRESS_MEM_TYPE_64)) { - new = 0; /* currently everyone zeros the high address */ + new = region.start >> 32 ; pci_write_config_dword(dev, reg + 4, new); pci_read_config_dword(dev, reg + 4, &check); if (check != new) { ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 20:28 ` yhlu @ 2005-08-05 20:38 ` Linus Torvalds 2005-08-05 22:00 ` Greg KH 0 siblings, 1 reply; 37+ messages in thread From: Linus Torvalds @ 2005-08-05 20:38 UTC (permalink / raw) To: yhlu Cc: Roland Dreier, linville, Greg KH, Ivan Kokshaysky, Linux Kernel Mailing List, openib-general Hmm.. This looks half-way sane, but too ugly for words. I'd much rather see that when we detect a 64-bit resource, we always mark the next resource as being reserved some way, and then we just make pci_update_resource() ignore such reserved resources. The if((resno & 1)==1) { /* check if previous reg is 64 mem */ .. stuff is really too ugly. Greg? Ivan? Linus On Fri, 5 Aug 2005, yhlu wrote: > > please check the patch for fix overwrite upper 32bit > > YH > > --- drivers/pci/setup-res.c.orig 2005-08-05 10:08:45.000000000 -0700 > +++ drivers/pci/setup-res.c 2005-08-05 13:25:06.000000000 -0700 > @@ -33,6 +33,18 @@ > u32 new, check, mask; > int reg; > > + if (resno < 6) { > + reg = PCI_BASE_ADDRESS_0 + 4 * resno; > + if((resno & 1)==1) { > + /* check if previous reg is 64 mem */ > + pci_read_config_dword(dev, reg-4, &check ); > + if ((check & > (PCI_BASE_ADDRESS_SPACE|PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == > + > (PCI_BASE_ADDRESS_SPACE_MEMORY|PCI_BASE_ADDRESS_MEM_TYPE_64)) > + return; > + } > + > + } > + > pcibios_resource_to_bus(dev, ®ion, res); > > pr_debug(" got res [%lx:%lx] bus [%lx:%lx] flags %lx for " > @@ -67,7 +79,7 @@ > > if ((new & (PCI_BASE_ADDRESS_SPACE|PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == > (PCI_BASE_ADDRESS_SPACE_MEMORY|PCI_BASE_ADDRESS_MEM_TYPE_64)) { > - new = 0; /* currently everyone zeros the high address */ > + new = region.start >> 32 ; > pci_write_config_dword(dev, reg + 4, new); > pci_read_config_dword(dev, reg + 4, &check); > if (check != new) { > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 20:38 ` Linus Torvalds @ 2005-08-05 22:00 ` Greg KH 2005-08-05 22:25 ` yhlu 2005-08-05 23:06 ` Linus Torvalds 0 siblings, 2 replies; 37+ messages in thread From: Greg KH @ 2005-08-05 22:00 UTC (permalink / raw) To: Linus Torvalds Cc: yhlu, Roland Dreier, linville, Ivan Kokshaysky, Linux Kernel Mailing List, openib-general On Fri, Aug 05, 2005 at 01:38:37PM -0700, Linus Torvalds wrote: > > Hmm.. This looks half-way sane, but too ugly for words. > > I'd much rather see that when we detect a 64-bit resource, we always mark > the next resource as being reserved some way, and then we just make > pci_update_resource() ignore such reserved resources. > > The > > if((resno & 1)==1) { > /* check if previous reg is 64 mem */ > .. > > stuff is really too ugly. Yeah, that's not nice. But what's the real problem we are trying to fix here? I seem to have missed that in the email thread somehow. > Greg? Ivan? Ivan's the pci resource guru, any thoughts as to how to do this in a nicer way? thanks, greg k-h ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 22:00 ` Greg KH @ 2005-08-05 22:25 ` yhlu 2005-08-05 23:03 ` Greg KH 2005-08-05 23:06 ` Linus Torvalds 1 sibling, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-05 22:25 UTC (permalink / raw) To: Greg KH Cc: Linus Torvalds, Roland Dreier, linville, Ivan Kokshaysky, Linux Kernel Mailing List, openib-general In LinuxBIOS, We can allocate 64 bit region ( 0xfc0000000....) to the mellanox Infiniband card. Some range above 4G. So the mmio below 4G is some smaller only 128M, Otherwise need 512M. If 4 IB cards are used, the mmio will be 2G. For new opteron E stepping, We could use hareware memhole support. But if the CPU is before opteron E, We only can use SW mem mapping ( will lose some performance) or lose (2G RAM). at such case We need 64bit pref mem. We only lose 128M even four IB card are installed. yesterday, someone add pci_restore_bars...., that will call pci_update_resource, and it will overwirte upper 32 bit of BAR2 and BAR4 of IB card. So the patch make pci_restore_resource 1. don't touch BAR3, and BAR5, if BAR2, and BAR4 are 64 bit MEM IO 2. not assume BAR2 and BAR4 upper 32bit is 0 if if BAR2, and BAR4 are 64 bit MEM IO YH On 8/5/05, Greg KH <gregkh@suse.de> wrote: > On Fri, Aug 05, 2005 at 01:38:37PM -0700, Linus Torvalds wrote: > > > > Hmm.. This looks half-way sane, but too ugly for words. > > > > I'd much rather see that when we detect a 64-bit resource, we always mark > > the next resource as being reserved some way, and then we just make > > pci_update_resource() ignore such reserved resources. > > > > The > > > > if((resno & 1)==1) { > > /* check if previous reg is 64 mem */ > > .. > > > > stuff is really too ugly. > > Yeah, that's not nice. > > But what's the real problem we are trying to fix here? I seem to have > missed that in the email thread somehow. > > > Greg? Ivan? > > Ivan's the pci resource guru, any thoughts as to how to do this in a > nicer way? > > thanks, > > greg k-h > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 22:25 ` yhlu @ 2005-08-05 23:03 ` Greg KH 2005-08-06 5:29 ` [openib-general] " Grant Grundler 0 siblings, 1 reply; 37+ messages in thread From: Greg KH @ 2005-08-05 23:03 UTC (permalink / raw) To: yhlu, Dominik Brodowski Cc: Linus Torvalds, Roland Dreier, linville, Ivan Kokshaysky, Linux Kernel Mailing List, openib-general On Fri, Aug 05, 2005 at 03:25:02PM -0700, yhlu wrote: > In LinuxBIOS, We can allocate 64 bit region ( 0xfc0000000....) to the > mellanox Infiniband card. Some range above 4G. So the mmio below 4G > is some smaller only 128M, Otherwise need 512M. If 4 IB cards are > used, the mmio will be 2G. For new opteron E stepping, We could use > hareware memhole support. But if the CPU is before opteron E, We only > can use SW mem mapping ( will lose some performance) or lose (2G RAM). > at such case We need 64bit pref mem. We only lose 128M even four IB > card are installed. > > yesterday, someone add pci_restore_bars...., that will call > pci_update_resource, and it will overwirte upper 32 bit of BAR2 and > BAR4 of IB card. Hm, perhaps that change should not do this? Dominik, care to weigh in here? That was your patch... > So the patch make pci_restore_resource > 1. don't touch BAR3, and BAR5, if BAR2, and BAR4 are 64 bit MEM IO > 2. not assume BAR2 and BAR4 upper 32bit is 0 if if BAR2, and BAR4 are > 64 bit MEM IO thanks, greg k-h ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [openib-general] Re: mthca and LinuxBIOS 2005-08-05 23:03 ` Greg KH @ 2005-08-06 5:29 ` Grant Grundler 0 siblings, 0 replies; 37+ messages in thread From: Grant Grundler @ 2005-08-06 5:29 UTC (permalink / raw) To: Greg KH Cc: yhlu, Dominik Brodowski, linville, openib-general, Linux Kernel Mailing List, Linus Torvalds, Ivan Kokshaysky On Fri, Aug 05, 2005 at 04:03:00PM -0700, Greg KH wrote: ... > > yesterday, someone add pci_restore_bars...., that will call > > pci_update_resource, and it will overwirte upper 32 bit of BAR2 and > > BAR4 of IB card. > > Hm, perhaps that change should not do this? > > Dominik, care to weigh in here? That was your patch... Was the origin of this patch the following thread started by John Linville: http://lkml.org/lkml/2005/6/23/257 I pointed out it would have issues with 64-bit BARs. And I suggested some solutions to JohnL's patch here: http://lkml.org/lkml/2005/7/2/14 In any case same issues apply to pci_update_resource(). grant ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 22:00 ` Greg KH 2005-08-05 22:25 ` yhlu @ 2005-08-05 23:06 ` Linus Torvalds 2005-08-05 23:59 ` [openib-general] " Grant Grundler 1 sibling, 1 reply; 37+ messages in thread From: Linus Torvalds @ 2005-08-05 23:06 UTC (permalink / raw) To: Greg KH Cc: yhlu, Roland Dreier, linville, Ivan Kokshaysky, Linux Kernel Mailing List, openib-general On Fri, 5 Aug 2005, Greg KH wrote: > On Fri, Aug 05, 2005 at 01:38:37PM -0700, Linus Torvalds wrote: > > But what's the real problem we are trying to fix here? We're screwing up the top 32 bits of the BAR when you resume it. Look at the patch, you'll see the fix (the other part of the patch looks fine, but then in order to not overwrite the upper bits with zero again when doing the _next_ - nonexistent - BAR update, we need to have something that avoids writing the next BAR). Remember: a 64-bit BAR puts the upper 32 bits in what would otherwise be the low 32 bits of the next BAR. Which is why we need to mark the next BAR resource as _not_ being valid some way - so that we don't try to (incorrectly) "restore" it and overwrite the high bits of the previous BAR. Of course, this only hits the (very few) people who not only have 64-bit PCI devices, but literally have them mapped in the 4GB+ region. Quite uncommon. Linus ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [openib-general] Re: mthca and LinuxBIOS 2005-08-05 23:06 ` Linus Torvalds @ 2005-08-05 23:59 ` Grant Grundler 2005-08-06 4:33 ` Grant Grundler 0 siblings, 1 reply; 37+ messages in thread From: Grant Grundler @ 2005-08-05 23:59 UTC (permalink / raw) To: Linus Torvalds Cc: Greg KH, Linux Kernel Mailing List, openib-general, linville, Ivan Kokshaysky, yhlu On Fri, Aug 05, 2005 at 04:06:06PM -0700, Linus Torvalds wrote: > > > On Fri, 5 Aug 2005, Greg KH wrote: > > On Fri, Aug 05, 2005 at 01:38:37PM -0700, Linus Torvalds wrote: > > > > But what's the real problem we are trying to fix here? > > We're screwing up the top 32 bits of the BAR when you resume it. Look at > the patch, you'll see the fix (the other part of the patch looks fine, but > then in order to not overwrite the upper bits with zero again when doing > the _next_ - nonexistent - BAR update, we need to have something that > avoids writing the next BAR). ISTR making comments before about the offending patch on linux-pci mailing list. Is this the same patch that assumes pci_dev->resource[i] == BAR[i] ? That's not true for 64-bit bars. > Remember: a 64-bit BAR puts the upper 32 bits in what would otherwise be > the low 32 bits of the next BAR. Which is why we need to mark the next BAR > resource as _not_ being valid some way - so that we don't try to > (incorrectly) "restore" it and overwrite the high bits of the previous > BAR. > Of course, this only hits the (very few) people who not only have 64-bit > PCI devices, but literally have them mapped in the 4GB+ region. *lots* of PCI device now have 64-bit BAR. The first I'm aware of was LSI 53c896 card (Ultra 2 SCSI). > Quite uncommon. Assigning 4GB+ regions is uncommon because too often either the HW, the OS, or the driver would break. firmware keeps having to worry about legacy OSs. grant ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [openib-general] Re: mthca and LinuxBIOS 2005-08-05 23:59 ` [openib-general] " Grant Grundler @ 2005-08-06 4:33 ` Grant Grundler 2005-08-06 23:52 ` yhlu 2005-08-07 9:49 ` Ivan Kokshaysky 0 siblings, 2 replies; 37+ messages in thread From: Grant Grundler @ 2005-08-06 4:33 UTC (permalink / raw) To: Grant Grundler Cc: Linus Torvalds, Greg KH, Linux Kernel Mailing List, openib-general, linville, Ivan Kokshaysky, yhlu On Fri, Aug 05, 2005 at 04:59:37PM -0700, Grant Grundler wrote: > ISTR making comments before about the offending patch on linux-pci mailing > list. Is this the same patch that assumes pci_dev->resource[i] == BAR[i] ? I meant the patch assume 1:1 for pci_dev->resource[i] and BAR[i]. not that the two are equivalent. grant ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [openib-general] Re: mthca and LinuxBIOS 2005-08-06 4:33 ` Grant Grundler @ 2005-08-06 23:52 ` yhlu 2005-08-07 9:49 ` Ivan Kokshaysky 1 sibling, 0 replies; 37+ messages in thread From: yhlu @ 2005-08-06 23:52 UTC (permalink / raw) To: Grant Grundler Cc: Linus Torvalds, Greg KH, Linux Kernel Mailing List, openib-general, linville, Ivan Kokshaysky In LinuxBIOS internal structure for resource, We have index member in resource. So the resource will be count from 0, ....7 or etc, but index member will point to real BAR position. I would like to see Kernel has simmliar definintion. in LinuxBIOS typedef uint64_t resource_t; struct resource { resource_t base; /* Base address of the resource */ resource_t size; /* Size of the resource */ resource_t limit; /* Largest valid value base + size -1 */ unsigned long flags; /* Descriptions of the kind of resource */ unsigned long index; /* Bus specific per device resource id */ unsigned char align; /* Required alignment (log 2) of the resource */ unsigned char gran; /* Granularity (log 2) of the resource */ /* Alignment must be >= the granularity of the resource */ }; YH On 8/5/05, Grant Grundler <iod00d@hp.com> wrote: > On Fri, Aug 05, 2005 at 04:59:37PM -0700, Grant Grundler wrote: > > ISTR making comments before about the offending patch on linux-pci mailing > > list. Is this the same patch that assumes pci_dev->resource[i] == BAR[i] ? > > I meant the patch assume 1:1 for pci_dev->resource[i] and BAR[i]. > not that the two are equivalent. > > grant > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [openib-general] Re: mthca and LinuxBIOS 2005-08-06 4:33 ` Grant Grundler 2005-08-06 23:52 ` yhlu @ 2005-08-07 9:49 ` Ivan Kokshaysky 1 sibling, 0 replies; 37+ messages in thread From: Ivan Kokshaysky @ 2005-08-07 9:49 UTC (permalink / raw) To: Grant Grundler Cc: Linus Torvalds, Greg KH, Linux Kernel Mailing List, openib-general, linville, yhlu On Fri, Aug 05, 2005 at 09:33:54PM -0700, Grant Grundler wrote: > > ISTR making comments before about the offending patch on linux-pci mailing > > list. Is this the same patch that assumes pci_dev->resource[i] == BAR[i] ? > > I meant the patch assume 1:1 for pci_dev->resource[i] and BAR[i]. > not that the two are equivalent. This is correct assumption. For 64-bit BAR[i] only pci_dev->resource[i] is valid, pci_dev->resource[i+1] slot is unused and contains zeroes in all fields. So all we need is just to check that we're going to update a _valid_ resource. [Though, if we ever want to support >4Gb bus allocations on 32-bit architectures we need to make resource start and end fields u64.] Ivan. --- 2.6.13-rc5-git4/drivers/pci/setup-res.c Sun Aug 7 12:08:23 2005 +++ linux/drivers/pci/setup-res.c Sun Aug 7 13:27:54 2005 @@ -33,6 +33,11 @@ pci_update_resource(struct pci_dev *dev, u32 new, check, mask; int reg; + /* Ignore resources for unimplemented BARs and unused resource slots + for 64 bit BARs. */ + if (!res->flags) + return; + pcibios_resource_to_bus(dev, ®ion, res); pr_debug(" got res [%lx:%lx] bus [%lx:%lx] flags %lx for " @@ -67,7 +72,7 @@ pci_update_resource(struct pci_dev *dev, if ((new & (PCI_BASE_ADDRESS_SPACE|PCI_BASE_ADDRESS_MEM_TYPE_MASK)) == (PCI_BASE_ADDRESS_SPACE_MEMORY|PCI_BASE_ADDRESS_MEM_TYPE_64)) { - new = 0; /* currently everyone zeros the high address */ + new = region.start >> 32; pci_write_config_dword(dev, reg + 4, new); pci_read_config_dword(dev, reg + 4, &check); if (check != new) { ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 18:03 ` yhlu 2005-08-05 18:07 ` yhlu @ 2005-08-05 18:11 ` Roland Dreier 2005-08-06 0:57 ` yhlu 2 siblings, 0 replies; 37+ messages in thread From: Roland Dreier @ 2005-08-05 18:11 UTC (permalink / raw) To: yhlu, mst; +Cc: linux-kernel, openib-general > ib_mthca 0000:04:00.0: FW version 000400060002, max commands 64 This is FW 4.6.2 -- 4.7.0 has been released, so it might be worth trying that. > ib_mthca 0000:04:00.0: NOP command IRQ test passed > ib_mthca 0000:04:00.0: mthca_init_qp_table: mthca_CONF_SPECIAL_QP failed for 0/1024 (-16) Hmm, looks like CONF_SPECIAL_QP is timing out. MST (or any Mellanox people), any idea why this might happening? The NOP command is working fine with interrupts, but CONF_SPECIAL_QP is timing out. The difference from the working setup is that the HCA's local memory is mapped above 4 GB. - R. ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-05 18:03 ` yhlu 2005-08-05 18:07 ` yhlu 2005-08-05 18:11 ` Roland Dreier @ 2005-08-06 0:57 ` yhlu 2005-08-06 1:30 ` Roland Dreier 2 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-06 0:57 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general Roland, what is the -16 mean? is it /* Attempt to modify a QP/EE which is not in the presumed state: */ MTHCA_CMD_STAT_BAD_QPEE_STATE = 0x10, YH On 8/5/05, yhlu <yhlu.kernel@gmail.com> wrote: > You are right. CONG_SPECIAL_QP > > ib_mthca: Mellanox InfiniBand HCA driver v0.06 (June 23, 2005) > ib_mthca: Initializing Mellanox Technologies MT25208 InfiniHost III Ex > (Tavor compatibility mode) (0000:04:00.0) > ib_mthca 0000:04:00.0: FW version 000400060002, max commands 64 > ib_mthca 0000:04:00.0: FW size 6143 KB (start fcefa00000, end fcefffffff) > ib_mthca 0000:04:00.0: HCA memory size 262143 KB (start fce0000000, > end fcefffffff) > ib_mthca 0000:04:00.0: Max QPs: 16777216, reserved QPs: 1024, entry size: 256 > ib_mthca 0000:04:00.0: Max CQs: 16777216, reserved CQs: 128, entry size: 64 > ib_mthca 0000:04:00.0: Max EQs: 64, reserved EQs: 1, entry size: 64 > ib_mthca 0000:04:00.0: reserved MPTs: 16, reserved MTTs: 16 > ib_mthca 0000:04:00.0: Max PDs: 16777216, reserved PDs: 0, reserved UARs: 1 > ib_mthca 0000:04:00.0: Max QP/MCG: 16777216, reserved MGMs: 0 > ib_mthca 0000:04:00.0: Flags: 00370347 > ib_mthca 0000:04:00.0: profile[ 0]--10/20 @ 0x fce0000000 (size 0x 4000000) > ib_mthca 0000:04:00.0: profile[ 1]-- 0/16 @ 0x fce4000000 (size 0x 1000000) > ib_mthca 0000:04:00.0: profile[ 2]-- 7/18 @ 0x fce5000000 (size 0x 800000) > ib_mthca 0000:04:00.0: profile[ 3]-- 9/17 @ 0x fce5800000 (size 0x 800000) > ib_mthca 0000:04:00.0: profile[ 4]-- 3/16 @ 0x fce6000000 (size 0x 400000) > ib_mthca 0000:04:00.0: profile[ 5]-- 4/16 @ 0x fce6400000 (size 0x 200000) > ib_mthca 0000:04:00.0: profile[ 6]--12/15 @ 0x fce6600000 (size 0x 100000) > ib_mthca 0000:04:00.0: profile[ 7]-- 8/13 @ 0x fce6700000 (size 0x 80000) > ib_mthca 0000:04:00.0: profile[ 8]--11/11 @ 0x fce6780000 (size 0x 10000) > ib_mthca 0000:04:00.0: profile[ 9]-- 6/ 5 @ 0x fce6790000 (size 0x 800) > ib_mthca 0000:04:00.0: HCA memory: allocated 106050 KB/256000 KB > (149950 KB free) > ib_mthca 0000:04:00.0: Allocated EQ 1 with 65536 entries > ib_mthca 0000:04:00.0: Allocated EQ 2 with 128 entries > ib_mthca 0000:04:00.0: Allocated EQ 3 with 128 entries > ib_mthca 0000:04:00.0: Setting mask 00000000000f43fe for eqn 2 > ib_mthca 0000:04:00.0: Setting mask 0000000000000400 for eqn 3 > ib_mthca 0000:04:00.0: NOP command IRQ test passed > ib_mthca 0000:04:00.0: mthca_init_qp_table: mthca_CONF_SPECIAL_QP > failed for 0/1024 (-16) > ib_mthca 0000:04:00.0: Failed to initialize queue pair table, aborting. > ib_mthca 0000:04:00.0: Clearing mask 00000000000f43fe for eqn 2 > ib_mthca 0000:04:00.0: Clearing mask 0000000000000400 for eqn 3 > ib_mthca: probe of 0000:04:00.0 failed with error -16 > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-06 0:57 ` yhlu @ 2005-08-06 1:30 ` Roland Dreier 2005-08-06 2:47 ` yhlu 0 siblings, 1 reply; 37+ messages in thread From: Roland Dreier @ 2005-08-06 1:30 UTC (permalink / raw) To: yhlu; +Cc: linux-kernel, openib-general yhlu> Roland, what is the -16 mean? yhlu> is it /* Attempt to modify a QP/EE which is not in the yhlu> presumed state: */ MTHCA_CMD_STAT_BAD_QPEE_STATE = 0x10, No, -16 is just -EBUSY. You could put a printk in event_timeout() in mthca_cmd.c to make sure, but I'm pretty sure that's where it's coming from. In other words we issue the CONF_SPECIAL_QP firmware command and don't ever get a response back from the HCA. - R. ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: mthca and LinuxBIOS 2005-08-06 1:30 ` Roland Dreier @ 2005-08-06 2:47 ` yhlu 0 siblings, 0 replies; 37+ messages in thread From: yhlu @ 2005-08-06 2:47 UTC (permalink / raw) To: Roland Dreier; +Cc: linux-kernel, openib-general I remember last year when I used IBGOLD 0.5 with PCI-X IB card, it seems that it could support 64 bit pref mem. I will try IBGOLD 1.7 ..... YH On 8/5/05, Roland Dreier <rolandd@cisco.com> wrote: > yhlu> Roland, what is the -16 mean? > > yhlu> is it /* Attempt to modify a QP/EE which is not in the > yhlu> presumed state: */ MTHCA_CMD_STAT_BAD_QPEE_STATE = 0x10, > > No, -16 is just -EBUSY. You could put a printk in event_timeout() in > mthca_cmd.c to make sure, but I'm pretty sure that's where it's coming > from. In other words we issue the CONF_SPECIAL_QP firmware command > and don't ever get a response back from the HCA. > > - R. > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes 2005-08-04 0:58 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes yhlu 2005-08-04 1:39 ` [openib-general] " Grant Grundler 2005-08-04 4:44 ` mthca and LinuxBIOS (was: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes) Roland Dreier @ 2005-08-04 6:42 ` Michael S. Tsirkin 2005-08-04 18:22 ` yhlu 2 siblings, 1 reply; 37+ messages in thread From: Michael S. Tsirkin @ 2005-08-04 6:42 UTC (permalink / raw) To: yhlu; +Cc: Roland Dreier, linux-kernel, openib-general Quoting r. yhlu <yhlu.kernel@gmail.com>: > Subject: Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes > > Roland, > > In LinuxBIOS, If I enable the prefmem64 to use real 64 range. the IB > driver in Kernel can not be loaded. Are you using the latest firmware on the HCA card? -- MST ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes 2005-08-04 6:42 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Michael S. Tsirkin @ 2005-08-04 18:22 ` yhlu 2005-08-08 12:21 ` Michael S. Tsirkin 0 siblings, 1 reply; 37+ messages in thread From: yhlu @ 2005-08-04 18:22 UTC (permalink / raw) To: Michael S. Tsirkin; +Cc: Roland Dreier, linux-kernel, openib-general Yes. On 8/3/05, Michael S. Tsirkin <mst@mellanox.co.il> wrote: > Quoting r. yhlu <yhlu.kernel@gmail.com>: > > Subject: Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes > > > > Roland, > > > > In LinuxBIOS, If I enable the prefmem64 to use real 64 range. the IB > > driver in Kernel can not be loaded. > > Are you using the latest firmware on the HCA card? > > -- > MST > ^ permalink raw reply [flat|nested] 37+ messages in thread
* Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes 2005-08-04 18:22 ` yhlu @ 2005-08-08 12:21 ` Michael S. Tsirkin 0 siblings, 0 replies; 37+ messages in thread From: Michael S. Tsirkin @ 2005-08-08 12:21 UTC (permalink / raw) To: yhlu; +Cc: Roland Dreier, linux-kernel, openib-general Quoting r. yhlu <yhlu.kernel@gmail.com>: > On 8/3/05, Michael S. Tsirkin <mst@mellanox.co.il> wrote: > > Quoting yhlu <yhlu.kernel@gmail.com>: > > > Subject: Re: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes > > > > > > Roland, > > > > > > In LinuxBIOS, If I enable the prefmem64 to use real 64 range. the IB > > > driver in Kernel can not be loaded. Could you please test with latest firmware 4.7.0? Thanks, -- MST ^ permalink raw reply [flat|nested] 37+ messages in thread
end of thread, other threads:[~2005-08-08 12:21 UTC | newest] Thread overview: 37+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-07-28 20:31 [PATCH 0/2] REALLY final InfiniBand updates for 2.6.13 Roland Dreier 2005-07-28 20:31 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Roland Dreier 2005-07-28 20:31 ` [PATCH 2/2] [IPoIB] Handle sending of unicast RARP responses Roland Dreier 2005-08-04 0:58 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes yhlu 2005-08-04 1:39 ` [openib-general] " Grant Grundler 2005-08-04 4:44 ` mthca and LinuxBIOS (was: [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes) Roland Dreier 2005-08-04 16:33 ` yhlu 2005-08-04 16:36 ` mthca and LinuxBIOS Roland Dreier 2005-08-04 17:23 ` yhlu 2005-08-04 18:01 ` yhlu 2005-08-04 18:35 ` Roland Dreier 2005-08-04 19:30 ` yhlu 2005-08-05 3:47 ` Roland Dreier 2005-08-05 18:03 ` yhlu 2005-08-05 18:07 ` yhlu 2005-08-05 18:13 ` Roland Dreier 2005-08-05 18:26 ` yhlu 2005-08-05 19:25 ` yhlu 2005-08-05 19:45 ` yhlu 2005-08-05 20:28 ` yhlu 2005-08-05 20:38 ` Linus Torvalds 2005-08-05 22:00 ` Greg KH 2005-08-05 22:25 ` yhlu 2005-08-05 23:03 ` Greg KH 2005-08-06 5:29 ` [openib-general] " Grant Grundler 2005-08-05 23:06 ` Linus Torvalds 2005-08-05 23:59 ` [openib-general] " Grant Grundler 2005-08-06 4:33 ` Grant Grundler 2005-08-06 23:52 ` yhlu 2005-08-07 9:49 ` Ivan Kokshaysky 2005-08-05 18:11 ` Roland Dreier 2005-08-06 0:57 ` yhlu 2005-08-06 1:30 ` Roland Dreier 2005-08-06 2:47 ` yhlu 2005-08-04 6:42 ` [PATCH 1/2] [IB/cm]: Correct CM port redirect reject codes Michael S. Tsirkin 2005-08-04 18:22 ` yhlu 2005-08-08 12:21 ` Michael S. Tsirkin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).