Skip to content

Commit 715a8bd

Browse files
foxengwkozaczuk
authored andcommitted
pci: allow 64-bit BAR offsets
Signed-off-by: Fotis Xenakis <[email protected]> Message-Id: <VI1PR03MB4383D028B2BD9554569BFE69A6E10@VI1PR03MB4383.eurprd03.prod.outlook.com>
1 parent 7305d0f commit 715a8bd

File tree

2 files changed

+21
-29
lines changed

2 files changed

+21
-29
lines changed

drivers/pci-function.cc

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,6 @@ namespace pci {
2020
_addr_lo(0), _addr_hi(0), _addr_64(0), _addr_size(0),
2121
_addr_mmio(mmio_nullptr),
2222
_is_mmio(false), _is_64(false), _is_prefetchable(false)
23-
{
24-
init();
25-
}
26-
27-
bar::~bar()
28-
{
29-
30-
}
31-
32-
void bar::init()
3323
{
3424
u32 val = _dev->pci_readl(_pos);
3525

@@ -56,6 +46,11 @@ namespace pci {
5646
_addr_64 = ((u64)_addr_hi << 32) | (u64)(_addr_lo);
5747
}
5848

49+
bar::~bar()
50+
{
51+
52+
}
53+
5954
u64 bar::read_bar_size()
6055
{
6156
u32 lo_orig = _dev->pci_readl(_pos);
@@ -110,7 +105,7 @@ namespace pci {
110105
return _addr_mmio;
111106
}
112107

113-
u64 bar::readq(u32 offset)
108+
u64 bar::readq(u64 offset)
114109
{
115110
if (_is_mmio) {
116111
return mmio_getq(_addr_mmio + offset);
@@ -119,7 +114,7 @@ namespace pci {
119114
}
120115
}
121116

122-
u32 bar::readl(u32 offset)
117+
u32 bar::readl(u64 offset)
123118
{
124119
if (_is_mmio) {
125120
return mmio_getl(_addr_mmio + offset);
@@ -128,7 +123,7 @@ namespace pci {
128123
}
129124
}
130125

131-
u16 bar::readw(u32 offset)
126+
u16 bar::readw(u64 offset)
132127
{
133128
if (_is_mmio) {
134129
return mmio_getw(_addr_mmio + offset);
@@ -137,7 +132,7 @@ namespace pci {
137132
}
138133
}
139134

140-
u8 bar::readb(u32 offset)
135+
u8 bar::readb(u64 offset)
141136
{
142137
if (_is_mmio) {
143138
return mmio_getb(_addr_mmio + offset);
@@ -146,7 +141,7 @@ namespace pci {
146141
}
147142
}
148143

149-
void bar::writeq(u32 offset, u64 val)
144+
void bar::writeq(u64 offset, u64 val)
150145
{
151146
if (_is_mmio) {
152147
mmio_setq(_addr_mmio + offset, val);
@@ -155,7 +150,7 @@ namespace pci {
155150
}
156151
}
157152

158-
void bar::writel(u32 offset, u32 val)
153+
void bar::writel(u64 offset, u32 val)
159154
{
160155
if (_is_mmio) {
161156
mmio_setl(_addr_mmio + offset, val);
@@ -164,7 +159,7 @@ namespace pci {
164159
}
165160
}
166161

167-
void bar::writew(u32 offset, u16 val)
162+
void bar::writew(u64 offset, u16 val)
168163
{
169164
if (_is_mmio) {
170165
mmio_setw(_addr_mmio + offset, val);
@@ -173,7 +168,7 @@ namespace pci {
173168
}
174169
}
175170

176-
void bar::writeb(u32 offset, u8 val)
171+
void bar::writeb(u64 offset, u8 val)
177172
{
178173
if (_is_mmio) {
179174
mmio_setb(_addr_mmio + offset, val);

drivers/pci-function.hh

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,16 @@ namespace pci {
7777
mmioaddr_t get_mmio();
7878

7979
// Access the pio or mmio bar
80-
u64 readq(u32 offset);
81-
u32 readl(u32 offset);
82-
u16 readw(u32 offset);
83-
u8 readb(u32 offset);
84-
void writeq(u32 offset, u64 val);
85-
void writel(u32 offset, u32 val);
86-
void writew(u32 offset, u16 val);
87-
void writeb(u32 offset, u8 val);
80+
u64 readq(u64 offset);
81+
u32 readl(u64 offset);
82+
u16 readw(u64 offset);
83+
u8 readb(u64 offset);
84+
void writeq(u64 offset, u64 val);
85+
void writel(u64 offset, u32 val);
86+
void writew(u64 offset, u16 val);
87+
void writeb(u64 offset, u8 val);
8888

8989
private:
90-
91-
void init();
92-
9390
/* Architecture-specific hook on bar creation, which allows
9491
* rewriting the bar registers. Returns the bar register.
9592
*/

0 commit comments

Comments
 (0)