Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
drivers
infiniband
hw
ehca
hcp_phyp.h
Go to the documentation of this file.
1
/*
2
* IBM eServer eHCA Infiniband device driver for Linux on POWER
3
*
4
* Firmware calls
5
*
6
* Authors: Christoph Raisch <
[email protected]
>
7
* Hoang-Nam Nguyen <
[email protected]
>
8
* Waleri Fomin <
[email protected]
>
9
* Gerd Bayer <
[email protected]
>
10
*
11
* Copyright (c) 2005 IBM Corporation
12
*
13
* All rights reserved.
14
*
15
* This source code is distributed under a dual license of GPL v2.0 and OpenIB
16
* BSD.
17
*
18
* OpenIB BSD License
19
*
20
* Redistribution and use in source and binary forms, with or without
21
* modification, are permitted provided that the following conditions are met:
22
*
23
* Redistributions of source code must retain the above copyright notice, this
24
* list of conditions and the following disclaimer.
25
*
26
* Redistributions in binary form must reproduce the above copyright notice,
27
* this list of conditions and the following disclaimer in the documentation
28
* and/or other materials
29
* provided with the distribution.
30
*
31
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
32
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
35
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
36
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
37
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
38
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
39
* IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
41
* POSSIBILITY OF SUCH DAMAGE.
42
*/
43
44
#ifndef __HCP_PHYP_H__
45
#define __HCP_PHYP_H__
46
47
48
/*
49
* eHCA page (mapped into memory)
50
* resource to access eHCA register pages in CPU address space
51
*/
52
struct
h_galpa
{
53
u64
fw_handle
;
54
/* for pSeries this is a 64bit memory address where
55
I/O memory is mapped into CPU address space (kv) */
56
};
57
58
/*
59
* resource to access eHCA address space registers, all types
60
*/
61
struct
h_galpas
{
62
u32
pid
;
/*PID of userspace galpa checking */
63
struct
h_galpa
user
;
/* user space accessible resource,
64
set to 0 if unused */
65
struct
h_galpa
kernel
;
/* kernel space accessible resource,
66
set to 0 if unused */
67
};
68
69
static
inline
u64
hipz_galpa_load(
struct
h_galpa
galpa,
u32
offset
)
70
{
71
u64
addr
= galpa.
fw_handle
+
offset
;
72
return
*(
volatile
u64
__force
*)addr;
73
}
74
75
static
inline
void
hipz_galpa_store(
struct
h_galpa
galpa,
u32
offset
,
u64
value
)
76
{
77
u64
addr
= galpa.
fw_handle
+
offset
;
78
*(
volatile
u64
__force
*)addr = value;
79
}
80
81
int
hcp_galpas_ctor
(
struct
h_galpas
*galpas,
int
is_user,
82
u64
paddr_kernel,
u64
paddr_user);
83
84
int
hcp_galpas_dtor
(
struct
h_galpas
*galpas);
85
86
u64
hcall_map_page
(
u64
physaddr);
87
88
int
hcall_unmap_page
(
u64
mapaddr);
89
90
#endif
Generated on Thu Jan 10 2013 13:37:34 for Linux Kernel by
1.8.2