1. 18 10月, 2017 5 次提交
  2. 23 9月, 2017 21 次提交
  3. 22 9月, 2017 1 次提交
    • A
      IB/core: Fix for core panic · e6f9bc34
      Alex Estrin 提交于
      Build with the latest patches resulted in panic:
      11384.486289] BUG: unable to handle kernel NULL pointer dereference at
               (null)
      [11384.486293] IP:           (null)
      [11384.486295] PGD 0
      [11384.486295] P4D 0
      [11384.486296]
      [11384.486299] Oops: 0010 [#1] SMP
      ......... snip ......
      [11384.486401] CPU: 0 PID: 968 Comm: kworker/0:1H Tainted: G        W  O
          4.13.0-a-stream-20170825 #1
      [11384.486402] Hardware name: Intel Corporation S2600WT2R/S2600WT2R,
      BIOS SE5C610.86B.01.01.0014.121820151719 12/18/2015
      [11384.486418] Workqueue: ib-comp-wq ib_cq_poll_work [ib_core]
      [11384.486419] task: ffff880850579680 task.stack: ffffc90007fec000
      [11384.486420] RIP: 0010:          (null)
      [11384.486420] RSP: 0018:ffffc90007fef970 EFLAGS: 00010206
      [11384.486421] RAX: ffff88084cfe8000 RBX: ffff88084dce4000 RCX:
      ffffc90007fef978
      [11384.486422] RDX: 0000000000000000 RSI: 0000000000000001 RDI:
      ffff88084cfe8000
      [11384.486422] RBP: ffffc90007fefab0 R08: 0000000000000000 R09:
      ffff88084dce4080
      [11384.486423] R10: ffffffffa02d7f60 R11: 0000000000000000 R12:
      ffff88105af65a00
      [11384.486423] R13: ffff88084dce4000 R14: 000000000000c000 R15:
      000000000000c000
      [11384.486424] FS:  0000000000000000(0000) GS:ffff88085f400000(0000)
      knlGS:0000000000000000
      [11384.486425] CS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033
      [11384.486425] CR2: 0000000000000000 CR3: 0000000001c09000 CR4:
      00000000001406f0
      [11384.486426] Call Trace:
      [11384.486431]  ? is_valid_mcast_lid.isra.21+0xfb/0x110 [ib_core]
      [11384.486436]  ib_attach_mcast+0x6f/0xa0 [ib_core]
      [11384.486441]  ipoib_mcast_attach+0x81/0x190 [ib_ipoib]
      [11384.486443]  ipoib_mcast_join_complete+0x354/0xb40 [ib_ipoib]
      [11384.486448]  mcast_work_handler+0x330/0x6c0 [ib_core]
      [11384.486452]  join_handler+0x101/0x220 [ib_core]
      [11384.486455]  ib_sa_mcmember_rec_callback+0x54/0x80 [ib_core]
      [11384.486459]  recv_handler+0x3a/0x60 [ib_core]
      [11384.486462]  ib_mad_recv_done+0x423/0x9b0 [ib_core]
      [11384.486466]  __ib_process_cq+0x5d/0xb0 [ib_core]
      [11384.486469]  ib_cq_poll_work+0x20/0x60 [ib_core]
      [11384.486472]  process_one_work+0x149/0x360
      [11384.486474]  worker_thread+0x4d/0x3c0
      [11384.486487]  kthread+0x109/0x140
      [11384.486488]  ? rescuer_thread+0x380/0x380
      [11384.486489]  ? kthread_park+0x60/0x60
      [11384.486490]  ? kthread_park+0x60/0x60
      [11384.486493]  ret_from_fork+0x25/0x30
      [11384.486493] Code:  Bad RIP value.
      [11384.486493] Code:  Bad RIP value.
      [11384.486496] RIP:           (null) RSP: ffffc90007fef970
      [11384.486497] CR2: 0000000000000000
      [11384.486531] ---[ end trace b1acec6fb4ff6e75 ]---
      [11384.532133] Kernel panic - not syncing: Fatal exception
      [11384.536541] Kernel Offset: disabled
      [11384.969491] ---[ end Kernel panic - not syncing: Fatal exception
      [11384.976875] sched: Unexpected reschedule of offline CPU#1!
      [11384.983646] ------------[ cut here ]------------
      
      Rdma device driver may not have implemented (*get_link_layer)()
      so it can not be called directly. Should use appropriate helper function.
      Reviewed-by: NYuval Shaia <yuval.shaia@oracle.com>
      Fixes: 52363335 ("IB/core: Fix the validations of a multicast LID in attach or detach operations")
      Cc: stable@kernel.org # 4.13
      Reviewed-by: NDennis Dalessandro <dennis.dalessandro@intel.com>
      Signed-off-by: NAlex Estrin <alex.estrin@intel.com>
      Signed-off-by: NDennis Dalessandro <dennis.dalessandro@intel.com>
      Reviewed-by: NLeon Romanovsky <leonro@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      e6f9bc34
  4. 14 9月, 2017 1 次提交
  5. 09 9月, 2017 3 次提交
  6. 06 9月, 2017 1 次提交
  7. 01 9月, 2017 2 次提交
  8. 31 8月, 2017 6 次提交
    • M
      IB/core: Expose ioctl interface through experimental Kconfig · 8eb19e8e
      Matan Barak 提交于
      Add CONFIG_INFINIBAND_EXP_USER_ACCESS that enables the ioctl
      interface. This interface is experimental and is subject to change.
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      8eb19e8e
    • M
      IB/core: Assign root to all drivers · 52427112
      Matan Barak 提交于
      In order to use the parsing tree, we need to assign the root
      to all drivers. Currently, we just assign the default parsing
      tree via ib_uverbs_add_one. The driver could override this by
      assigning a parsing tree prior to registering the device.
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      52427112
    • M
      IB/core: Add completion queue (cq) object actions · 9ee79fce
      Matan Barak 提交于
      Adding CQ ioctl actions:
      1. create_cq
      2. destroy_cq
      
      This requires adding the following:
      1. A specification describing the method
      	a. Handler
      	b. Attributes specification
      		Each attribute is one of the following:
      		a. PTR_IN - input data
      			    Note: This could be encoded inlined for
      				  data < 64bit
      		b. PTR_OUT - response data
      		c. IDR - idr based object
      		d. FD - fd based object
                      Blobs attributes (clauses a and b) contain their type,
      	        while objects specifications (clauses c and d)
                      contains the expected object type (for example, the
                      given id should be UVERBS_TYPE_PD) and the required
                      access (READ, WRITE, NEW or DESTROY). If a NEW is
                      required, the new object's id will be assigned to this
                      attribute. All attributes could get UA_FLAGS
                      attribute. Currently we support stating that an
      		attribute is mandatory or that the specification size
                      corresponds to a lower bound (and that this attribute
      		could be extended).
      		We currently add both default attributes and the two
      		generic UHW_IN and UHW_OUT driver specific attributes.
      2. Handler
         A handler gets a uverbs_attr_bundle. The handler developer uses
         uverbs_attr_get to fetch an attribute of a given id.
         Each of these attribute groups correspond to the specification
         group defined in the action (clauses 1.b and 1.c respectively).
         The indices of these arrays corresponds to the attribute ids
         declared in the specifications (clause 2).
      
         The handler is quite simple. It assumes the infrastructure fetched
         all objects and locked, created or destroyed them as required by
         the specification. Pointer (or blob) attributes were validated to
         match their required sizes. After the handler finished, the
         infrastructure commits or rollbacks the objects.
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      9ee79fce
    • M
      IB/core: Add legacy driver's user-data · d70724f1
      Matan Barak 提交于
      In this phase, we don't want to change all the drivers to use
      flexible driver's specific attributes. Therefore, we add two default
      attributes: UHW_IN and UHW_OUT. These attributes are optional in some
      methods and they encode the driver specific command data. We add
      a function that extract this data and creates the legacy udata over
      it.
      
      Driver's data should start from UVERBS_UDATA_DRIVER_DATA_FLAG. This
      turns on the first bit of the namespace, indicating this attribute
      belongs to the driver's namespace.
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      d70724f1
    • M
      IB/core: Explicitly destroy an object while keeping uobject · 4da70da2
      Matan Barak 提交于
      When some objects are destroyed, we need to extract their status at
      destruction. After object's destruction, this status
      (e.g. events_reported) relies in the uobject. In order to have the
      latest and correct status, the underlying object should be destroyed,
      but we should keep the uobject alive and read this information off the
      uobject. We introduce a rdma_explicit_destroy function. This function
      destroys the class type object (for example, the IDR class type which
      destroys the underlying object as well) and then convert the uobject
      to be of a null class type. This uobject will then be destroyed as any
      other uobject once uverbs_finalize_object[s] is called.
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      4da70da2
    • M
      IB/core: Add uverbs merge trees functionality · 118620d3
      Matan Barak 提交于
      Different drivers support different features and even subset of the
      common uverbs implementation. Currently, this is handled as bitmask
      in every driver that represents which kind of methods it supports, but
      doesn't go down to attributes granularity. Moreover, drivers might
      want to add their specific types, methods and attributes to let
      their user-space counter-parts be exposed to some more efficient
      abstractions. It means that existence of different features is
      validated syntactically via the parsing infrastructure rather than
      using a complex in-handler logic.
      
      In order to do that, we allow defining features and abstractions
      as parsing trees. These per-feature parsing tree could be merged
      to an efficient (perfect-hash based) parsing tree, which is later
      used by the parsing infrastructure.
      
      To sum it up, this makes a parse tree unique for a device and
      represents only the features this particular device supports.
      This is done by having a root specification tree per feature.
      Before a device registers itself as an IB device, it merges
      all these trees into one parsing tree. This parsing tree
      is used to parse all user-space commands.
      
      A future user-space application could read this parse tree. This
      tree represents which objects, methods and attributes are
      supported by this device.
      
      This is based on the idea of
      Jason Gunthorpe <jgunthorpe@obsidianresearch.com>
      Signed-off-by: NMatan Barak <matanb@mellanox.com>
      Reviewed-by: NYishai Hadas <yishaih@mellanox.com>
      Signed-off-by: NDoug Ledford <dledford@redhat.com>
      118620d3