Skip to content

Commit

Permalink
net/smc: define a reserved CHID range for virtual ISM devices
Browse files Browse the repository at this point in the history
According to virtual ISM support feature defined by SMCv2.1, CHIDs in
the range 0xFF00 to 0xFFFF are reserved for use by virtual ISM devices.

And two helpers are introduced to distinguish virtual ISM devices from
the existing platform firmware ISM devices.

Signed-off-by: Wen Gu <guwen@linux.alibaba.com>
Reviewed-and-tested-by: Wenjia Zhang <wenjia@linux.ibm.com>
Reviewed-by: Alexandra Winter <wintera@linux.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Wen Gu authored and David S. Miller committed Dec 26, 2023
1 parent 00e006a commit 8dd512d
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions net/smc/smc_ism.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

#include "smc.h"

#define SMC_VIRTUAL_ISM_CHID_MASK 0xFF00

struct smcd_dev_list { /* List of SMCD devices */
struct list_head list;
struct mutex mutex; /* Protects list of devices */
Expand Down Expand Up @@ -56,4 +58,22 @@ static inline int smc_ism_write(struct smcd_dev *smcd, u64 dmb_tok,
return rc < 0 ? rc : 0;
}

static inline bool __smc_ism_is_virtual(u16 chid)
{
/* CHIDs in range of 0xFF00 to 0xFFFF are reserved
* for virtual ISM device.
*
* loopback-ism: 0xFFFF
* virtio-ism: 0xFF00 ~ 0xFFFE
*/
return ((chid & 0xFF00) == 0xFF00);
}

static inline bool smc_ism_is_virtual(struct smcd_dev *smcd)
{
u16 chid = smcd->ops->get_chid(smcd);

return __smc_ism_is_virtual(chid);
}

#endif

0 comments on commit 8dd512d

Please sign in to comment.