[PATCH 0/4] rasdaemon: Some little fixes and add some modules support
by Xiaofei Tan
Some little fixes and add some modules support for kunpeng series.
Xiaofei Tan (4):
rasdaemon: Fix the issue of sprintf data type mismatch in uuid_le()
rasdaemon: Fix the issue of command option -r for hip08
rasdaemon: Fix some print format issues for hisi common error section
rasdaemon: Add some modules supported by hisi common error section
non-standard-hisi_hip08.c | 6 +++---
non-standard-hisilicon.c | 32 +++++++++++++++++++++-----------
ras-extlog-handler.c | 2 +-
ras-non-standard-handler.c | 4 ++--
4 files changed, 27 insertions(+), 17 deletions(-)
--
2.33.0
10 months
[PATCH net-next v2 0/4] add frag page support in page pool
by Yunsheng Lin
This patchset adds frag page support in page pool and
enable skb's page frag recycling based on page pool in
hns3 drvier.
V2:
1. resend based on the latest net-next.
V1:
1. avoid atomic_long_read() in case of freeing or draining
page frag, and drop RFC tag.
RFC v6:
1. Disable frag page support in system 32-bit arch and
64-bit DMA.
RFC v5:
1. Rename dma_addr[0] to pp_frag_count and adjust codes
according to the rename.
RFC v4:
1. Use the dma_addr[1] to store bias.
2. Default to a pagecnt_bias of PAGE_SIZE - 1.
3. other minor comment suggested by Alexander.
RFC v3:
1. Implement the semantic of "page recycling only wait for the
page pool user instead of all user of a page"
2. Support the frag allocation of different sizes
3. Merge patch 4 & 5 to one patch as it does not make sense to
use page_pool_dev_alloc_pages() API directly with elevated
refcnt.
4. other minor comment suggested by Alexander.
RFC v2:
1. Split patch 1 to more reviewable one.
2. Repurpose the lower 12 bits of the dma address to store the
pagecnt_bias as suggested by Alexander.
3. support recycling to pool->alloc for elevated refcnt case
too.
Yunsheng Lin (4):
page_pool: keep pp info as long as page pool owns the page
page_pool: add interface to manipulate frag count in page pool
page_pool: add frag page recycling support in page pool
net: hns3: support skb's frag page recycling based on page pool
drivers/net/ethernet/hisilicon/Kconfig | 1 +
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c | 79 +++++++++++++++--
drivers/net/ethernet/hisilicon/hns3/hns3_enet.h | 3 +
drivers/net/ethernet/marvell/mvneta.c | 6 +-
drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 2 +-
drivers/net/ethernet/ti/cpsw.c | 2 +-
drivers/net/ethernet/ti/cpsw_new.c | 2 +-
include/linux/mm_types.h | 18 ++--
include/linux/skbuff.h | 4 +-
include/net/page_pool.h | 68 +++++++++++---
net/core/page_pool.c | 112 +++++++++++++++++++++++-
11 files changed, 258 insertions(+), 39 deletions(-)
--
2.7.4
10 months, 1 week
[RFCv2 net-next 000/167] net: extend the netdev_features_t
by Jian Shen
For the prototype of netdev_features_t is u64, and the number
of netdevice feature bits is 64 now. So there is no space to
introduce new feature bit.
This patchset try to solve it by change the prototype of
netdev_features_t from u64 to bitmap. With this change,
it's necessary to introduce a set of bitmap operation helpers
for netdev features. Meanwhile, the functions which use
netdev_features_t as return value are also need to be changed,
return the result as an output parameter.
With above changes, it will affect hundreds of files, and all the
nic drivers. To make it easy to be reviewed, split the changes
to 167 patches to 5 parts.
patch 1~22: convert the prototype which use netdev_features_t
as return value
patch 24: introduce fake helpers for bitmap operation
patch 25~165: use netdev_feature_xxx helpers
patch 166: use macro __DECLARE_NETDEV_FEATURE_MASK to replace
netdev_feature_t declaration.
patch 167: change the type of netdev_features_t to bitmap,
and rewrite the bitmap helpers.
Sorry to send a so huge patchset, I wanna to get more suggestions
to finish this work, to make it much more reviewable and feasible.
The former discussing for the changes, see [1]
[1]. https://www.spinics.net/lists/netdev/msg753528.html
ChangeLog:
V1->V2:
use bitmap by comment from Andrew Lunn
Jian Shen (167):
net: convert the prototype of netdev_intersect_features
net: convert the prototype of netdev_get_wanted_features
net: convert the prototype of net_mpls_features
net: convert the prototype of harmonize_features
net: convert the prototype of gso_features_check
net: convert the prototype of vlan_features_check
net: convert the prototype of vxlan_features_check
net: convert the prototype of dflt_features_check
net: convert the prototype of ndo_features_check
net: convert the prototype of netif_skb_features
net: convert the prototype of ndo_fix_features
net: convert the prototype of netdev_fix_features
net: convert the prototype of netdev_sync_upper_features
net: convert the prototype of br_features_recompute
net: convert the prototype of netdev_add_tso_features
net: convert the prototype of netdev_increment_features
net: convert the prototype of hsr_features_recompute
net: mlx5: convert prototype of mlx5e_ipsec_feature_check,
mlx5e_tunnel_features_check and mlx5e_fix_uplink_rep_features
net: sfc: convert the prototype of xxx_supported_features
net: qlogic: convert the prototype of qlcnic_process_flags
net: realtek: convert the prototype of rtl8168evl_fix_tso
ethtool: convert the prototype of ethtool_get_feature_mask
net: add netdev feature helpers
net: core: use netdev feature helpers
skbuff: use netdev feature helpers
net: vlan: use netdev feature helpers
bridge: use netdev feature helpers
ipvlan: use netdev feature helpers
veth: use netdev feature helpers
bonding: use netdev feature helpers
net: tun: use netdev feature helpers
net: tap: use netdev feature helpers
net: geneve: use netdev feature helpers
hv_netvsc: use netdev feature helpers
macvlan: use netdev feature helpers
macsec: use netdev feature helpers
net: tls: use netdev feature helpers
s390: qeth: use netdev feature helpers
dsa: use netdev feature helpers
macvtap: use netdev feature helpers
team: use netdev feature helpers
vmxnet3: use netdev feature helpers
net_failover: use netdev feature helpers
pktgen: use netdev feature helpers
net: sched: use netdev feature helpers
netdevsim: use netdev feature helpers
virtio_net: use netdev feature helpers
net: ipv4: use netdev feature helpers
net: ipv6: use netdev feature helpers
net: hsr: use netdev feature helpers
net: mpls: use netdev feature helpers
net: nsh: use netdev feature helpers
net: decnet: use netdev feature helpers
net: dccp: use netdev feature helpers
net: l2tp: use netdev feature helpers
net: ntb_netdev: use netdev feature helpers
net: thunderbolt: use netdev feature helpers
net: phonet: use netdev feature helpers
net: vrf: use netdev feature helpers
net: sctp: use netdev feature helpers
vxlan: use netdev feature helpers
xen-netback: use netdev feature helpers
xen-netfront: use netdev feature helpers
sock: use netdev feature helpers
sunrpc: use netdev feature helpers
net: caif: use netdev feature helpers
net: loopback: use netdev feature helpers
net: dummy: use netdev_feature helpers
net: mac80211: use netdev feature helpers
net: ifb: use netdev feature helpers
net: bareudp: use netdev feature helpers
net: rionet: use netdev feature helpers
net: gtp: use netdev feature helpers
net: vsockmon: use netdev feature helpers
net: nlmon: use netdev feature helpers
net: wireguard: use netdev feature helpers
net: can: use netdev feature helpers
net: ppp: use netdev feature helpers
net: ipa: use netdev feature helpers
net: fjes: use netdev feature helpers
net: usb: use netdev feature helpers
net: wireless: use netdev feature helpers
net: realtek: use netdev feature helpers
net: broadcom: use netdev feature helpers
net: intel: use netdev feature helpers
net: hisilicon: use netdev feature helpers
net: mellanox: use netdev feature helpers
net: atlantic: use netdev feature helpers
net: atheros: use netdev feature helpers
net: chelsio: use netdev feature helpers
net: davicom: use netdev feature helpers
net: freescale: use netdev feature helpers
net: synopsys: use netdev feature helpers
net: sfc: use netdev feature helpers
net: qualcomm: use netdev feature helpers
net: nvidia: use netdev feature helpers
net: faraday: use netdev feature helpers
net: google: use netdev feature helpers
net: hinic: use netdev feature helpers
net: ibm: use netdev feature helpers
net: ionic: use netdev feature helpers
net: jme: use netdev feature helpers
net: micrel: use netdev feature helpers
net: cavium: use netdev feature helpers
net: cadence: use netdev feature helpers
net: mediatek: use netdev feature helpers
net: marvell: use netdev feature helpers
net: socionext: use netdev feature helpers
net: qlogic: use netdev feature helpers
net: nfp: use netdev feature helpers
net: mscc: use netdev feature helpers
net: oki-semi: use netdev feature helpers
net: renesas: use netdev feature helpers
net: neterion: use netdev feature helpers
net: cortina: use netdev feature helpers
net: stmmac: use netdev feature helpers
net: sxgbe: use netdev feature helpers
net: xgmac: use netdev feature helpers
net: altera: use netdev feature helpers
net: ti: use netdev feature helpers
net: benet: use netdev feature helpers
net: amd: use netdev feature helpers
net: bna: use netdev feature helpers
net: enic: use netdev feature helpers
net: 3com: use netdev feature helpers
net: aeroflex: use netdev feature helpers
net: sun: use netdev feature helpers
net: mana: use netdev feature helpers
net: myricom: use netdev feature helpers
net: alacritech: use netdev feature helpers
net: toshiba: use netdev feature helpers
net: tehuti: use netdev feature helpers
net: alteon: use netdev feature helpers
net: ena: use netdev feature helpers
net: sgi: use netdev feature helpers
net: microchip: use netdev feature helpers
net: ni: use netdev feature helpers
net: apm: use netdev feature helpers
net: natsemi: use netdev feature helpers
net: xilinx: use netdev feature helpers
net: pasemi: use netdev feature helpers
net: rocker: use netdev feature helpers
net: silan: use netdev feature helpers
net: adaptec: use netdev feature helpers
net: tundra: use netdev feature helpers
net: via: use netdev feature helpers
net: wiznet: use netdev feature helpers
net: dnet: use netdev feature helpers
net: ethoc: use netdev feature helpers
RDMA: ipoib: use netdev feature helpers
um: use netdev feature helpers
scsi: fcoe: use netdev feature helpers
net: ipvs: use netdev feature helpers
net: xfrm: use netdev feature helpers
net: cirrus: use netdev feature helpers
net: ec_bhf: use netdev feature helpers
net: hamradio: use netdev feature helpers
net: batman: use netdev feature helpers
net: ieee802154: use netdev feature helpers
test_bpf: change the prototype of features
net: openvswitch: use netdev feature helpers
firewire: use netdev feature helpers
staging: qlge: use netdev feature helpers
staging: octeon: use netdev feature helpers
net: sock: add helper sk_nocaps_add_gso()
treewide: introduce macro __DECLARE_NETDEV_FEATURE_MASK
net: extend the type of netdev_features_t to bitmap
arch/um/drivers/vector_kern.c | 15 +-
drivers/firewire/net.c | 3 +-
drivers/infiniband/hw/hfi1/vnic_main.c | 7 +-
drivers/infiniband/ulp/ipoib/ipoib_cm.c | 2 +-
drivers/infiniband/ulp/ipoib/ipoib_ib.c | 2 +-
drivers/infiniband/ulp/ipoib/ipoib_main.c | 21 +-
drivers/infiniband/ulp/ipoib/ipoib_verbs.c | 2 +-
drivers/net/bareudp.c | 16 +-
drivers/net/bonding/bond_main.c | 136 +++---
drivers/net/bonding/bond_options.c | 12 +-
drivers/net/caif/caif_serial.c | 2 +-
drivers/net/can/dev/dev.c | 3 +-
drivers/net/can/slcan.c | 3 +-
drivers/net/dsa/xrs700x/xrs700x.c | 6 +-
drivers/net/dummy.c | 14 +-
drivers/net/ethernet/3com/3c59x.c | 9 +-
drivers/net/ethernet/3com/typhoon.c | 10 +-
drivers/net/ethernet/adaptec/starfire.c | 9 +-
drivers/net/ethernet/aeroflex/greth.c | 12 +-
drivers/net/ethernet/alacritech/slicoss.c | 5 +-
drivers/net/ethernet/alteon/acenic.c | 7 +-
drivers/net/ethernet/altera/altera_tse_main.c | 11 +-
.../net/ethernet/amazon/ena/ena_admin_defs.h | 2 +-
drivers/net/ethernet/amazon/ena/ena_netdev.c | 50 ++-
drivers/net/ethernet/amd/amd8111e.c | 8 +-
drivers/net/ethernet/amd/xgbe/xgbe-dev.c | 20 +-
drivers/net/ethernet/amd/xgbe/xgbe-drv.c | 93 ++--
drivers/net/ethernet/amd/xgbe/xgbe-main.c | 68 +--
drivers/net/ethernet/amd/xgbe/xgbe.h | 2 +-
drivers/net/ethernet/apm/xgene-v2/main.c | 5 +-
.../net/ethernet/apm/xgene/xgene_enet_main.c | 21 +-
.../ethernet/aquantia/atlantic/aq_filters.c | 12 +-
.../ethernet/aquantia/atlantic/aq_macsec.c | 2 +-
.../net/ethernet/aquantia/atlantic/aq_main.c | 27 +-
.../net/ethernet/aquantia/atlantic/aq_nic.c | 28 +-
.../net/ethernet/aquantia/atlantic/aq_nic.h | 2 +-
.../net/ethernet/aquantia/atlantic/aq_ring.c | 3 +-
.../aquantia/atlantic/hw_atl/hw_atl_b0.c | 3 +-
drivers/net/ethernet/atheros/alx/main.c | 23 +-
.../net/ethernet/atheros/atl1c/atl1c_main.c | 33 +-
.../net/ethernet/atheros/atl1e/atl1e_main.c | 44 +-
drivers/net/ethernet/atheros/atlx/atl1.c | 15 +-
drivers/net/ethernet/atheros/atlx/atl2.c | 27 +-
drivers/net/ethernet/atheros/atlx/atlx.c | 20 +-
drivers/net/ethernet/broadcom/b44.c | 2 +-
drivers/net/ethernet/broadcom/bcmsysport.c | 24 +-
drivers/net/ethernet/broadcom/bgmac.c | 8 +-
drivers/net/ethernet/broadcom/bnx2.c | 48 +-
.../net/ethernet/broadcom/bnx2x/bnx2x_cmn.c | 67 +--
.../net/ethernet/broadcom/bnx2x/bnx2x_cmn.h | 3 +-
.../net/ethernet/broadcom/bnx2x/bnx2x_main.c | 93 ++--
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 171 ++++---
drivers/net/ethernet/broadcom/bnxt/bnxt_tc.c | 4 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_vfr.c | 11 +-
drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 3 +-
.../net/ethernet/broadcom/genet/bcmgenet.c | 12 +-
drivers/net/ethernet/broadcom/tg3.c | 62 +--
drivers/net/ethernet/brocade/bna/bnad.c | 48 +-
drivers/net/ethernet/cadence/macb_main.c | 81 ++--
drivers/net/ethernet/calxeda/xgmac.c | 20 +-
.../net/ethernet/cavium/liquidio/lio_core.c | 6 +-
.../net/ethernet/cavium/liquidio/lio_main.c | 95 ++--
.../ethernet/cavium/liquidio/lio_vf_main.c | 79 ++--
.../net/ethernet/cavium/thunder/nicvf_main.c | 50 ++-
.../ethernet/cavium/thunder/nicvf_queues.c | 2 +-
drivers/net/ethernet/chelsio/cxgb/cxgb2.c | 50 ++-
drivers/net/ethernet/chelsio/cxgb/sge.c | 12 +-
.../net/ethernet/chelsio/cxgb3/cxgb3_main.c | 60 ++-
drivers/net/ethernet/chelsio/cxgb3/sge.c | 10 +-
.../net/ethernet/chelsio/cxgb4/cxgb4_fcoe.c | 16 +-
.../net/ethernet/chelsio/cxgb4/cxgb4_main.c | 88 ++--
.../net/ethernet/chelsio/cxgb4/cxgb4_tc_u32.h | 3 +-
drivers/net/ethernet/chelsio/cxgb4/sge.c | 14 +-
.../ethernet/chelsio/cxgb4vf/cxgb4vf_main.c | 39 +-
drivers/net/ethernet/chelsio/cxgb4vf/sge.c | 8 +-
.../chelsio/inline_crypto/chtls/chtls_main.c | 3 +-
drivers/net/ethernet/cirrus/ep93xx_eth.c | 2 +-
drivers/net/ethernet/cisco/enic/enic_main.c | 74 +--
drivers/net/ethernet/cortina/gemini.c | 18 +-
drivers/net/ethernet/davicom/dm9000.c | 24 +-
drivers/net/ethernet/dnet.c | 2 +-
drivers/net/ethernet/ec_bhf.c | 2 +-
drivers/net/ethernet/emulex/benet/be_main.c | 68 +--
drivers/net/ethernet/ethoc.c | 2 +-
drivers/net/ethernet/faraday/ftgmac100.c | 38 +-
.../net/ethernet/freescale/dpaa/dpaa_eth.c | 23 +-
.../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 44 +-
.../ethernet/freescale/dpaa2/dpaa2-switch.c | 5 +-
drivers/net/ethernet/freescale/enetc/enetc.c | 34 +-
.../net/ethernet/freescale/enetc/enetc_pf.c | 38 +-
.../net/ethernet/freescale/enetc/enetc_qos.c | 2 +-
.../net/ethernet/freescale/enetc/enetc_vf.c | 16 +-
drivers/net/ethernet/freescale/fec_main.c | 29 +-
.../ethernet/freescale/fs_enet/fs_enet-main.c | 2 +-
drivers/net/ethernet/freescale/gianfar.c | 39 +-
.../net/ethernet/freescale/gianfar_ethtool.c | 11 +-
drivers/net/ethernet/google/gve/gve_adminq.c | 6 +-
drivers/net/ethernet/google/gve/gve_main.c | 31 +-
drivers/net/ethernet/google/gve/gve_rx.c | 8 +-
drivers/net/ethernet/google/gve/gve_rx_dqo.c | 8 +-
drivers/net/ethernet/hisilicon/hix5hd2_gmac.c | 8 +-
drivers/net/ethernet/hisilicon/hns/hns_enet.c | 52 ++-
.../net/ethernet/hisilicon/hns3/hns3_enet.c | 109 +++--
.../net/ethernet/huawei/hinic/hinic_main.c | 80 ++--
drivers/net/ethernet/huawei/hinic/hinic_rx.c | 5 +-
drivers/net/ethernet/ibm/ehea/ehea_main.c | 22 +-
drivers/net/ethernet/ibm/emac/core.c | 7 +-
drivers/net/ethernet/ibm/ibmveth.c | 76 ++--
drivers/net/ethernet/ibm/ibmvnic.c | 69 +--
drivers/net/ethernet/intel/e100.c | 26 +-
drivers/net/ethernet/intel/e1000/e1000_main.c | 82 ++--
drivers/net/ethernet/intel/e1000e/netdev.c | 129 +++---
drivers/net/ethernet/intel/fm10k/fm10k_main.c | 9 +-
.../net/ethernet/intel/fm10k/fm10k_netdev.c | 65 +--
drivers/net/ethernet/intel/fm10k/fm10k_pci.c | 11 +-
drivers/net/ethernet/intel/i40e/i40e_main.c | 122 ++---
drivers/net/ethernet/intel/i40e/i40e_txrx.c | 9 +-
drivers/net/ethernet/intel/iavf/iavf_main.c | 153 ++++---
drivers/net/ethernet/intel/iavf/iavf_txrx.c | 12 +-
drivers/net/ethernet/intel/ice/ice_main.c | 177 +++++---
drivers/net/ethernet/intel/ice/ice_txrx_lib.c | 9 +-
drivers/net/ethernet/intel/igb/igb_ethtool.c | 2 +-
drivers/net/ethernet/intel/igb/igb_main.c | 150 ++++---
drivers/net/ethernet/intel/igbvf/netdev.c | 86 ++--
drivers/net/ethernet/intel/igc/igc_ethtool.c | 3 +-
drivers/net/ethernet/intel/igc/igc_main.c | 130 +++---
drivers/net/ethernet/intel/ixgb/ixgb_main.c | 49 +-
.../net/ethernet/intel/ixgbe/ixgbe_dcb_nl.c | 3 +-
.../net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 2 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_fcoe.c | 7 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_lib.c | 3 +-
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 215 +++++----
.../net/ethernet/intel/ixgbe/ixgbe_sriov.c | 6 +-
drivers/net/ethernet/intel/ixgbevf/ipsec.c | 9 +-
.../net/ethernet/intel/ixgbevf/ixgbevf_main.c | 105 +++--
drivers/net/ethernet/jme.c | 49 +-
drivers/net/ethernet/marvell/mv643xx_eth.c | 14 +-
drivers/net/ethernet/marvell/mvneta.c | 22 +-
.../net/ethernet/marvell/mvpp2/mvpp2_main.c | 73 +--
.../marvell/octeontx2/nic/otx2_common.c | 3 +-
.../marvell/octeontx2/nic/otx2_ethtool.c | 4 +-
.../ethernet/marvell/octeontx2/nic/otx2_pf.c | 85 ++--
.../marvell/octeontx2/nic/otx2_txrx.c | 8 +-
.../ethernet/marvell/octeontx2/nic/otx2_vf.c | 35 +-
.../ethernet/marvell/prestera/prestera_main.c | 3 +-
drivers/net/ethernet/marvell/skge.c | 11 +-
drivers/net/ethernet/marvell/sky2.c | 75 ++--
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 68 +--
drivers/net/ethernet/mediatek/mtk_eth_soc.h | 2 +-
.../net/ethernet/mellanox/mlx4/en_ethtool.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/en_main.c | 8 +-
.../net/ethernet/mellanox/mlx4/en_netdev.c | 198 +++++----
.../net/ethernet/mellanox/mlx4/en_resources.c | 4 +-
drivers/net/ethernet/mellanox/mlx4/en_rx.c | 19 +-
drivers/net/ethernet/mellanox/mlx4/mlx4_en.h | 5 +-
drivers/net/ethernet/mellanox/mlx5/core/en.h | 5 +-
.../mellanox/mlx5/core/en_accel/ipsec.c | 18 +-
.../mellanox/mlx5/core/en_accel/ipsec_rxtx.h | 15 +-
.../mellanox/mlx5/core/en_accel/ktls.c | 14 +-
.../mellanox/mlx5/core/en_accel/tls.c | 16 +-
.../net/ethernet/mellanox/mlx5/core/en_arfs.c | 6 +-
.../ethernet/mellanox/mlx5/core/en_ethtool.c | 3 +-
.../net/ethernet/mellanox/mlx5/core/en_fs.c | 3 +-
.../net/ethernet/mellanox/mlx5/core/en_main.c | 250 ++++++-----
.../net/ethernet/mellanox/mlx5/core/en_rep.c | 25 +-
.../net/ethernet/mellanox/mlx5/core/en_rx.c | 9 +-
.../net/ethernet/mellanox/mlx5/core/en_tc.c | 2 +-
.../ethernet/mellanox/mlx5/core/ipoib/ipoib.c | 19 +-
.../net/ethernet/mellanox/mlxsw/spectrum.c | 36 +-
drivers/net/ethernet/micrel/ksz884x.c | 10 +-
drivers/net/ethernet/microchip/lan743x_main.c | 7 +-
.../ethernet/microchip/sparx5/sparx5_fdma.c | 2 +-
drivers/net/ethernet/microsoft/mana/mana_en.c | 20 +-
drivers/net/ethernet/mscc/ocelot.c | 3 +-
drivers/net/ethernet/mscc/ocelot_net.c | 18 +-
.../net/ethernet/myricom/myri10ge/myri10ge.c | 31 +-
drivers/net/ethernet/natsemi/ns83820.c | 13 +-
drivers/net/ethernet/neterion/s2io.c | 32 +-
.../net/ethernet/neterion/vxge/vxge-main.c | 49 +-
.../net/ethernet/netronome/nfp/crypto/tls.c | 12 +-
.../ethernet/netronome/nfp/nfp_net_common.c | 118 +++--
.../net/ethernet/netronome/nfp/nfp_net_repr.c | 76 ++--
drivers/net/ethernet/netronome/nfp/nfp_port.c | 3 +-
drivers/net/ethernet/ni/nixge.c | 3 +-
drivers/net/ethernet/nvidia/forcedeth.c | 66 +--
.../ethernet/oki-semi/pch_gbe/pch_gbe_main.c | 13 +-
.../ethernet/oki-semi/pch_gbe/pch_gbe_param.c | 6 +-
drivers/net/ethernet/pasemi/pasemi_mac.c | 6 +-
.../net/ethernet/pensando/ionic/ionic_lif.c | 125 +++---
.../net/ethernet/pensando/ionic/ionic_txrx.c | 9 +-
.../ethernet/qlogic/netxen/netxen_nic_init.c | 3 +-
.../ethernet/qlogic/netxen/netxen_nic_main.c | 50 ++-
drivers/net/ethernet/qlogic/qede/qede.h | 10 +-
.../net/ethernet/qlogic/qede/qede_ethtool.c | 2 +-
.../net/ethernet/qlogic/qede/qede_filter.c | 19 +-
drivers/net/ethernet/qlogic/qede/qede_fp.c | 23 +-
drivers/net/ethernet/qlogic/qede/qede_main.c | 67 +--
drivers/net/ethernet/qlogic/qla3xxx.c | 5 +-
drivers/net/ethernet/qlogic/qlcnic/qlcnic.h | 3 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_hw.c | 72 +--
.../net/ethernet/qlogic/qlcnic/qlcnic_io.c | 3 +-
.../net/ethernet/qlogic/qlcnic/qlcnic_main.c | 57 +--
drivers/net/ethernet/qualcomm/emac/emac-mac.c | 6 +-
drivers/net/ethernet/qualcomm/emac/emac.c | 25 +-
.../ethernet/qualcomm/rmnet/rmnet_map_data.c | 11 +-
.../net/ethernet/qualcomm/rmnet/rmnet_vnd.c | 10 +-
drivers/net/ethernet/realtek/8139cp.c | 39 +-
drivers/net/ethernet/realtek/8139too.c | 28 +-
drivers/net/ethernet/realtek/r8169_main.c | 85 ++--
drivers/net/ethernet/renesas/ravb.h | 4 +-
drivers/net/ethernet/renesas/ravb_main.c | 24 +-
drivers/net/ethernet/renesas/sh_eth.c | 28 +-
drivers/net/ethernet/rocker/rocker_main.c | 3 +-
.../net/ethernet/samsung/sxgbe/sxgbe_main.c | 19 +-
drivers/net/ethernet/sfc/ef10.c | 41 +-
drivers/net/ethernet/sfc/ef100_nic.c | 43 +-
drivers/net/ethernet/sfc/ef100_rx.c | 6 +-
drivers/net/ethernet/sfc/ef100_tx.c | 11 +-
drivers/net/ethernet/sfc/ef10_sriov.c | 6 +-
drivers/net/ethernet/sfc/efx.c | 32 +-
drivers/net/ethernet/sfc/efx_common.c | 41 +-
drivers/net/ethernet/sfc/efx_common.h | 4 +-
drivers/net/ethernet/sfc/falcon/efx.c | 44 +-
drivers/net/ethernet/sfc/falcon/falcon.c | 4 +-
drivers/net/ethernet/sfc/falcon/net_driver.h | 9 +-
drivers/net/ethernet/sfc/falcon/rx.c | 6 +-
drivers/net/ethernet/sfc/farch.c | 2 +-
drivers/net/ethernet/sfc/mcdi_filters.c | 21 +-
drivers/net/ethernet/sfc/mcdi_port_common.c | 3 +-
drivers/net/ethernet/sfc/net_driver.h | 9 +-
drivers/net/ethernet/sfc/rx.c | 3 +-
drivers/net/ethernet/sfc/rx_common.c | 5 +-
drivers/net/ethernet/sfc/siena.c | 4 +-
drivers/net/ethernet/sgi/ioc3-eth.c | 11 +-
drivers/net/ethernet/silan/sc92031.c | 6 +-
drivers/net/ethernet/socionext/netsec.c | 10 +-
drivers/net/ethernet/socionext/sni_ave.c | 6 +-
.../net/ethernet/stmicro/stmmac/dwmac4_core.c | 3 +-
.../net/ethernet/stmicro/stmmac/stmmac_main.c | 62 +--
.../stmicro/stmmac/stmmac_selftests.c | 6 +-
drivers/net/ethernet/sun/cassini.c | 5 +-
drivers/net/ethernet/sun/ldmvsw.c | 5 +-
drivers/net/ethernet/sun/niu.c | 11 +-
drivers/net/ethernet/sun/sungem.c | 11 +-
drivers/net/ethernet/sun/sunhme.c | 14 +-
drivers/net/ethernet/sun/sunvnet.c | 8 +-
drivers/net/ethernet/sun/sunvnet_common.c | 5 +-
.../net/ethernet/synopsys/dwc-xlgmac-common.c | 45 +-
drivers/net/ethernet/synopsys/dwc-xlgmac-hw.c | 20 +-
.../net/ethernet/synopsys/dwc-xlgmac-net.c | 41 +-
drivers/net/ethernet/synopsys/dwc-xlgmac.h | 2 +-
drivers/net/ethernet/tehuti/tehuti.c | 22 +-
drivers/net/ethernet/ti/am65-cpsw-nuss.c | 23 +-
drivers/net/ethernet/ti/cpsw.c | 6 +-
drivers/net/ethernet/ti/cpsw_new.c | 7 +-
drivers/net/ethernet/ti/netcp_core.c | 9 +-
drivers/net/ethernet/toshiba/ps3_gelic_net.c | 14 +-
drivers/net/ethernet/toshiba/spider_net.c | 12 +-
drivers/net/ethernet/tundra/tsi108_eth.c | 3 +-
drivers/net/ethernet/via/via-rhine.c | 10 +-
drivers/net/ethernet/via/via-velocity.c | 14 +-
drivers/net/ethernet/wiznet/w5100.c | 2 +-
drivers/net/ethernet/wiznet/w5300.c | 2 +-
drivers/net/ethernet/xilinx/ll_temac_main.c | 5 +-
.../net/ethernet/xilinx/xilinx_axienet_main.c | 9 +-
drivers/net/fjes/fjes_main.c | 3 +-
drivers/net/geneve.c | 18 +-
drivers/net/gtp.c | 2 +-
drivers/net/hamradio/bpqether.c | 3 +-
drivers/net/hyperv/netvsc_bpf.c | 2 +-
drivers/net/hyperv/netvsc_drv.c | 46 +-
drivers/net/hyperv/rndis_filter.c | 30 +-
drivers/net/ifb.c | 12 +-
drivers/net/ipa/ipa_modem.c | 3 +-
drivers/net/ipvlan/ipvlan.h | 2 +-
drivers/net/ipvlan/ipvlan_main.c | 40 +-
drivers/net/ipvlan/ipvtap.c | 5 +-
drivers/net/loopback.c | 20 +-
drivers/net/macsec.c | 49 +-
drivers/net/macvlan.c | 58 ++-
drivers/net/macvtap.c | 5 +-
drivers/net/net_failover.c | 77 ++--
drivers/net/netdevsim/ipsec.c | 4 +-
drivers/net/netdevsim/netdev.c | 15 +-
drivers/net/nlmon.c | 5 +-
drivers/net/ntb_netdev.c | 5 +-
drivers/net/ppp/ppp_generic.c | 2 +-
drivers/net/rionet.c | 3 +-
drivers/net/tap.c | 38 +-
drivers/net/team/team.c | 90 ++--
drivers/net/thunderbolt.c | 10 +-
drivers/net/tun.c | 53 ++-
drivers/net/usb/aqc111.c | 42 +-
drivers/net/usb/ax88179_178a.c | 26 +-
drivers/net/usb/cdc-phonet.c | 2 +-
drivers/net/usb/cdc_mbim.c | 4 +-
drivers/net/usb/lan78xx.c | 46 +-
drivers/net/usb/r8152.c | 71 +--
drivers/net/usb/smsc75xx.c | 14 +-
drivers/net/usb/smsc95xx.c | 19 +-
drivers/net/veth.c | 67 +--
drivers/net/virtio_net.c | 50 ++-
drivers/net/vmxnet3/vmxnet3_drv.c | 75 ++--
drivers/net/vmxnet3/vmxnet3_ethtool.c | 88 ++--
drivers/net/vmxnet3/vmxnet3_int.h | 4 +-
drivers/net/vrf.c | 20 +-
drivers/net/vsockmon.c | 6 +-
drivers/net/vxlan.c | 21 +-
drivers/net/wireguard/device.c | 8 +-
drivers/net/wireless/ath/ath10k/mac.c | 7 +-
drivers/net/wireless/ath/ath11k/mac.c | 4 +-
drivers/net/wireless/ath/ath6kl/main.c | 15 +-
drivers/net/wireless/ath/ath6kl/txrx.c | 6 +-
drivers/net/wireless/ath/wil6210/netdev.c | 11 +-
.../broadcom/brcm80211/brcmfmac/core.c | 4 +-
.../net/wireless/intel/iwlwifi/cfg/22000.c | 4 +-
drivers/net/wireless/intel/iwlwifi/cfg/8000.c | 2 +-
drivers/net/wireless/intel/iwlwifi/cfg/9000.c | 2 +-
.../net/wireless/intel/iwlwifi/dvm/mac80211.c | 7 +-
.../net/wireless/intel/iwlwifi/iwl-config.h | 2 +-
.../net/wireless/intel/iwlwifi/mvm/mac80211.c | 17 +-
drivers/net/wireless/intel/iwlwifi/mvm/rx.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/rxmq.c | 2 +-
drivers/net/wireless/intel/iwlwifi/mvm/tx.c | 10 +-
.../net/wireless/mediatek/mt76/mt7615/init.c | 3 +-
.../net/wireless/mediatek/mt76/mt7915/init.c | 3 +-
.../net/wireless/mediatek/mt76/mt7921/init.c | 3 +-
drivers/net/xen-netback/interface.c | 27 +-
drivers/net/xen-netfront.c | 53 ++-
drivers/s390/net/qeth_core.h | 7 +-
drivers/s390/net/qeth_core_main.c | 139 +++---
drivers/s390/net/qeth_l2_main.c | 44 +-
drivers/s390/net/qeth_l3_main.c | 49 +-
drivers/scsi/fcoe/fcoe.c | 14 +-
drivers/staging/octeon/ethernet.c | 5 +-
drivers/staging/qlge/qlge_main.c | 59 +--
drivers/usb/gadget/function/f_phonet.c | 2 +-
include/linux/if_macvlan.h | 2 +-
include/linux/if_tap.h | 2 +-
include/linux/if_vlan.h | 22 +-
include/linux/netdev_features.h | 181 +++++++-
include/linux/netdevice.h | 122 ++---
include/linux/skbuff.h | 6 +-
include/net/mac80211.h | 2 +-
include/net/pkt_cls.h | 2 +-
include/net/sock.h | 22 +-
include/net/udp.h | 8 +-
include/net/udp_tunnel.h | 12 +-
include/net/vxlan.h | 13 +-
lib/test_bpf.c | 21 +-
lib/vsprintf.c | 4 +-
net/8021q/vlan.c | 11 +-
net/8021q/vlan.h | 24 +-
net/8021q/vlan_core.c | 6 +-
net/8021q/vlan_dev.c | 57 +--
net/batman-adv/soft-interface.c | 5 +-
net/bridge/br_device.c | 21 +-
net/bridge/br_if.c | 19 +-
net/bridge/br_private.h | 3 +-
net/core/dev.c | 420 ++++++++++--------
net/core/netpoll.c | 4 +-
net/core/pktgen.c | 6 +-
net/core/skbuff.c | 10 +-
net/core/skmsg.c | 3 +-
net/core/sock.c | 17 +-
net/dccp/ipv4.c | 2 +-
net/dccp/ipv6.c | 7 +-
net/decnet/af_decnet.c | 2 +-
net/decnet/dn_nsp_out.c | 2 +-
net/dsa/slave.c | 24 +-
net/ethtool/features.c | 94 ++--
net/ethtool/ioctl.c | 158 ++++---
net/hsr/hsr_device.c | 40 +-
net/hsr/hsr_forward.c | 11 +-
net/hsr/hsr_framereg.c | 3 +-
net/hsr/hsr_slave.c | 3 +-
net/ieee802154/6lowpan/core.c | 2 +-
net/ieee802154/core.c | 14 +-
net/ipv4/af_inet.c | 5 +-
net/ipv4/esp4_offload.c | 28 +-
net/ipv4/gre_offload.c | 8 +-
net/ipv4/ip_gre.c | 36 +-
net/ipv4/ip_output.c | 27 +-
net/ipv4/ip_tunnel.c | 4 +-
net/ipv4/ip_vti.c | 2 +-
net/ipv4/ipip.c | 6 +-
net/ipv4/ipmr.c | 2 +-
net/ipv4/tcp.c | 10 +-
net/ipv4/tcp_ipv4.c | 6 +-
net/ipv4/tcp_offload.c | 5 +-
net/ipv4/tcp_output.c | 2 +-
net/ipv4/udp_offload.c | 28 +-
net/ipv6/af_inet6.c | 2 +-
net/ipv6/esp6_offload.c | 19 +-
net/ipv6/inet6_connection_sock.c | 2 +-
net/ipv6/ip6_gre.c | 17 +-
net/ipv6/ip6_offload.c | 3 +-
net/ipv6/ip6_output.c | 24 +-
net/ipv6/ip6_tunnel.c | 9 +-
net/ipv6/ip6mr.c | 2 +-
net/ipv6/sit.c | 9 +-
net/ipv6/tcp_ipv6.c | 2 +-
net/ipv6/udp_offload.c | 2 +-
net/l2tp/l2tp_eth.c | 2 +-
net/mac80211/iface.c | 10 +-
net/mac80211/main.c | 5 +-
net/mpls/mpls_gso.c | 4 +-
net/netfilter/ipvs/ip_vs_proto_sctp.c | 3 +-
net/nsh/nsh.c | 2 +-
net/openvswitch/datapath.c | 5 +-
net/openvswitch/vport-internal_dev.c | 24 +-
net/phonet/pep-gprs.c | 3 +-
net/sched/sch_cake.c | 6 +-
net/sched/sch_netem.c | 6 +-
net/sched/sch_taprio.c | 6 +-
net/sched/sch_tbf.c | 6 +-
net/sctp/offload.c | 12 +-
net/sctp/output.c | 2 +-
net/sunrpc/sunrpc.h | 2 +-
net/tls/tls_device.c | 10 +-
net/wireless/core.c | 14 +-
net/xfrm/xfrm_device.c | 31 +-
net/xfrm/xfrm_interface.c | 6 +-
net/xfrm/xfrm_output.c | 4 +-
424 files changed, 6584 insertions(+), 4459 deletions(-)
--
2.33.0
1 year
[PATCH net-next v6] page_pool: disable dma mapping support for 32-bit arch with 64-bit DMA
by Yunsheng Lin
As the 32-bit arch with 64-bit DMA seems to rare those days,
and page pool might carry a lot of code and complexity for
systems that possibly.
So disable dma mapping support for such systems, if drivers
really want to work on such systems, they have to implement
their own DMA-mapping fallback tracking outside page_pool.
Reviewed-by: Ilias Apalodimas <ilias.apalodimas(a)linaro.org>
Signed-off-by: Yunsheng Lin <linyunsheng(a)huawei.com>
---
V6: Drop pp page tracking support
---
include/linux/mm_types.h | 13 +------------
include/net/page_pool.h | 12 +-----------
net/core/page_pool.c | 10 ++++++----
3 files changed, 8 insertions(+), 27 deletions(-)
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h
index 7f8ee09c711f..436e0946d691 100644
--- a/include/linux/mm_types.h
+++ b/include/linux/mm_types.h
@@ -104,18 +104,7 @@ struct page {
struct page_pool *pp;
unsigned long _pp_mapping_pad;
unsigned long dma_addr;
- union {
- /**
- * dma_addr_upper: might require a 64-bit
- * value on 32-bit architectures.
- */
- unsigned long dma_addr_upper;
- /**
- * For frag page support, not supported in
- * 32-bit architectures with 64-bit DMA.
- */
- atomic_long_t pp_frag_count;
- };
+ atomic_long_t pp_frag_count;
};
struct { /* slab, slob and slub */
union {
diff --git a/include/net/page_pool.h b/include/net/page_pool.h
index a4082406a003..3855f069627f 100644
--- a/include/net/page_pool.h
+++ b/include/net/page_pool.h
@@ -216,24 +216,14 @@ static inline void page_pool_recycle_direct(struct page_pool *pool,
page_pool_put_full_page(pool, page, true);
}
-#define PAGE_POOL_DMA_USE_PP_FRAG_COUNT \
- (sizeof(dma_addr_t) > sizeof(unsigned long))
-
static inline dma_addr_t page_pool_get_dma_addr(struct page *page)
{
- dma_addr_t ret = page->dma_addr;
-
- if (PAGE_POOL_DMA_USE_PP_FRAG_COUNT)
- ret |= (dma_addr_t)page->dma_addr_upper << 16 << 16;
-
- return ret;
+ return page->dma_addr;
}
static inline void page_pool_set_dma_addr(struct page *page, dma_addr_t addr)
{
page->dma_addr = addr;
- if (PAGE_POOL_DMA_USE_PP_FRAG_COUNT)
- page->dma_addr_upper = upper_32_bits(addr);
}
static inline void page_pool_set_frag_count(struct page *page, long nr)
diff --git a/net/core/page_pool.c b/net/core/page_pool.c
index 1a6978427d6c..9b60e4301a44 100644
--- a/net/core/page_pool.c
+++ b/net/core/page_pool.c
@@ -49,6 +49,12 @@ static int page_pool_init(struct page_pool *pool,
* which is the XDP_TX use-case.
*/
if (pool->p.flags & PP_FLAG_DMA_MAP) {
+ /* DMA-mapping is not supported on 32-bit systems with
+ * 64-bit DMA mapping.
+ */
+ if (sizeof(dma_addr_t) > sizeof(unsigned long))
+ return -EOPNOTSUPP;
+
if ((pool->p.dma_dir != DMA_FROM_DEVICE) &&
(pool->p.dma_dir != DMA_BIDIRECTIONAL))
return -EINVAL;
@@ -69,10 +75,6 @@ static int page_pool_init(struct page_pool *pool,
*/
}
- if (PAGE_POOL_DMA_USE_PP_FRAG_COUNT &&
- pool->p.flags & PP_FLAG_PAGE_FRAG)
- return -EINVAL;
-
if (ptr_ring_init(&pool->ring, ring_qsize, GFP_KERNEL) < 0)
return -ENOMEM;
--
2.33.0
1 year, 2 months
[PATCH v5 1/1] RDMA/hns: Add a new mmap implementation
by Chengchang Tang
Add a new implementation for mmap by using the new mmap entry API.
Signed-off-by: Chengchang Tang <tangchengchang(a)huawei.com>
Signed-off-by: Wenpeng Liang <liangwenpeng(a)huawei.com>
---
drivers/infiniband/hw/hns/hns_roce_device.h | 24 +++++
drivers/infiniband/hw/hns/hns_roce_main.c | 139 ++++++++++++++++++++++------
include/rdma/ib_verbs.h | 8 ++
3 files changed, 145 insertions(+), 26 deletions(-)
diff --git a/drivers/infiniband/hw/hns/hns_roce_device.h b/drivers/infiniband/hw/hns/hns_roce_device.h
index 9467c39..07dc05c 100644
--- a/drivers/infiniband/hw/hns/hns_roce_device.h
+++ b/drivers/infiniband/hw/hns/hns_roce_device.h
@@ -225,11 +225,25 @@ struct hns_roce_uar {
unsigned long logic_idx;
};
+enum hns_roce_mmap_type {
+ HNS_ROCE_MMAP_TYPE_DB = 1,
+ HNS_ROCE_MMAP_TYPE_TPTR,
+};
+
+struct hns_user_mmap_entry {
+ struct rdma_user_mmap_entry rdma_entry;
+ u64 address;
+ enum hns_roce_mmap_type mmap_type;
+};
+
struct hns_roce_ucontext {
struct ib_ucontext ibucontext;
struct hns_roce_uar uar;
struct list_head page_list;
struct mutex page_mutex;
+ bool mmap_key_support;
+ struct hns_user_mmap_entry *db_mmap_entry;
+ struct hns_user_mmap_entry *tptr_mmap_entry;
};
struct hns_roce_pd {
@@ -1049,6 +1063,12 @@ static inline struct hns_roce_srq *to_hr_srq(struct ib_srq *ibsrq)
return container_of(ibsrq, struct hns_roce_srq, ibsrq);
}
+static inline struct hns_user_mmap_entry *to_hns_mmap(
+ struct rdma_user_mmap_entry *rdma_entry)
+{
+ return container_of(rdma_entry, struct hns_user_mmap_entry, rdma_entry);
+}
+
static inline void hns_roce_write64_k(__le32 val[2], void __iomem *dest)
{
writeq(*(u64 *)val, dest);
@@ -1259,4 +1279,8 @@ int hns_roce_init(struct hns_roce_dev *hr_dev);
void hns_roce_exit(struct hns_roce_dev *hr_dev);
int hns_roce_fill_res_cq_entry(struct sk_buff *msg,
struct ib_cq *ib_cq);
+struct hns_user_mmap_entry *hns_roce_user_mmap_entry_insert(
+ struct ib_ucontext *ucontext,
+ u64 address, size_t length,
+ enum hns_roce_mmap_type mmap_type);
#endif /* _HNS_ROCE_DEVICE_H */
diff --git a/drivers/infiniband/hw/hns/hns_roce_main.c b/drivers/infiniband/hw/hns/hns_roce_main.c
index 5d39bd0..a6d2960 100644
--- a/drivers/infiniband/hw/hns/hns_roce_main.c
+++ b/drivers/infiniband/hw/hns/hns_roce_main.c
@@ -291,6 +291,76 @@ static int hns_roce_modify_device(struct ib_device *ib_dev, int mask,
return 0;
}
+struct hns_user_mmap_entry *hns_roce_user_mmap_entry_insert(
+ struct ib_ucontext *ucontext,
+ u64 address, size_t length,
+ enum hns_roce_mmap_type mmap_type)
+{
+ struct hns_user_mmap_entry *entry;
+ int ret;
+
+ entry = kzalloc(sizeof(*entry), GFP_KERNEL);
+ if (!entry)
+ return NULL;
+
+ entry->address = address;
+ entry->mmap_type = mmap_type;
+
+ ret = rdma_user_mmap_entry_insert_exact(
+ ucontext, &entry->rdma_entry, length,
+ mmap_type == HNS_ROCE_MMAP_TYPE_DB ? 0 : 1);
+ if (ret) {
+ kfree(entry);
+ return NULL;
+ }
+
+ return entry;
+}
+
+static void hns_roce_dealloc_uar_entry(struct hns_roce_ucontext *context)
+{
+ if (context->db_mmap_entry)
+ rdma_user_mmap_entry_remove(
+ &context->db_mmap_entry->rdma_entry);
+
+ if (context->tptr_mmap_entry)
+ rdma_user_mmap_entry_remove(
+ &context->tptr_mmap_entry->rdma_entry);
+}
+
+static int hns_roce_alloc_uar_entry(struct ib_ucontext *uctx)
+{
+ struct hns_roce_ucontext *context = to_hr_ucontext(uctx);
+ struct hns_roce_dev *hr_dev = to_hr_dev(uctx->device);
+ u64 address;
+ int ret;
+
+ address = context->uar.pfn << PAGE_SHIFT;
+ context->db_mmap_entry =
+ hns_roce_user_mmap_entry_insert(uctx, address, PAGE_SIZE,
+ HNS_ROCE_MMAP_TYPE_DB);
+ if (!context->db_mmap_entry)
+ return -ENOMEM;
+
+ if (!hr_dev->tptr_dma_addr || !hr_dev->tptr_size)
+ return 0;
+
+ context->tptr_mmap_entry =
+ hns_roce_user_mmap_entry_insert(uctx, hr_dev->tptr_dma_addr,
+ hr_dev->tptr_size,
+ HNS_ROCE_MMAP_TYPE_TPTR);
+ if (!context->tptr_mmap_entry) {
+ ret = -ENOMEM;
+ goto err;
+ }
+
+ return 0;
+
+err:
+ hns_roce_dealloc_uar_entry(context);
+ return ret;
+}
+
static int hns_roce_alloc_ucontext(struct ib_ucontext *uctx,
struct ib_udata *udata)
{
@@ -309,6 +379,10 @@ static int hns_roce_alloc_ucontext(struct ib_ucontext *uctx,
if (ret)
goto error_fail_uar_alloc;
+ ret = hns_roce_alloc_uar_entry(uctx);
+ if (ret)
+ goto error_fail_uar_entry;
+
if (hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_CQ_RECORD_DB ||
hr_dev->caps.flags & HNS_ROCE_CAP_FLAG_QP_RECORD_DB) {
INIT_LIST_HEAD(&context->page_list);
@@ -325,6 +399,9 @@ static int hns_roce_alloc_ucontext(struct ib_ucontext *uctx,
return 0;
error_fail_copy_to_udata:
+ hns_roce_dealloc_uar_entry(context);
+
+error_fail_uar_entry:
ida_free(&hr_dev->uar_ida.ida, (int)context->uar.logic_idx);
error_fail_uar_alloc:
@@ -336,39 +413,48 @@ static void hns_roce_dealloc_ucontext(struct ib_ucontext *ibcontext)
struct hns_roce_ucontext *context = to_hr_ucontext(ibcontext);
struct hns_roce_dev *hr_dev = to_hr_dev(ibcontext->device);
+ hns_roce_dealloc_uar_entry(context);
+
ida_free(&hr_dev->uar_ida.ida, (int)context->uar.logic_idx);
}
-static int hns_roce_mmap(struct ib_ucontext *context,
- struct vm_area_struct *vma)
+static int hns_roce_mmap(struct ib_ucontext *uctx, struct vm_area_struct *vma)
{
- struct hns_roce_dev *hr_dev = to_hr_dev(context->device);
-
- switch (vma->vm_pgoff) {
- case 0:
- return rdma_user_mmap_io(context, vma,
- to_hr_ucontext(context)->uar.pfn,
- PAGE_SIZE,
- pgprot_noncached(vma->vm_page_prot),
- NULL);
-
- /* vm_pgoff: 1 -- TPTR */
- case 1:
- if (!hr_dev->tptr_dma_addr || !hr_dev->tptr_size)
- return -EINVAL;
- /*
- * FIXME: using io_remap_pfn_range on the dma address returned
- * by dma_alloc_coherent is totally wrong.
- */
- return rdma_user_mmap_io(context, vma,
- hr_dev->tptr_dma_addr >> PAGE_SHIFT,
- hr_dev->tptr_size,
- vma->vm_page_prot,
- NULL);
+ struct hns_roce_dev *hr_dev = to_hr_dev(uctx->device);
+ struct ib_device *ibdev = &hr_dev->ib_dev;
+ struct rdma_user_mmap_entry *rdma_entry;
+ struct hns_user_mmap_entry *entry;
+ phys_addr_t pfn;
+ pgprot_t prot;
+ int ret;
- default:
+ rdma_entry = rdma_user_mmap_entry_get_pgoff(uctx, vma->vm_pgoff);
+ if (!rdma_entry) {
+ ibdev_err(ibdev, "Invalid entry vm_pgoff %lu.\n",
+ vma->vm_pgoff);
return -EINVAL;
}
+
+ entry = to_hns_mmap(rdma_entry);
+ pfn = entry->address >> PAGE_SHIFT;
+ prot = vma->vm_page_prot;
+
+ if (entry->mmap_type != HNS_ROCE_MMAP_TYPE_TPTR)
+ prot = pgprot_noncached(prot);
+
+ ret = rdma_user_mmap_io(uctx, vma, pfn, rdma_entry->npages * PAGE_SIZE,
+ prot, rdma_entry);
+
+ rdma_user_mmap_entry_put(rdma_entry);
+
+ return ret;
+}
+
+static void hns_roce_free_mmap(struct rdma_user_mmap_entry *rdma_entry)
+{
+ struct hns_user_mmap_entry *entry = to_hns_mmap(rdma_entry);
+
+ kfree(entry);
}
static int hns_roce_port_immutable(struct ib_device *ib_dev, u32 port_num,
@@ -444,6 +530,7 @@ static const struct ib_device_ops hns_roce_dev_ops = {
.get_link_layer = hns_roce_get_link_layer,
.get_port_immutable = hns_roce_port_immutable,
.mmap = hns_roce_mmap,
+ .mmap_free = hns_roce_free_mmap,
.modify_device = hns_roce_modify_device,
.modify_qp = hns_roce_modify_qp,
.query_ah = hns_roce_query_ah,
diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h
index 4b50d9a..e98329a 100644
--- a/include/rdma/ib_verbs.h
+++ b/include/rdma/ib_verbs.h
@@ -2906,6 +2906,14 @@ int rdma_user_mmap_entry_insert_range(struct ib_ucontext *ucontext,
size_t length, u32 min_pgoff,
u32 max_pgoff);
+static inline int rdma_user_mmap_entry_insert_exact(struct ib_ucontext *ucontext,
+ struct rdma_user_mmap_entry *entry,
+ size_t length, u32 pgoff)
+{
+ return rdma_user_mmap_entry_insert_range(ucontext, entry, length,
+ pgoff, pgoff);
+}
+
struct rdma_user_mmap_entry *
rdma_user_mmap_entry_get_pgoff(struct ib_ucontext *ucontext,
unsigned long pgoff);
--
2.9.5
1 year, 3 months
[linuxarm][PATCH v5 0/1] Add new mmap implementation
by Chengchang Tang
This patch add new mmap implementation for hns RDMA.
Changes in v5:
==============
- Remove uAPI relative stuff
- Remove userspace implementation
Chengchang Tang (1):
RDMA/hns: Add a new mmap implementation
drivers/infiniband/hw/hns/hns_roce_device.h | 24 +++++
drivers/infiniband/hw/hns/hns_roce_main.c | 139 ++++++++++++++++++++++------
include/rdma/ib_verbs.h | 8 ++
3 files changed, 145 insertions(+), 26 deletions(-)
--
2.9.5
1 year, 3 months
[PATCH 4/4] rasdaemon: Add some modules supported by hisi common error section
by Xiaofei Tan
Add some modules supported by hisi common error section. Besides,
HHA is the module for some old platform, and it takes the same place
of MATA, so remove it.
Signed-off-by: Xiaofei Tan <tanxiaofei(a)huawei.com>
---
non-standard-hisilicon.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/non-standard-hisilicon.c b/non-standard-hisilicon.c
index f9c7bd4..1432163 100644
--- a/non-standard-hisilicon.c
+++ b/non-standard-hisilicon.c
@@ -184,7 +184,11 @@ static const char* module_name[] = {
"SEC",
"RDE",
"MEE",
- "HHA",
+ "L4D",
+ "Tsensor",
+ "ROH",
+ "BTC",
+ "HILINK"
};
static const char* get_soc_desc(uint8_t soc_id)
--
2.33.0
1 year, 3 months
[PATCH 1/4] rasdaemon: Fix the issue of sprintf data type mismatch in uuid_le()
by Xiaofei Tan
The data type of sprintf called in the function uuid_le() is mismatch.
Arm64 compiler force it to unsigned char by default, and can work normally.
But if someone compile it with the option -fsigned-char, the function
can't work correctly.
Signed-off-by: Xiaofei Tan <tanxiaofei(a)huawei.com>
---
ras-extlog-handler.c | 2 +-
ras-non-standard-handler.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/ras-extlog-handler.c b/ras-extlog-handler.c
index 5fd3580..1834687 100644
--- a/ras-extlog-handler.c
+++ b/ras-extlog-handler.c
@@ -152,7 +152,7 @@ static char *uuid_le(const char *uu)
static const unsigned char le[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15};
for (i = 0; i < 16; i++) {
- p += sprintf(p, "%.2x", uu[le[i]]);
+ p += sprintf(p, "%.2x", (unsigned char) uu[le[i]]);
switch (i) {
case 3:
case 5:
diff --git a/ras-non-standard-handler.c b/ras-non-standard-handler.c
index 6ccf5bc..6d5a6f8 100644
--- a/ras-non-standard-handler.c
+++ b/ras-non-standard-handler.c
@@ -36,7 +36,7 @@ static char *uuid_le(const char *uu)
static const unsigned char le[16] = {3,2,1,0,5,4,7,6,8,9,10,11,12,13,14,15};
for (i = 0; i < 16; i++) {
- p += sprintf(p, "%.2x", uu[le[i]]);
+ p += sprintf(p, "%.2x", (unsigned char) uu[le[i]]);
switch (i) {
case 3:
case 5:
@@ -61,7 +61,7 @@ static int uuid_le_cmp(const char *sec_type, const char *uuid2)
3, 2, 1, 0, 5, 4, 7, 6, 8, 9, 10, 11, 12, 13, 14, 15};
for (i = 0; i < 16; i++)
- p += sprintf(p, "%.2x", sec_type[le[i]]);
+ p += sprintf(p, "%.2x", (unsigned char) sec_type[le[i]]);
*p = 0;
return strncmp(uuid1, uuid2, 32);
}
--
2.33.0
1 year, 3 months
Re:
by Vany
Dear Sir/Madam,
I am contacting you to know if you are open for Investors into your company or
business as we have potential investors who are willing and able to provide financial support to companies,
corporate Organizations and private Business Owners for business expansion.
We also pay 1% commission to individuals who direct clients to us for financing.
Kindly respond accordingly if you have interest for possible corporation.
Regards,
Vany Ego
Email: md.riahimi(a)gmail.com
1 year, 3 months
[PATCH] Revert "iommu/arm-smmu-v3: Decrease the queue size of evtq and priq"
by Zhou Wang
The commit f115f3c0d5d8 decreases evtq and priq, which may lead
evtq/priq to be full with fault events, e.g HiSilicon ZIP/SEC/HPRE have
maximum 1024 queues in one device, every queue could be binded with one
process and trigger a fault event. So let's revert f115f3c0d5d8.
In fact, if an implementation of SMMU really does not need so long evtq
and priq, value of IDR1_EVTQS and IDR1_PRIQS can be set to proper ones.
Signed-off-by: Zhou Wang <wangzhou1(a)hisilicon.com>
---
drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
index 4cb136f..cd48590 100644
--- a/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
+++ b/drivers/iommu/arm/arm-smmu-v3/arm-smmu-v3.h
@@ -184,7 +184,6 @@
#else
#define Q_MAX_SZ_SHIFT (PAGE_SHIFT + MAX_ORDER - 1)
#endif
-#define Q_MIN_SZ_SHIFT (PAGE_SHIFT)
/*
* Stream table.
@@ -374,7 +373,7 @@
/* Event queue */
#define EVTQ_ENT_SZ_SHIFT 5
#define EVTQ_ENT_DWORDS ((1 << EVTQ_ENT_SZ_SHIFT) >> 3)
-#define EVTQ_MAX_SZ_SHIFT (Q_MIN_SZ_SHIFT - EVTQ_ENT_SZ_SHIFT)
+#define EVTQ_MAX_SZ_SHIFT (Q_MAX_SZ_SHIFT - EVTQ_ENT_SZ_SHIFT)
#define EVTQ_0_ID GENMASK_ULL(7, 0)
@@ -400,7 +399,7 @@
/* PRI queue */
#define PRIQ_ENT_SZ_SHIFT 4
#define PRIQ_ENT_DWORDS ((1 << PRIQ_ENT_SZ_SHIFT) >> 3)
-#define PRIQ_MAX_SZ_SHIFT (Q_MIN_SZ_SHIFT - PRIQ_ENT_SZ_SHIFT)
+#define PRIQ_MAX_SZ_SHIFT (Q_MAX_SZ_SHIFT - PRIQ_ENT_SZ_SHIFT)
#define PRIQ_0_SID GENMASK_ULL(31, 0)
#define PRIQ_0_SSID GENMASK_ULL(51, 32)
--
2.8.1
1 year, 3 months