true
     �_’I|¥‰ÓMjqØ‚¦ð¬÷À¿      File not found.
  1   ˆl–Ðz¾”ªe¶…8 ^¸\iå1hßÂƒŽ_�uÐb&=LyZof¯ÂÁ 
f    ‹     µYûWÛFþÝÅ]wÙË ¥4pÖ1¦ø,Û¥éVm�¥‘­F¯H#w³ùÛ÷»£‡e „Ý¶>ÇX3÷ÎwïÜ×ÜºQ§~*Cß”®ezÞš"±)…Mó5�CûèèµÐ¾ÞÝ§†N]?òíéû½fM7êü¥©4ÛŒmŠbaúsO©éã?éSÓmAÓˆ y-b¥*%‘i	j¬–" • Ë4Ii"H�¡˜ë�$=‰H?¸U£€G5]WX×sÆz%n@·"žcû>IñAÖtGÒàÇš8ø
2Œ¿wËE‚û�%üu#[C@“ˆ’Ð‡^K36-)b’±$–…AB0ÛÊŽÀÖ‰ŒÝ`‘èDÆóF«E+×óÔÂ½`¦4˜Ã²ïL˜–l3Yî2ãx¤3¦ÈUsõÊœIžp¤²Ã”×¾OC)v•x0O¶™cw±”[œ™Bƒ�»
QàZØÒ`g3r%<‚í.Lrö‚M2Ò=½…ÚºB’K'Œ­BöÝ¸·¦ë1o.÷¦Pt ‘øñ °7ÁmA:Î®B
B¹„ùxVªY¬Š…•+—4xy¿È˜ŒÆó[peÅi`Üj-½{«K­Õ�4#iõvòç#é€\¡"„BÈø·QƒnDÀ€›rÀ|îˆÜl„xkAC??ÞO›Ï]ÿ¸‡Ò7Ën/ÕªÏ-ö“‹ý‡Ôí KZËÏÂu‡;ÌÐJ¸^Ë&õz9šl�`öêHã‘6��ÿÔtáÝµÀG£!|ãcÕÐ!ª
º¹©
Ò´Š Š”BD^Q†‰eF‚øµÆ„ì¹È%Nÿ,cÈ‰CŸìu-¡–!2U¥bÀ×•ßØte­þ{hg¾ç�PöÉgµRðÈáÈ¤3ŠQN\DôIgEFãTÉë#t±Åô€fa �lÇzYx»Ò¡¡ÏÎ›»´&¨<œò0Iç‰°²R€©)¦°/Ÿ£¨™å§  
!¾¿Cf© ~óò„Í1¾:…	¯²Â4N�Ùë0e5—&Ò¹Å¡%’„·¤ ÂTF©d.p{C¨2å3€=�Ô#i
ÅôÒ"ýÛÐ…T3fŽŠÁÉœ)^T±ÒbÚ™–•ÌÑUƒ˜â3ê¨:œ;O˜Ê)]Eá�ÏŽT¤/Ž�;Íæ&ßÔÂ³ÍX…M†_¥O#6Ù×lCFðµ!ëôêJ‰‚PÖñqoŽ?PçkÖóÎÜõ6s¤Å/cÞÂÆX–w)W‘²‹›{ù�¯š~¢›–E]ý€Û�^»sHÓ×£ï2£þ0x…ƒ¶×Ì‘3aÆ�3Iü�²;§a|ry‹[øÞ¢«ò™±Lò}b½“ÚgZ2DÜqA2§qå§üT¬&ôWçÅæypMú¡¿Â[{•áÏd8ÝÍðÇ™AÔÑ{¶Ñè¦­†�œë¤_÷Òfó¹ÞÝó›[ò^lÉëlI{¶%ìY&+ßl’5%¦2þSw«U1oªƒ_«ƒÝêà}*ŸÛŸÙ.p�wG\…j»«ôùa»Ûiáûê¼©8SêA9JëUñ�®¹)[£Uµ¼»¦Ûiw»Å¢_X³û°œ¦¶û ó§{Ì4ŽM¿©}z`EûÛøÝh$^u]Å‡²tXÃ6ÝdÝBk'¼fáÈÌµêô>zLÊ”Ûá§3ÈÃÏ�×�¬ƒ_ïå$Mß(¦ŒGa(
ˆÏÒ9ÉFŠÞ“¼c¬Àh-·M³ÝS�-}/P8?ó¦mÁíÏlÄ‚ö‹µ[U™‘­d®´OZÔ;ð5Ãé�å9Æ@jf[³Ó�ºañi±¸Ûõ•Ù±–š®¯UÍoóÉ@™š¬ ¨ÉNw„^¨›í!“Ó âHKŸ÷Ú{Mn”º!³mv0+0’�/îåZðš½ö�V`……�r¥‰¤-$˜àÞWÁ(­/¨_Ðú%mXŒÆqqˆrÆß–y~«ŽõûáûüÛj0²žé'Ãf­«F)¾”`j[û>ÛÚß¶lQ…¡—®p4&¡—²®8¸dãD°b©ÂÝ‹âfy4žŸôö¨\Ÿt¿%£V-.G$ÊçCJ’r’Y>#¢TuO‹Í´Š‘|z¹.§9BmmÒx¦f.Æ›öÓF0{f˜Ÿ~>gTdyTpTíÁŸ|õãƒuô†fÜOQ}x=~;�Ï‡“ÖåôM˜$8fçô ‰ê½NïE«Ómõ¾A—»§èø½ŠD0�^dgöYq\ì’Lã€¸Þü–&ÒupÓdŸaß}oe®“}¹ŽpóTÔïÐ»áÀ'…>t^!f‚5ùhˆ˜¢î&ÂZêîj‡Vês9Ó‹«©‰0@Ÿ„}zNõËþëa½¶Ù�‘mÈhÁ3‚Ôó†Hêìc8¥M†p:œ&£ñltu™™ï\5 wÓ4ŠBD!G©IœØŒ�Ë%kßè:-4ŸV¼ŽTä¦Ü�«îØp^1wEC\˜œ‰‚è�G:†µÙ�sqT×tµ³‹)Ë°\˜0F/ìr;�¤·¬ÃÛG³óì‰ÿl íÆÂªZöªAÄ=2Ë°Mi6Uj-M„.<a¡Cø]Àqô»ˆCX}:¥zß[„1ziŸ.M_dfš–�ù}:ÛÞ	=¤3›Á,©Ðª¼¸*?³
Â1SOrÿ}ëÂðGùR�q�ª¦æ§N�öÕ…DÑnn
š¦4è5Âí qÁK2åÇf¥Ðl'÷¯Ò2/lE,®Üžk³£¨\mÇãšáŒ¾RªmÝóv…Ž¿§B¹°§QUeàO…ÈÞX<MŠz]ó"ö˜g˜À60>6öš_Ðúí`öæÿÒœnk_õå;±öDP¯ãþ’eÅ
K±rÜŸô_¿ýçð§‹áe–#Mz™‰»à“H±ñÉ�È5í�"–q“Rãs8"Àš§êÎVÙ«{û¥­Ž®K½T¾ü,gØ?­²?Á0Jü£vùÄ—VTÒ2¢BÉÄ=&ç3V®ÚWzIÕêQs‰|Ý”Z‡–(4òžµr°Gíõ°rï9ÖC»Ï!¶sðl'9ËW†³ádª²™“ñÑ„V““ÆüªœüF';�‹LŸþ‘LŸþ¯™ž¡ÅgÉS\ôv:ú×ðÉÁ]EŠÏž‚~×
ü'*ÌÏUƒ¿Î™Ü±®.Ï®&¯G—ßÓìj»g¹C2ž±øÉÙ€zû/T·’¹Ôh½Ð{úžÞÍ§Ã!õ/¦wÀ6³Àq^´ÑÊÚ‘LÛoš»¼e§ñäêztÊMX~¨,…ÞãŸ&£ïÏgwu.§a´Î^­£ÝS-\Þ~Ò8ƒîü?˜e':ÚL�&Ì›ÐDðÛagÁ~�;CÀ�¿n‹ÕÉÝ�L?9…zz‡ªÅbå³Ê5Mô¯?…)ú 5¿+çŽ¬&¹/p\D¿ø`‰H²ï¬}‚kVþâ\nÐsËD÷;—&˜Mî¸Öµ¼ßQHì–‹Ñ`x9æÑÀ¤$Lc Ú.¿²�gw î7eíåRÊ(9j·W«•Â$è×õ0^´³%m/—½”¾w¢×þ4h×x­    7   ˆl–Ü4ý( ©³( 	Å€fàB¦-ÿÄ0a–Ðz¾””ÔD¨ 	Å Œ·q—Å£Ã     	ˆ¿Åƒu 9_†I|¥�+¿Ä î    	/* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
/*
 * Copyright (c) 2007 Cisco Systems.  All rights reserved.
 * Copyright (c) 2020 Intel Corporation.  All rights reserved.
 */

#ifndef IB_UMEM_H
#define IB_UMEM_H

#include <linux/list.h>
#include <linux/scatterlist.h>
#include <linux/workqueue.h>
#include <rdma/ib_verbs.h>

struct ib_ucontext;
struct ib_umem_odp;
struct dma_buf_attach_ops;

struct ib_umem {
	struct ib_device       *ibdev;
	struct mm_struct       *owning_mm;
	u64 iova;
	size_t			length;
	unsigned long		address;
	u32 writable : 1;
	u32 is_odp : 1;
	u32 is_dmabuf : 1;
	struct sg_append_table sgt_append;
};

struct ib_umem_dmabuf {
	struct ib_umem umem;
	struct dma_buf_attachment *attach;
	struct sg_table *sgt;
	struct scatterlist *first_sg;
	struct scatterlist *last_sg;
	unsigned long first_sg_offset;
	unsigned long last_sg_trim;
	void *private;
	u8 pinned : 1;
	u8 revoked : 1;
};

static inline struct ib_umem_dmabuf *to_ib_umem_dmabuf(struct ib_umem *umem)
{
	return container_of(umem, struct ib_umem_dmabuf, umem);
}

/* Returns the offset of the umem start relative to the first page. */
static inline int ib_umem_offset(struct ib_umem *umem)
{
	return umem->addres