diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/soc/tegra/virt/syscalls.h | 44 |
1 files changed, 24 insertions, 20 deletions
diff --git a/include/soc/tegra/virt/syscalls.h b/include/soc/tegra/virt/syscalls.h index ddf7e0823..aa8e1dfb7 100644 --- a/include/soc/tegra/virt/syscalls.h +++ b/include/soc/tegra/virt/syscalls.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (C) 2014-2019, NVIDIA CORPORATION. All rights reserved. | 2 | * Copyright (C) 2014-2020, NVIDIA CORPORATION. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * Hypervisor interfaces | 4 | * Hypervisor interfaces |
| 5 | * | 5 | * |
| @@ -200,8 +200,13 @@ struct hyp_server_page { | |||
| 200 | #define _X7_X17 "x7", "x8", "x9", "x10", "x11", "x12", \ | 200 | #define _X7_X17 "x7", "x8", "x9", "x10", "x11", "x12", \ |
| 201 | "x13", "x14", "x15", "x16", "x17" | 201 | "x13", "x14", "x15", "x16", "x17" |
| 202 | 202 | ||
| 203 | #if IS_ENABLED(CONFIG_KASAN) | ||
| 204 | # define __INLINE __no_sanitize_address __maybe_unused | ||
| 205 | #else | ||
| 206 | # define __INLINE inline | ||
| 207 | #endif | ||
| 203 | 208 | ||
| 204 | static inline int hyp_read_gid(unsigned int *gid) | 209 | static __INLINE int hyp_read_gid(unsigned int *gid) |
| 205 | { | 210 | { |
| 206 | register uint64_t r0 asm("x0"); | 211 | register uint64_t r0 asm("x0"); |
| 207 | register uint64_t r1 asm("x1"); | 212 | register uint64_t r1 asm("x1"); |
| @@ -215,7 +220,7 @@ static inline int hyp_read_gid(unsigned int *gid) | |||
| 215 | return (int)r0; | 220 | return (int)r0; |
| 216 | } | 221 | } |
| 217 | 222 | ||
| 218 | static inline uint32_t hyp_read_vcpu_id(void) | 223 | static __INLINE uint32_t hyp_read_vcpu_id(void) |
| 219 | { | 224 | { |
| 220 | register uint64_t r0 asm("x0"); | 225 | register uint64_t r0 asm("x0"); |
| 221 | 226 | ||
| @@ -227,7 +232,7 @@ static inline uint32_t hyp_read_vcpu_id(void) | |||
| 227 | return (uint32_t)r0; | 232 | return (uint32_t)r0; |
| 228 | } | 233 | } |
| 229 | 234 | ||
| 230 | static inline int hyp_read_nguests(unsigned int *nguests) | 235 | static __INLINE int hyp_read_nguests(unsigned int *nguests) |
| 231 | { | 236 | { |
| 232 | register uint64_t r0 asm("x0"); | 237 | register uint64_t r0 asm("x0"); |
| 233 | register uint64_t r1 asm("x1"); | 238 | register uint64_t r1 asm("x1"); |
| @@ -241,7 +246,7 @@ static inline int hyp_read_nguests(unsigned int *nguests) | |||
| 241 | return (int)r0; | 246 | return (int)r0; |
| 242 | } | 247 | } |
| 243 | 248 | ||
| 244 | static inline int hyp_read_ivc_info(uint64_t *ivc_info_page_pa) | 249 | static __INLINE int hyp_read_ivc_info(uint64_t *ivc_info_page_pa) |
| 245 | { | 250 | { |
| 246 | register uint64_t r0 asm("x0"); | 251 | register uint64_t r0 asm("x0"); |
| 247 | register uint64_t r1 asm("x1"); | 252 | register uint64_t r1 asm("x1"); |
| @@ -255,7 +260,7 @@ static inline int hyp_read_ivc_info(uint64_t *ivc_info_page_pa) | |||
| 255 | return (int)r0; | 260 | return (int)r0; |
| 256 | } | 261 | } |
| 257 | 262 | ||
| 258 | static inline int hyp_read_ipa_pa_info(struct hyp_ipa_pa_info *info, | 263 | static __INLINE int hyp_read_ipa_pa_info(struct hyp_ipa_pa_info *info, |
| 259 | unsigned int guestid, uint64_t ipa) | 264 | unsigned int guestid, uint64_t ipa) |
| 260 | { | 265 | { |
| 261 | register uint64_t r0 asm("x0") = guestid; | 266 | register uint64_t r0 asm("x0") = guestid; |
| @@ -276,7 +281,7 @@ static inline int hyp_read_ipa_pa_info(struct hyp_ipa_pa_info *info, | |||
| 276 | return (int)r0; | 281 | return (int)r0; |
| 277 | } | 282 | } |
| 278 | 283 | ||
| 279 | static inline int hyp_raise_irq(unsigned int irq, unsigned int vmid) | 284 | static __INLINE int hyp_raise_irq(unsigned int irq, unsigned int vmid) |
| 280 | { | 285 | { |
| 281 | register uint64_t r0 asm("x0") = irq; | 286 | register uint64_t r0 asm("x0") = irq; |
| 282 | register uint64_t r1 asm("x1") = vmid; | 287 | register uint64_t r1 asm("x1") = vmid; |
| @@ -289,7 +294,7 @@ static inline int hyp_raise_irq(unsigned int irq, unsigned int vmid) | |||
| 289 | return (int)r0; | 294 | return (int)r0; |
| 290 | } | 295 | } |
| 291 | 296 | ||
| 292 | static inline int hyp_read_guest_state(unsigned int vmid, unsigned int *state) | 297 | static __INLINE int hyp_read_guest_state(unsigned int vmid, unsigned int *state) |
| 293 | { | 298 | { |
| 294 | register uint64_t r0 asm("x0") = vmid; | 299 | register uint64_t r0 asm("x0") = vmid; |
| 295 | register uint64_t r1 asm("x1"); | 300 | register uint64_t r1 asm("x1"); |
| @@ -303,7 +308,7 @@ static inline int hyp_read_guest_state(unsigned int vmid, unsigned int *state) | |||
| 303 | return (int)r0; | 308 | return (int)r0; |
| 304 | } | 309 | } |
| 305 | 310 | ||
| 306 | static inline int hyp_read_hyp_info(uint64_t *hyp_info_page_pa) | 311 | static __INLINE int hyp_read_hyp_info(uint64_t *hyp_info_page_pa) |
| 307 | { | 312 | { |
| 308 | register uint64_t r0 asm("x0"); | 313 | register uint64_t r0 asm("x0"); |
| 309 | register uint64_t r1 asm("x1"); | 314 | register uint64_t r1 asm("x1"); |
| @@ -317,7 +322,7 @@ static inline int hyp_read_hyp_info(uint64_t *hyp_info_page_pa) | |||
| 317 | return (int)r0; | 322 | return (int)r0; |
| 318 | } | 323 | } |
| 319 | 324 | ||
| 320 | static inline int hyp_guest_reset(unsigned int id, | 325 | static __INLINE int hyp_guest_reset(unsigned int id, |
| 321 | struct hyp_sys_state_info *out) | 326 | struct hyp_sys_state_info *out) |
| 322 | { | 327 | { |
| 323 | register uint64_t r0 asm("x0") = id; | 328 | register uint64_t r0 asm("x0") = id; |
| @@ -340,7 +345,7 @@ static inline int hyp_guest_reset(unsigned int id, | |||
| 340 | return (int)r0; | 345 | return (int)r0; |
| 341 | } | 346 | } |
| 342 | 347 | ||
| 343 | static inline uint64_t hyp_sysinfo_ipa(void) | 348 | static __INLINE uint64_t hyp_sysinfo_ipa(void) |
| 344 | { | 349 | { |
| 345 | register uint64_t r0 asm("x0"); | 350 | register uint64_t r0 asm("x0"); |
| 346 | 351 | ||
| @@ -352,7 +357,7 @@ static inline uint64_t hyp_sysinfo_ipa(void) | |||
| 352 | return r0; | 357 | return r0; |
| 353 | } | 358 | } |
| 354 | 359 | ||
| 355 | static inline int hyp_trace_get_mask(uint64_t *mask) | 360 | static __INLINE int hyp_trace_get_mask(uint64_t *mask) |
| 356 | { | 361 | { |
| 357 | register uint64_t x0 asm("x0"); | 362 | register uint64_t x0 asm("x0"); |
| 358 | register uint64_t x1 asm("x1"); | 363 | register uint64_t x1 asm("x1"); |
| @@ -370,7 +375,7 @@ static inline int hyp_trace_get_mask(uint64_t *mask) | |||
| 370 | return (int)x0; | 375 | return (int)x0; |
| 371 | } | 376 | } |
| 372 | 377 | ||
| 373 | static inline int hyp_trace_set_mask(uint64_t mask) | 378 | static __INLINE int hyp_trace_set_mask(uint64_t mask) |
| 374 | { | 379 | { |
| 375 | register uint64_t x0 asm("x0") = mask; | 380 | register uint64_t x0 asm("x0") = mask; |
| 376 | 381 | ||
| @@ -385,7 +390,7 @@ static inline int hyp_trace_set_mask(uint64_t mask) | |||
| 385 | return (int)x0; | 390 | return (int)x0; |
| 386 | } | 391 | } |
| 387 | 392 | ||
| 388 | static inline int hyp_read_uart_relay_info(uint64_t *ipa, uint64_t *size, | 393 | static __INLINE int hyp_read_uart_relay_info(uint64_t *ipa, uint64_t *size, |
| 389 | uint64_t *num_channels, | 394 | uint64_t *num_channels, |
| 390 | uint64_t *max_msg_size) | 395 | uint64_t *max_msg_size) |
| 391 | { | 396 | { |
| @@ -410,8 +415,7 @@ static inline int hyp_read_uart_relay_info(uint64_t *ipa, uint64_t *size, | |||
| 410 | return (int)x0; | 415 | return (int)x0; |
| 411 | } | 416 | } |
| 412 | 417 | ||
| 413 | 418 | static __INLINE int hyp_read_nvlog_reader_info(uint64_t *ipa, uint64_t *size, | |
| 414 | static inline int hyp_read_nvlog_reader_info(uint64_t *ipa, uint64_t *size, | ||
| 415 | uint64_t *num_vms) | 419 | uint64_t *num_vms) |
| 416 | { | 420 | { |
| 417 | register uint64_t x0 asm("x0"); | 421 | register uint64_t x0 asm("x0"); |
| @@ -434,7 +438,7 @@ static inline int hyp_read_nvlog_reader_info(uint64_t *ipa, uint64_t *size, | |||
| 434 | return (int)x0; | 438 | return (int)x0; |
| 435 | } | 439 | } |
| 436 | 440 | ||
| 437 | static inline int hyp_read_nvlog_writer_info(uint64_t *ipa, uint64_t *size) | 441 | static __INLINE int hyp_read_nvlog_writer_info(uint64_t *ipa, uint64_t *size) |
| 438 | { | 442 | { |
| 439 | register uint64_t x0 asm("x0"); | 443 | register uint64_t x0 asm("x0"); |
| 440 | register uint64_t x1 asm("x1"); | 444 | register uint64_t x1 asm("x1"); |
| @@ -455,7 +459,7 @@ static inline int hyp_read_nvlog_writer_info(uint64_t *ipa, uint64_t *size) | |||
| 455 | return (int)x0; | 459 | return (int)x0; |
| 456 | } | 460 | } |
| 457 | 461 | ||
| 458 | static inline int hyp_read_err_info_get(uint64_t *ipa, uint64_t *buff_size, | 462 | static __INLINE int hyp_read_err_info_get(uint64_t *ipa, uint64_t *buff_size, |
| 459 | unsigned int *async_err_arr_items, int *peer_err_irq_id, | 463 | unsigned int *async_err_arr_items, int *peer_err_irq_id, |
| 460 | unsigned int *vcpu_cnt) | 464 | unsigned int *vcpu_cnt) |
| 461 | { | 465 | { |
| @@ -480,7 +484,7 @@ static inline int hyp_read_err_info_get(uint64_t *ipa, uint64_t *buff_size, | |||
| 480 | return (int)r0; | 484 | return (int)r0; |
| 481 | } | 485 | } |
| 482 | 486 | ||
| 483 | static inline int hyp_send_async_err_ack(uint64_t local_rd_idx) | 487 | static __INLINE int hyp_send_async_err_ack(uint64_t local_rd_idx) |
| 484 | { | 488 | { |
| 485 | register uint64_t r0 asm("x0") = local_rd_idx; | 489 | register uint64_t r0 asm("x0") = local_rd_idx; |
| 486 | 490 | ||
| @@ -492,7 +496,7 @@ static inline int hyp_send_async_err_ack(uint64_t local_rd_idx) | |||
| 492 | return (int)r0; | 496 | return (int)r0; |
| 493 | } | 497 | } |
| 494 | 498 | ||
| 495 | static inline int hyp_send_sync_err_ack(void) | 499 | static __INLINE int hyp_send_sync_err_ack(void) |
| 496 | { | 500 | { |
| 497 | register uint64_t r0 asm("x0"); | 501 | register uint64_t r0 asm("x0"); |
| 498 | 502 | ||
