From: kbuild test robot <lkp@intel.com>
To: "Liu, Yi L" <yi.l.liu@intel.com>
Cc: jean-philippe@linaro.org, kevin.tian@intel.com,
kbuild-all@lists.01.org, ashok.raj@intel.com,
kvm@vger.kernel.org, iommu@lists.linux-foundation.org,
yi.y.sun@intel.com, linux-kernel@vger.kernel.org,
alex.williamson@redhat.com, jun.j.tian@intel.com,
hao.wu@intel.com
Subject: Re: [PATCH v1 2/8] vfio/type1: Add vfio_iommu_type1 parameter for quota tuning
Date: Mon, 23 Mar 2020 01:20:56 +0800 [thread overview]
Message-ID: <202003230148.4Wl4xvVM%lkp@intel.com> (raw)
In-Reply-To: <1584880325-10561-3-git-send-email-yi.l.liu@intel.com>
[-- Attachment #1: Type: text/plain, Size: 7135 bytes --]
Hi Yi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on vfio/next]
[also build test ERROR on v5.6-rc6 next-20200320]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Liu-Yi-L/vfio-expose-virtual-Shared-Virtual-Addressing-to-VMs/20200322-213259
base: https://github.com/awilliam/linux-vfio.git next
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/vfio/vfio.c: In function 'vfio_create_mm':
drivers/vfio/vfio.c:2149:8: error: implicit declaration of function 'ioasid_alloc_set'; did you mean 'ioasid_alloc'? [-Werror=implicit-function-declaration]
2149 | ret = ioasid_alloc_set((struct ioasid_set *) mm,
| ^~~~~~~~~~~~~~~~
| ioasid_alloc
drivers/vfio/vfio.c:2158:13: warning: assignment to 'long long unsigned int' from 'struct mm_struct *' makes integer from pointer without a cast [-Wint-conversion]
2158 | token->val = mm;
| ^
drivers/vfio/vfio.c: In function 'vfio_mm_unlock_and_free':
drivers/vfio/vfio.c:2170:2: error: implicit declaration of function 'ioasid_free_set'; did you mean 'ioasid_free'? [-Werror=implicit-function-declaration]
2170 | ioasid_free_set(vmm->ioasid_sid, true);
| ^~~~~~~~~~~~~~~
| ioasid_free
drivers/vfio/vfio.c: In function 'vfio_mm_pasid_alloc':
>> drivers/vfio/vfio.c:2230:3: error: implicit declaration of function 'ioasid_adjust_set' [-Werror=implicit-function-declaration]
2230 | ioasid_adjust_set(vmm->ioasid_sid, quota);
| ^~~~~~~~~~~~~~~~~
drivers/vfio/vfio.c:2233:26: warning: passing argument 1 of 'ioasid_alloc' makes pointer from integer without a cast [-Wint-conversion]
2233 | pasid = ioasid_alloc(vmm->ioasid_sid, min, max, NULL);
| ~~~^~~~~~~~~~~~
| |
| int
In file included from include/linux/iommu.h:16,
from drivers/vfio/vfio.c:20:
include/linux/ioasid.h:45:56: note: expected 'struct ioasid_set *' but argument is of type 'int'
45 | static inline ioasid_t ioasid_alloc(struct ioasid_set *set, ioasid_t min,
| ~~~~~~~~~~~~~~~~~~~^~~
drivers/vfio/vfio.c: In function 'vfio_mm_pasid_free':
drivers/vfio/vfio.c:2252:25: warning: passing argument 1 of 'ioasid_find' makes pointer from integer without a cast [-Wint-conversion]
2252 | pdata = ioasid_find(vmm->ioasid_sid, pasid, NULL);
| ~~~^~~~~~~~~~~~
| |
| int
In file included from include/linux/iommu.h:16,
from drivers/vfio/vfio.c:20:
include/linux/ioasid.h:55:52: note: expected 'struct ioasid_set *' but argument is of type 'int'
55 | static inline void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
| ~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
vim +/ioasid_adjust_set +2230 drivers/vfio/vfio.c
2133
2134 /**
2135 * VFIO_MM objects - create, release, get, put, search
2136 * Caller of the function should have held vfio.vfio_mm_lock.
2137 */
2138 static struct vfio_mm *vfio_create_mm(struct mm_struct *mm)
2139 {
2140 struct vfio_mm *vmm;
2141 struct vfio_mm_token *token;
2142 int ret = 0;
2143
2144 vmm = kzalloc(sizeof(*vmm), GFP_KERNEL);
2145 if (!vmm)
2146 return ERR_PTR(-ENOMEM);
2147
2148 /* Per mm IOASID set used for quota control and group operations */
2149 ret = ioasid_alloc_set((struct ioasid_set *) mm,
2150 VFIO_DEFAULT_PASID_QUOTA, &vmm->ioasid_sid);
2151 if (ret) {
2152 kfree(vmm);
2153 return ERR_PTR(ret);
2154 }
2155
2156 kref_init(&vmm->kref);
2157 token = &vmm->token;
> 2158 token->val = mm;
2159 vmm->pasid_quota = VFIO_DEFAULT_PASID_QUOTA;
2160 mutex_init(&vmm->pasid_lock);
2161
2162 list_add(&vmm->vfio_next, &vfio.vfio_mm_list);
2163
2164 return vmm;
2165 }
2166
2167 static void vfio_mm_unlock_and_free(struct vfio_mm *vmm)
2168 {
2169 /* destroy the ioasid set */
2170 ioasid_free_set(vmm->ioasid_sid, true);
2171 mutex_unlock(&vfio.vfio_mm_lock);
2172 kfree(vmm);
2173 }
2174
2175 /* called with vfio.vfio_mm_lock held */
2176 static void vfio_mm_release(struct kref *kref)
2177 {
2178 struct vfio_mm *vmm = container_of(kref, struct vfio_mm, kref);
2179
2180 list_del(&vmm->vfio_next);
2181 vfio_mm_unlock_and_free(vmm);
2182 }
2183
2184 void vfio_mm_put(struct vfio_mm *vmm)
2185 {
2186 kref_put_mutex(&vmm->kref, vfio_mm_release, &vfio.vfio_mm_lock);
2187 }
2188 EXPORT_SYMBOL_GPL(vfio_mm_put);
2189
2190 /* Assume vfio_mm_lock or vfio_mm reference is held */
2191 static void vfio_mm_get(struct vfio_mm *vmm)
2192 {
2193 kref_get(&vmm->kref);
2194 }
2195
2196 struct vfio_mm *vfio_mm_get_from_task(struct task_struct *task)
2197 {
2198 struct mm_struct *mm = get_task_mm(task);
2199 struct vfio_mm *vmm;
2200 unsigned long long val = (unsigned long long) mm;
2201
2202 mutex_lock(&vfio.vfio_mm_lock);
2203 list_for_each_entry(vmm, &vfio.vfio_mm_list, vfio_next) {
2204 if (vmm->token.val == val) {
2205 vfio_mm_get(vmm);
2206 goto out;
2207 }
2208 }
2209
2210 vmm = vfio_create_mm(mm);
2211 if (IS_ERR(vmm))
2212 vmm = NULL;
2213 out:
2214 mutex_unlock(&vfio.vfio_mm_lock);
2215 mmput(mm);
2216 return vmm;
2217 }
2218 EXPORT_SYMBOL_GPL(vfio_mm_get_from_task);
2219
2220 int vfio_mm_pasid_alloc(struct vfio_mm *vmm, int quota, int min, int max)
2221 {
2222 ioasid_t pasid;
2223 int ret = -ENOSPC;
2224
2225 mutex_lock(&vmm->pasid_lock);
2226
2227 /* update quota as it is tunable by admin */
2228 if (vmm->pasid_quota != quota) {
2229 vmm->pasid_quota = quota;
> 2230 ioasid_adjust_set(vmm->ioasid_sid, quota);
2231 }
2232
2233 pasid = ioasid_alloc(vmm->ioasid_sid, min, max, NULL);
2234 if (pasid == INVALID_IOASID) {
2235 ret = -ENOSPC;
2236 goto out_unlock;
2237 }
2238
2239 ret = pasid;
2240 out_unlock:
2241 mutex_unlock(&vmm->pasid_lock);
2242 return ret;
2243 }
2244 EXPORT_SYMBOL_GPL(vfio_mm_pasid_alloc);
2245
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 46471 bytes --]
[-- Attachment #3: Type: text/plain, Size: 156 bytes --]
_______________________________________________
iommu mailing list
iommu@lists.linux-foundation.org
https://lists.linuxfoundation.org/mailman/listinfo/iommu
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: "Liu, Yi L" <yi.l.liu@intel.com>
Cc: kbuild-all@lists.01.org, alex.williamson@redhat.com,
eric.auger@redhat.com, kevin.tian@intel.com,
jacob.jun.pan@linux.intel.com, joro@8bytes.org,
ashok.raj@intel.com, yi.l.liu@intel.com, jun.j.tian@intel.com,
yi.y.sun@intel.com, jean-philippe@linaro.org, peterx@redhat.com,
iommu@lists.linux-foundation.org, kvm@vger.kernel.org,
linux-kernel@vger.kernel.org, hao.wu@intel.com
Subject: Re: [PATCH v1 2/8] vfio/type1: Add vfio_iommu_type1 parameter for quota tuning
Date: Mon, 23 Mar 2020 01:20:56 +0800 [thread overview]
Message-ID: <202003230148.4Wl4xvVM%lkp@intel.com> (raw)
In-Reply-To: <1584880325-10561-3-git-send-email-yi.l.liu@intel.com>
[-- Attachment #1: Type: text/plain, Size: 7135 bytes --]
Hi Yi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on vfio/next]
[also build test ERROR on v5.6-rc6 next-20200320]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Liu-Yi-L/vfio-expose-virtual-Shared-Virtual-Addressing-to-VMs/20200322-213259
base: https://github.com/awilliam/linux-vfio.git next
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/vfio/vfio.c: In function 'vfio_create_mm':
drivers/vfio/vfio.c:2149:8: error: implicit declaration of function 'ioasid_alloc_set'; did you mean 'ioasid_alloc'? [-Werror=implicit-function-declaration]
2149 | ret = ioasid_alloc_set((struct ioasid_set *) mm,
| ^~~~~~~~~~~~~~~~
| ioasid_alloc
drivers/vfio/vfio.c:2158:13: warning: assignment to 'long long unsigned int' from 'struct mm_struct *' makes integer from pointer without a cast [-Wint-conversion]
2158 | token->val = mm;
| ^
drivers/vfio/vfio.c: In function 'vfio_mm_unlock_and_free':
drivers/vfio/vfio.c:2170:2: error: implicit declaration of function 'ioasid_free_set'; did you mean 'ioasid_free'? [-Werror=implicit-function-declaration]
2170 | ioasid_free_set(vmm->ioasid_sid, true);
| ^~~~~~~~~~~~~~~
| ioasid_free
drivers/vfio/vfio.c: In function 'vfio_mm_pasid_alloc':
>> drivers/vfio/vfio.c:2230:3: error: implicit declaration of function 'ioasid_adjust_set' [-Werror=implicit-function-declaration]
2230 | ioasid_adjust_set(vmm->ioasid_sid, quota);
| ^~~~~~~~~~~~~~~~~
drivers/vfio/vfio.c:2233:26: warning: passing argument 1 of 'ioasid_alloc' makes pointer from integer without a cast [-Wint-conversion]
2233 | pasid = ioasid_alloc(vmm->ioasid_sid, min, max, NULL);
| ~~~^~~~~~~~~~~~
| |
| int
In file included from include/linux/iommu.h:16,
from drivers/vfio/vfio.c:20:
include/linux/ioasid.h:45:56: note: expected 'struct ioasid_set *' but argument is of type 'int'
45 | static inline ioasid_t ioasid_alloc(struct ioasid_set *set, ioasid_t min,
| ~~~~~~~~~~~~~~~~~~~^~~
drivers/vfio/vfio.c: In function 'vfio_mm_pasid_free':
drivers/vfio/vfio.c:2252:25: warning: passing argument 1 of 'ioasid_find' makes pointer from integer without a cast [-Wint-conversion]
2252 | pdata = ioasid_find(vmm->ioasid_sid, pasid, NULL);
| ~~~^~~~~~~~~~~~
| |
| int
In file included from include/linux/iommu.h:16,
from drivers/vfio/vfio.c:20:
include/linux/ioasid.h:55:52: note: expected 'struct ioasid_set *' but argument is of type 'int'
55 | static inline void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
| ~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
vim +/ioasid_adjust_set +2230 drivers/vfio/vfio.c
2133
2134 /**
2135 * VFIO_MM objects - create, release, get, put, search
2136 * Caller of the function should have held vfio.vfio_mm_lock.
2137 */
2138 static struct vfio_mm *vfio_create_mm(struct mm_struct *mm)
2139 {
2140 struct vfio_mm *vmm;
2141 struct vfio_mm_token *token;
2142 int ret = 0;
2143
2144 vmm = kzalloc(sizeof(*vmm), GFP_KERNEL);
2145 if (!vmm)
2146 return ERR_PTR(-ENOMEM);
2147
2148 /* Per mm IOASID set used for quota control and group operations */
2149 ret = ioasid_alloc_set((struct ioasid_set *) mm,
2150 VFIO_DEFAULT_PASID_QUOTA, &vmm->ioasid_sid);
2151 if (ret) {
2152 kfree(vmm);
2153 return ERR_PTR(ret);
2154 }
2155
2156 kref_init(&vmm->kref);
2157 token = &vmm->token;
> 2158 token->val = mm;
2159 vmm->pasid_quota = VFIO_DEFAULT_PASID_QUOTA;
2160 mutex_init(&vmm->pasid_lock);
2161
2162 list_add(&vmm->vfio_next, &vfio.vfio_mm_list);
2163
2164 return vmm;
2165 }
2166
2167 static void vfio_mm_unlock_and_free(struct vfio_mm *vmm)
2168 {
2169 /* destroy the ioasid set */
2170 ioasid_free_set(vmm->ioasid_sid, true);
2171 mutex_unlock(&vfio.vfio_mm_lock);
2172 kfree(vmm);
2173 }
2174
2175 /* called with vfio.vfio_mm_lock held */
2176 static void vfio_mm_release(struct kref *kref)
2177 {
2178 struct vfio_mm *vmm = container_of(kref, struct vfio_mm, kref);
2179
2180 list_del(&vmm->vfio_next);
2181 vfio_mm_unlock_and_free(vmm);
2182 }
2183
2184 void vfio_mm_put(struct vfio_mm *vmm)
2185 {
2186 kref_put_mutex(&vmm->kref, vfio_mm_release, &vfio.vfio_mm_lock);
2187 }
2188 EXPORT_SYMBOL_GPL(vfio_mm_put);
2189
2190 /* Assume vfio_mm_lock or vfio_mm reference is held */
2191 static void vfio_mm_get(struct vfio_mm *vmm)
2192 {
2193 kref_get(&vmm->kref);
2194 }
2195
2196 struct vfio_mm *vfio_mm_get_from_task(struct task_struct *task)
2197 {
2198 struct mm_struct *mm = get_task_mm(task);
2199 struct vfio_mm *vmm;
2200 unsigned long long val = (unsigned long long) mm;
2201
2202 mutex_lock(&vfio.vfio_mm_lock);
2203 list_for_each_entry(vmm, &vfio.vfio_mm_list, vfio_next) {
2204 if (vmm->token.val == val) {
2205 vfio_mm_get(vmm);
2206 goto out;
2207 }
2208 }
2209
2210 vmm = vfio_create_mm(mm);
2211 if (IS_ERR(vmm))
2212 vmm = NULL;
2213 out:
2214 mutex_unlock(&vfio.vfio_mm_lock);
2215 mmput(mm);
2216 return vmm;
2217 }
2218 EXPORT_SYMBOL_GPL(vfio_mm_get_from_task);
2219
2220 int vfio_mm_pasid_alloc(struct vfio_mm *vmm, int quota, int min, int max)
2221 {
2222 ioasid_t pasid;
2223 int ret = -ENOSPC;
2224
2225 mutex_lock(&vmm->pasid_lock);
2226
2227 /* update quota as it is tunable by admin */
2228 if (vmm->pasid_quota != quota) {
2229 vmm->pasid_quota = quota;
> 2230 ioasid_adjust_set(vmm->ioasid_sid, quota);
2231 }
2232
2233 pasid = ioasid_alloc(vmm->ioasid_sid, min, max, NULL);
2234 if (pasid == INVALID_IOASID) {
2235 ret = -ENOSPC;
2236 goto out_unlock;
2237 }
2238
2239 ret = pasid;
2240 out_unlock:
2241 mutex_unlock(&vmm->pasid_lock);
2242 return ret;
2243 }
2244 EXPORT_SYMBOL_GPL(vfio_mm_pasid_alloc);
2245
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 46471 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: kbuild test robot <lkp@intel.com>
To: kbuild-all@lists.01.org
Subject: Re: [PATCH v1 2/8] vfio/type1: Add vfio_iommu_type1 parameter for quota tuning
Date: Mon, 23 Mar 2020 01:20:56 +0800 [thread overview]
Message-ID: <202003230148.4Wl4xvVM%lkp@intel.com> (raw)
In-Reply-To: <1584880325-10561-3-git-send-email-yi.l.liu@intel.com>
[-- Attachment #1: Type: text/plain, Size: 7321 bytes --]
Hi Yi,
Thank you for the patch! Yet something to improve:
[auto build test ERROR on vfio/next]
[also build test ERROR on v5.6-rc6 next-20200320]
[if your patch is applied to the wrong git tree, please drop us a note to help
improve the system. BTW, we also suggest to use '--base' option to specify the
base tree in git format-patch, please see https://stackoverflow.com/a/37406982]
url: https://github.com/0day-ci/linux/commits/Liu-Yi-L/vfio-expose-virtual-Shared-Virtual-Addressing-to-VMs/20200322-213259
base: https://github.com/awilliam/linux-vfio.git next
config: arm64-defconfig (attached as .config)
compiler: aarch64-linux-gcc (GCC) 9.2.0
reproduce:
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# save the attached .config to linux build tree
GCC_VERSION=9.2.0 make.cross ARCH=arm64
If you fix the issue, kindly add following tag
Reported-by: kbuild test robot <lkp@intel.com>
All errors (new ones prefixed by >>):
drivers/vfio/vfio.c: In function 'vfio_create_mm':
drivers/vfio/vfio.c:2149:8: error: implicit declaration of function 'ioasid_alloc_set'; did you mean 'ioasid_alloc'? [-Werror=implicit-function-declaration]
2149 | ret = ioasid_alloc_set((struct ioasid_set *) mm,
| ^~~~~~~~~~~~~~~~
| ioasid_alloc
drivers/vfio/vfio.c:2158:13: warning: assignment to 'long long unsigned int' from 'struct mm_struct *' makes integer from pointer without a cast [-Wint-conversion]
2158 | token->val = mm;
| ^
drivers/vfio/vfio.c: In function 'vfio_mm_unlock_and_free':
drivers/vfio/vfio.c:2170:2: error: implicit declaration of function 'ioasid_free_set'; did you mean 'ioasid_free'? [-Werror=implicit-function-declaration]
2170 | ioasid_free_set(vmm->ioasid_sid, true);
| ^~~~~~~~~~~~~~~
| ioasid_free
drivers/vfio/vfio.c: In function 'vfio_mm_pasid_alloc':
>> drivers/vfio/vfio.c:2230:3: error: implicit declaration of function 'ioasid_adjust_set' [-Werror=implicit-function-declaration]
2230 | ioasid_adjust_set(vmm->ioasid_sid, quota);
| ^~~~~~~~~~~~~~~~~
drivers/vfio/vfio.c:2233:26: warning: passing argument 1 of 'ioasid_alloc' makes pointer from integer without a cast [-Wint-conversion]
2233 | pasid = ioasid_alloc(vmm->ioasid_sid, min, max, NULL);
| ~~~^~~~~~~~~~~~
| |
| int
In file included from include/linux/iommu.h:16,
from drivers/vfio/vfio.c:20:
include/linux/ioasid.h:45:56: note: expected 'struct ioasid_set *' but argument is of type 'int'
45 | static inline ioasid_t ioasid_alloc(struct ioasid_set *set, ioasid_t min,
| ~~~~~~~~~~~~~~~~~~~^~~
drivers/vfio/vfio.c: In function 'vfio_mm_pasid_free':
drivers/vfio/vfio.c:2252:25: warning: passing argument 1 of 'ioasid_find' makes pointer from integer without a cast [-Wint-conversion]
2252 | pdata = ioasid_find(vmm->ioasid_sid, pasid, NULL);
| ~~~^~~~~~~~~~~~
| |
| int
In file included from include/linux/iommu.h:16,
from drivers/vfio/vfio.c:20:
include/linux/ioasid.h:55:52: note: expected 'struct ioasid_set *' but argument is of type 'int'
55 | static inline void *ioasid_find(struct ioasid_set *set, ioasid_t ioasid,
| ~~~~~~~~~~~~~~~~~~~^~~
cc1: some warnings being treated as errors
vim +/ioasid_adjust_set +2230 drivers/vfio/vfio.c
2133
2134 /**
2135 * VFIO_MM objects - create, release, get, put, search
2136 * Caller of the function should have held vfio.vfio_mm_lock.
2137 */
2138 static struct vfio_mm *vfio_create_mm(struct mm_struct *mm)
2139 {
2140 struct vfio_mm *vmm;
2141 struct vfio_mm_token *token;
2142 int ret = 0;
2143
2144 vmm = kzalloc(sizeof(*vmm), GFP_KERNEL);
2145 if (!vmm)
2146 return ERR_PTR(-ENOMEM);
2147
2148 /* Per mm IOASID set used for quota control and group operations */
2149 ret = ioasid_alloc_set((struct ioasid_set *) mm,
2150 VFIO_DEFAULT_PASID_QUOTA, &vmm->ioasid_sid);
2151 if (ret) {
2152 kfree(vmm);
2153 return ERR_PTR(ret);
2154 }
2155
2156 kref_init(&vmm->kref);
2157 token = &vmm->token;
> 2158 token->val = mm;
2159 vmm->pasid_quota = VFIO_DEFAULT_PASID_QUOTA;
2160 mutex_init(&vmm->pasid_lock);
2161
2162 list_add(&vmm->vfio_next, &vfio.vfio_mm_list);
2163
2164 return vmm;
2165 }
2166
2167 static void vfio_mm_unlock_and_free(struct vfio_mm *vmm)
2168 {
2169 /* destroy the ioasid set */
2170 ioasid_free_set(vmm->ioasid_sid, true);
2171 mutex_unlock(&vfio.vfio_mm_lock);
2172 kfree(vmm);
2173 }
2174
2175 /* called with vfio.vfio_mm_lock held */
2176 static void vfio_mm_release(struct kref *kref)
2177 {
2178 struct vfio_mm *vmm = container_of(kref, struct vfio_mm, kref);
2179
2180 list_del(&vmm->vfio_next);
2181 vfio_mm_unlock_and_free(vmm);
2182 }
2183
2184 void vfio_mm_put(struct vfio_mm *vmm)
2185 {
2186 kref_put_mutex(&vmm->kref, vfio_mm_release, &vfio.vfio_mm_lock);
2187 }
2188 EXPORT_SYMBOL_GPL(vfio_mm_put);
2189
2190 /* Assume vfio_mm_lock or vfio_mm reference is held */
2191 static void vfio_mm_get(struct vfio_mm *vmm)
2192 {
2193 kref_get(&vmm->kref);
2194 }
2195
2196 struct vfio_mm *vfio_mm_get_from_task(struct task_struct *task)
2197 {
2198 struct mm_struct *mm = get_task_mm(task);
2199 struct vfio_mm *vmm;
2200 unsigned long long val = (unsigned long long) mm;
2201
2202 mutex_lock(&vfio.vfio_mm_lock);
2203 list_for_each_entry(vmm, &vfio.vfio_mm_list, vfio_next) {
2204 if (vmm->token.val == val) {
2205 vfio_mm_get(vmm);
2206 goto out;
2207 }
2208 }
2209
2210 vmm = vfio_create_mm(mm);
2211 if (IS_ERR(vmm))
2212 vmm = NULL;
2213 out:
2214 mutex_unlock(&vfio.vfio_mm_lock);
2215 mmput(mm);
2216 return vmm;
2217 }
2218 EXPORT_SYMBOL_GPL(vfio_mm_get_from_task);
2219
2220 int vfio_mm_pasid_alloc(struct vfio_mm *vmm, int quota, int min, int max)
2221 {
2222 ioasid_t pasid;
2223 int ret = -ENOSPC;
2224
2225 mutex_lock(&vmm->pasid_lock);
2226
2227 /* update quota as it is tunable by admin */
2228 if (vmm->pasid_quota != quota) {
2229 vmm->pasid_quota = quota;
> 2230 ioasid_adjust_set(vmm->ioasid_sid, quota);
2231 }
2232
2233 pasid = ioasid_alloc(vmm->ioasid_sid, min, max, NULL);
2234 if (pasid == INVALID_IOASID) {
2235 ret = -ENOSPC;
2236 goto out_unlock;
2237 }
2238
2239 ret = pasid;
2240 out_unlock:
2241 mutex_unlock(&vmm->pasid_lock);
2242 return ret;
2243 }
2244 EXPORT_SYMBOL_GPL(vfio_mm_pasid_alloc);
2245
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 46471 bytes --]
next prev parent reply other threads:[~2020-03-22 17:21 UTC|newest]
Thread overview: 225+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-03-22 12:31 [PATCH v1 0/8] vfio: expose virtual Shared Virtual Addressing to VMs Liu, Yi L
2020-03-22 12:31 ` Liu, Yi L
2020-03-22 12:31 ` [PATCH v1 1/8] vfio: Add VFIO_IOMMU_PASID_REQUEST(alloc/free) Liu, Yi L
2020-03-22 12:31 ` Liu, Yi L
2020-03-22 16:21 ` kbuild test robot
2020-03-22 16:21 ` kbuild test robot
2020-03-22 16:21 ` kbuild test robot
2020-03-30 8:32 ` Tian, Kevin
2020-03-30 8:32 ` Tian, Kevin
2020-03-30 14:36 ` Liu, Yi L
2020-03-30 14:36 ` Liu, Yi L
2020-03-31 5:40 ` Tian, Kevin
2020-03-31 5:40 ` Tian, Kevin
2020-03-31 13:22 ` Liu, Yi L
2020-03-31 13:22 ` Liu, Yi L
2020-04-01 5:43 ` Tian, Kevin
2020-04-01 5:43 ` Tian, Kevin
2020-04-01 5:48 ` Liu, Yi L
2020-04-01 5:48 ` Liu, Yi L
2020-03-31 7:53 ` Christoph Hellwig
2020-03-31 7:53 ` Christoph Hellwig
2020-03-31 8:17 ` Liu, Yi L
2020-03-31 8:17 ` Liu, Yi L
2020-03-31 8:32 ` Liu, Yi L
2020-03-31 8:32 ` Liu, Yi L
2020-03-31 8:36 ` Liu, Yi L
2020-03-31 8:36 ` Liu, Yi L
2020-03-31 9:15 ` Christoph Hellwig
2020-03-31 9:15 ` Christoph Hellwig
2020-04-02 13:52 ` Jean-Philippe Brucker
2020-04-02 13:52 ` Jean-Philippe Brucker
2020-04-03 11:56 ` Liu, Yi L
2020-04-03 11:56 ` Liu, Yi L
2020-04-03 12:39 ` Jean-Philippe Brucker
2020-04-03 12:39 ` Jean-Philippe Brucker
2020-04-03 12:44 ` Liu, Yi L
2020-04-03 12:44 ` Liu, Yi L
2020-04-02 17:50 ` Alex Williamson
2020-04-02 17:50 ` Alex Williamson
2020-04-03 5:58 ` Tian, Kevin
2020-04-03 5:58 ` Tian, Kevin
2020-04-03 15:14 ` Alex Williamson
2020-04-03 15:14 ` Alex Williamson
2020-04-07 4:42 ` Tian, Kevin
2020-04-07 4:42 ` Tian, Kevin
2020-04-07 15:14 ` Alex Williamson
2020-04-07 15:14 ` Alex Williamson
2020-04-03 13:12 ` Liu, Yi L
2020-04-03 13:12 ` Liu, Yi L
2020-04-03 17:50 ` Alex Williamson
2020-04-03 17:50 ` Alex Williamson
2020-04-07 4:52 ` Tian, Kevin
2020-04-07 4:52 ` Tian, Kevin
2020-04-08 0:52 ` Liu, Yi L
2020-04-08 0:52 ` Liu, Yi L
2020-03-22 12:31 ` [PATCH v1 2/8] vfio/type1: Add vfio_iommu_type1 parameter for quota tuning Liu, Yi L
2020-03-22 12:31 ` Liu, Yi L
2020-03-22 17:20 ` kbuild test robot [this message]
2020-03-22 17:20 ` kbuild test robot
2020-03-22 17:20 ` kbuild test robot
2020-03-30 8:40 ` Tian, Kevin
2020-03-30 8:40 ` Tian, Kevin
2020-03-30 8:52 ` Liu, Yi L
2020-03-30 8:52 ` Liu, Yi L
2020-03-30 9:19 ` Tian, Kevin
2020-03-30 9:19 ` Tian, Kevin
2020-03-30 9:26 ` Liu, Yi L
2020-03-30 9:26 ` Liu, Yi L
2020-03-30 11:44 ` Tian, Kevin
2020-03-30 11:44 ` Tian, Kevin
2020-04-02 17:58 ` Alex Williamson
2020-04-02 17:58 ` Alex Williamson
2020-04-03 8:15 ` Liu, Yi L
2020-04-03 8:15 ` Liu, Yi L
2020-03-22 12:32 ` [PATCH v1 3/8] vfio/type1: Report PASID alloc/free support to userspace Liu, Yi L
2020-03-22 12:32 ` Liu, Yi L
2020-03-30 9:43 ` Tian, Kevin
2020-03-30 9:43 ` Tian, Kevin
2020-04-01 7:46 ` Liu, Yi L
2020-04-01 7:46 ` Liu, Yi L
2020-04-01 9:41 ` Auger Eric
2020-04-01 9:41 ` Auger Eric
2020-04-01 13:13 ` Liu, Yi L
2020-04-01 13:13 ` Liu, Yi L
2020-04-02 18:01 ` Alex Williamson
2020-04-02 18:01 ` Alex Williamson
2020-04-03 8:17 ` Liu, Yi L
2020-04-03 8:17 ` Liu, Yi L
2020-04-03 17:28 ` Alex Williamson
2020-04-03 17:28 ` Alex Williamson
2020-04-04 11:36 ` Liu, Yi L
2020-04-04 11:36 ` Liu, Yi L
2020-03-22 12:32 ` [PATCH v1 4/8] vfio: Check nesting iommu uAPI version Liu, Yi L
2020-03-22 12:32 ` Liu, Yi L
2020-03-22 18:30 ` kbuild test robot
2020-03-22 18:30 ` kbuild test robot
2020-03-22 18:30 ` kbuild test robot
2020-03-22 12:32 ` [PATCH v1 5/8] vfio/type1: Report 1st-level/stage-1 format to userspace Liu, Yi L
2020-03-22 12:32 ` Liu, Yi L
2020-03-22 16:44 ` kbuild test robot
2020-03-22 16:44 ` kbuild test robot
2020-03-22 16:44 ` kbuild test robot
2020-03-30 11:48 ` Tian, Kevin
2020-03-30 11:48 ` Tian, Kevin
2020-04-01 7:38 ` Liu, Yi L
2020-04-01 7:38 ` Liu, Yi L
2020-04-01 7:56 ` Tian, Kevin
2020-04-01 7:56 ` Tian, Kevin
2020-04-01 8:06 ` Liu, Yi L
2020-04-01 8:06 ` Liu, Yi L
2020-04-01 8:08 ` Tian, Kevin
2020-04-01 8:08 ` Tian, Kevin
2020-04-01 8:09 ` Liu, Yi L
2020-04-01 8:09 ` Liu, Yi L
2020-04-01 8:51 ` Auger Eric
2020-04-01 8:51 ` Auger Eric
2020-04-01 12:51 ` Liu, Yi L
2020-04-01 12:51 ` Liu, Yi L
2020-04-01 13:01 ` Auger Eric
2020-04-01 13:01 ` Auger Eric
2020-04-03 8:23 ` Jean-Philippe Brucker
2020-04-03 8:23 ` Jean-Philippe Brucker
2020-04-07 9:43 ` Liu, Yi L
2020-04-07 9:43 ` Liu, Yi L
2020-04-08 1:02 ` Liu, Yi L
2020-04-08 1:02 ` Liu, Yi L
2020-04-08 10:27 ` Auger Eric
2020-04-08 10:27 ` Auger Eric
2020-04-09 8:14 ` Jean-Philippe Brucker
2020-04-09 8:14 ` Jean-Philippe Brucker
2020-04-09 9:01 ` Auger Eric
2020-04-09 9:01 ` Auger Eric
2020-04-09 12:47 ` Liu, Yi L
2020-04-09 12:47 ` Liu, Yi L
2020-04-10 3:28 ` Auger Eric
2020-04-10 3:28 ` Auger Eric
2020-04-10 3:48 ` Liu, Yi L
2020-04-10 3:48 ` Liu, Yi L
2020-04-10 12:30 ` Liu, Yi L
2020-04-10 12:30 ` Liu, Yi L
2020-04-02 19:20 ` Alex Williamson
2020-04-02 19:20 ` Alex Williamson
2020-04-03 11:59 ` Liu, Yi L
2020-04-03 11:59 ` Liu, Yi L
2020-03-22 12:32 ` [PATCH v1 6/8] vfio/type1: Bind guest page tables to host Liu, Yi L
2020-03-22 12:32 ` Liu, Yi L
2020-03-22 18:10 ` kbuild test robot
2020-03-22 18:10 ` kbuild test robot
2020-03-22 18:10 ` kbuild test robot
2020-03-30 12:46 ` Tian, Kevin
2020-03-30 12:46 ` Tian, Kevin
2020-04-01 9:13 ` Liu, Yi L
2020-04-01 9:13 ` Liu, Yi L
2020-04-02 2:12 ` Tian, Kevin
2020-04-02 2:12 ` Tian, Kevin
2020-04-02 8:05 ` Liu, Yi L
2020-04-02 8:05 ` Liu, Yi L
2020-04-03 8:34 ` Jean-Philippe Brucker
2020-04-03 8:34 ` Jean-Philippe Brucker
2020-04-07 10:33 ` Liu, Yi L
2020-04-07 10:33 ` Liu, Yi L
2020-04-09 8:28 ` Jean-Philippe Brucker
2020-04-09 8:28 ` Jean-Philippe Brucker
2020-04-09 9:15 ` Liu, Yi L
2020-04-09 9:15 ` Liu, Yi L
2020-04-09 9:38 ` Jean-Philippe Brucker
2020-04-09 9:38 ` Jean-Philippe Brucker
2020-04-02 19:57 ` Alex Williamson
2020-04-02 19:57 ` Alex Williamson
2020-04-03 13:30 ` Liu, Yi L
2020-04-03 13:30 ` Liu, Yi L
2020-04-03 18:11 ` Alex Williamson
2020-04-03 18:11 ` Alex Williamson
2020-04-04 10:28 ` Liu, Yi L
2020-04-04 10:28 ` Liu, Yi L
2020-04-11 5:52 ` Liu, Yi L
2020-04-11 5:52 ` Liu, Yi L
2020-03-22 12:32 ` [PATCH v1 7/8] vfio/type1: Add VFIO_IOMMU_CACHE_INVALIDATE Liu, Yi L
2020-03-22 12:32 ` Liu, Yi L
2020-03-30 12:58 ` Tian, Kevin
2020-03-30 12:58 ` Tian, Kevin
2020-04-01 7:49 ` Liu, Yi L
2020-04-01 7:49 ` Liu, Yi L
2020-03-31 7:56 ` Christoph Hellwig
2020-03-31 7:56 ` Christoph Hellwig
2020-03-31 10:48 ` Liu, Yi L
2020-03-31 10:48 ` Liu, Yi L
2020-04-02 20:24 ` Alex Williamson
2020-04-02 20:24 ` Alex Williamson
2020-04-03 6:39 ` Tian, Kevin
2020-04-03 6:39 ` Tian, Kevin
2020-04-03 15:31 ` Jacob Pan
2020-04-03 15:31 ` Jacob Pan
2020-04-03 15:34 ` Alex Williamson
2020-04-03 15:34 ` Alex Williamson
2020-04-08 2:28 ` Liu, Yi L
2020-04-08 2:28 ` Liu, Yi L
2020-04-16 10:40 ` Liu, Yi L
2020-04-16 10:40 ` Liu, Yi L
2020-04-16 12:09 ` Tian, Kevin
2020-04-16 12:09 ` Tian, Kevin
2020-04-16 12:42 ` Auger Eric
2020-04-16 12:42 ` Auger Eric
2020-04-16 13:28 ` Tian, Kevin
2020-04-16 13:28 ` Tian, Kevin
2020-04-16 15:12 ` Auger Eric
2020-04-16 15:12 ` Auger Eric
2020-04-16 14:40 ` Alex Williamson
2020-04-16 14:40 ` Alex Williamson
2020-04-16 14:48 ` Alex Williamson
2020-04-16 14:48 ` Alex Williamson
2020-04-17 6:03 ` Liu, Yi L
2020-04-17 6:03 ` Liu, Yi L
2020-03-22 12:32 ` [PATCH v1 8/8] vfio/type1: Add vSVA support for IOMMU-backed mdevs Liu, Yi L
2020-03-22 12:32 ` Liu, Yi L
2020-03-30 13:18 ` Tian, Kevin
2020-03-30 13:18 ` Tian, Kevin
2020-04-01 7:51 ` Liu, Yi L
2020-04-01 7:51 ` Liu, Yi L
2020-04-02 20:33 ` Alex Williamson
2020-04-02 20:33 ` Alex Williamson
2020-04-03 13:39 ` Liu, Yi L
2020-04-03 13:39 ` Liu, Yi L
2020-03-26 12:56 ` [PATCH v1 0/8] vfio: expose virtual Shared Virtual Addressing to VMs Liu, Yi L
2020-03-26 12:56 ` Liu, Yi L
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202003230148.4Wl4xvVM%lkp@intel.com \
--to=lkp@intel.com \
--cc=alex.williamson@redhat.com \
--cc=ashok.raj@intel.com \
--cc=hao.wu@intel.com \
--cc=iommu@lists.linux-foundation.org \
--cc=jean-philippe@linaro.org \
--cc=jun.j.tian@intel.com \
--cc=kbuild-all@lists.01.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=yi.l.liu@intel.com \
--cc=yi.y.sun@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.