if (rc == OPAL_UNSUPPORTED) {
pr_emerg("Reboot type %d not supported.\n",
OPAL_REBOOT_MPIPL);@@ -690,7 +690,7 @@ void __init opal_fadump_dt_scan(struct fw_dump
*fadump_conf, u64 node)
if (!prop)
return;
- ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_KERNEL, &be_addr);
+ ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_KERNEL,
stack_pa(&be_addr));
if ((ret != OPAL_SUCCESS) || !be_addr) {
pr_err("Failed to get Kernel metadata (%lld)\n",
ret);
return;@@ -712,8 +712,8 @@ void __init opal_fadump_dt_scan(struct fw_dump
*fadump_conf, u64 node)
return;
}
- ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_CPU, &be_addr);
- if (be_addr) {
+ ret = opal_mpipl_query_tag(OPAL_MPIPL_TAG_CPU,
stack_pa(&be_addr));
+ if (addr) {
addr = be64_to_cpu(be_addr);
pr_debug("CPU metadata addr: %llx\n", addr);
opal_cpu_metadata = __va(addr);diff --git a/arch/powerpc/platforms/powernv/opal-flash.c
b/arch/powerpc/platforms/powernv/opal-flash.c
index d5ea04e8e4c5..fb989707ce94 100644
--- a/arch/powerpc/platforms/powernv/opal-flash.c
+++ b/arch/powerpc/platforms/powernv/opal-flash.c
@@ -134,7 +134,8 @@ static inline void opal_flash_validate(void)
__be32 size = cpu_to_be32(validate_flash_data.buf_size);
__be32 result;
- ret = opal_validate_flash(__pa(buf), &size, &result);
+ ret = opal_validate_flash((uint64_t)stack_pa(buf),
stack_pa(&size),
+ stack_pa(&result));
validate_flash_data.status = ret;
validate_flash_data.buf_size = be32_to_cpu(size);
@@ -290,7 +291,7 @@ static int opal_flash_update(int op)
goto invalid_img;
/* First entry address */
- addr = __pa(list);
+ addr = (unsigned long)stack_pa(list);
flash:
rc = opal_update_flash(addr);
diff --git a/arch/powerpc/platforms/powernv/opal-hmi.c
b/arch/powerpc/platforms/powernv/opal-hmi.c
index f0c1830deb51..a7df32dfd090 100644
--- a/arch/powerpc/platforms/powernv/opal-hmi.c
+++ b/arch/powerpc/platforms/powernv/opal-hmi.c
@@ -303,7 +303,8 @@ static void hmi_event_handler(struct work_struct
*work)
if (unrecoverable) {
/* Pull all HMI events from OPAL before we panic. */
- while (opal_get_msg(__pa(&msg), sizeof(msg)) ==
OPAL_SUCCESS) {
+ while (opal_get_msg((uint64_t)stack_pa(&msg),
+ sizeof(msg)) == OPAL_SUCCESS) {
u32 type;
type = be32_to_cpu(msg.msg_type);diff --git a/arch/powerpc/platforms/powernv/opal-irqchip.c
b/arch/powerpc/platforms/powernv/opal-irqchip.c
index d55652b5f6fa..0af8e517884c 100644
--- a/arch/powerpc/platforms/powernv/opal-irqchip.c
+++ b/arch/powerpc/platforms/powernv/opal-irqchip.c
@@ -60,7 +60,7 @@ void opal_handle_events(void)
cond_resched();
}
last_outstanding_events = 0;
- if (opal_poll_events(&events) != OPAL_SUCCESS)
+ if (opal_poll_events(stack_pa(&events)) != OPAL_SUCCESS)
return;
e = be64_to_cpu(events) & opal_event_irqchip.mask;
if (e)
@@ -123,7 +123,7 @@ static irqreturn_t opal_interrupt(int irq, void
*data)
{
__be64 events;
- opal_handle_interrupt(virq_to_hw(irq), &events);
+ opal_handle_interrupt(virq_to_hw(irq), stack_pa(&events));
last_outstanding_events = be64_to_cpu(events);
if (opal_have_pending_events())
opal_wake_poller();diff --git a/arch/powerpc/platforms/powernv/opal-lpc.c
b/arch/powerpc/platforms/powernv/opal-lpc.c
index d129d6d45a50..01114ab629dc 100644
--- a/arch/powerpc/platforms/powernv/opal-lpc.c
+++ b/arch/powerpc/platforms/powernv/opal-lpc.c
@@ -28,7 +28,7 @@ static u8 opal_lpc_inb(unsigned long port)
if (opal_lpc_chip_id < 0 || port > 0xffff)
return 0xff;
- rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port,
&data, 1);
+ rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port,
stack_pa(&data), 1);
return rc ? 0xff : be32_to_cpu(data);
}
@@ -41,7 +41,7 @@ static __le16 __opal_lpc_inw(unsigned long port)
return 0xffff;
if (port & 1)
return (__le16)opal_lpc_inb(port) << 8 |
opal_lpc_inb(port + 1);
- rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port,
&data, 2);
+ rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port,
stack_pa(&data), 2);
return rc ? 0xffff : be32_to_cpu(data);
}
static u16 opal_lpc_inw(unsigned long port)
@@ -61,7 +61,7 @@ static __le32 __opal_lpc_inl(unsigned long port)
(__le32)opal_lpc_inb(port + 1) << 16 |
(__le32)opal_lpc_inb(port + 2) << 8 |
opal_lpc_inb(port + 3);
- rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port,
&data, 4);
+ rc = opal_lpc_read(opal_lpc_chip_id, OPAL_LPC_IO, port,
stack_pa(&data), 4);
return rc ? 0xffffffff : be32_to_cpu(data);
}
@@ -208,7 +208,7 @@ static ssize_t lpc_debug_read(struct file *filp,
char __user *ubuf,
len = 2;
}
rc = opal_lpc_read(opal_lpc_chip_id, lpc->lpc_type,
pos,
- &data, len);
+ stack_pa(&data), len);
if (rc)
return -ENXIO;
diff --git a/arch/powerpc/platforms/powernv/opal-nvram.c
b/arch/powerpc/platforms/powernv/opal-nvram.c
index 380bc2d7ebbf..d92e5070baf2 100644
--- a/arch/powerpc/platforms/powernv/opal-nvram.c
+++ b/arch/powerpc/platforms/powernv/opal-nvram.c
@@ -33,7 +33,7 @@ static ssize_t opal_nvram_read(char *buf, size_t
count, loff_t *index)
off = *index;
if ((off + count) > nvram_size)
count = nvram_size - off;
- rc = opal_read_nvram(__pa(buf), count, off);
+ rc = opal_read_nvram((uint64_t)stack_pa(buf), count, off);
if (rc != OPAL_SUCCESS)
return -EIO;
*index += count;
@@ -56,7 +56,7 @@ static ssize_t opal_nvram_write(char *buf, size_t
count, loff_t *index)
count = nvram_size - off;
while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
- rc = opal_write_nvram(__pa(buf), count, off);
+ rc = opal_write_nvram((uint64_t)stack_pa(buf), count,
off);
if (rc == OPAL_BUSY_EVENT) {
if (in_interrupt() || irqs_disabled())
mdelay(OPAL_BUSY_DELAY_MS);diff --git a/arch/powerpc/platforms/powernv/opal-power.c
b/arch/powerpc/platforms/powernv/opal-power.c
index db99ffcb7b82..6927bcd3630e 100644
--- a/arch/powerpc/platforms/powernv/opal-power.c
+++ b/arch/powerpc/platforms/powernv/opal-power.c
@@ -31,7 +31,7 @@ static bool detect_epow(void)
* to OPAL. OPAL returns EPOW info along with classes present.
*/
epow_classes = cpu_to_be16(OPAL_SYSEPOW_MAX);
- rc = opal_get_epow_status(opal_epow_status, &epow_classes);
+ rc = opal_get_epow_status(stack_pa(opal_epow_status),
stack_pa(&epow_classes));
if (rc != OPAL_SUCCESS) {
pr_err("Failed to get EPOW event information\n");
return false;@@ -59,7 +59,7 @@ static bool __init poweroff_pending(void)
__be64 opal_dpo_timeout;
/* Check for DPO event */
- rc = opal_get_dpo_status(&opal_dpo_timeout);
+ rc = opal_get_dpo_status(stack_pa(&opal_dpo_timeout));
if (rc == OPAL_SUCCESS) {
pr_info("Existing DPO event detected.\n");
return true;diff --git a/arch/powerpc/platforms/powernv/opal-powercap.c
b/arch/powerpc/platforms/powernv/opal-powercap.c
index 7bfe4cbeb35a..63e0e4427aea 100644
--- a/arch/powerpc/platforms/powernv/opal-powercap.c
+++ b/arch/powerpc/platforms/powernv/opal-powercap.c
@@ -46,7 +46,7 @@ static ssize_t powercap_show(struct kobject *kobj,
struct kobj_attribute *attr,
if (ret)
goto out_token;
- ret = opal_get_powercap(pcap_attr->handle, token, (u32
*)__pa(&pcap));
+ ret = opal_get_powercap(pcap_attr->handle, token, (u32
*)stack_pa(&pcap));
switch (ret) {
case OPAL_ASYNC_COMPLETION:
ret = opal_async_wait_response(token, &msg);diff --git a/arch/powerpc/platforms/powernv/opal-prd.c
b/arch/powerpc/platforms/powernv/opal-prd.c
index 113bdb151f68..649e8510ec00 100644
--- a/arch/powerpc/platforms/powernv/opal-prd.c
+++ b/arch/powerpc/platforms/powernv/opal-prd.c
@@ -234,7 +234,7 @@ static ssize_t opal_prd_write(struct file *file,
const char __user *buf,
if (IS_ERR(msg))
return PTR_ERR(msg);
- rc = opal_prd_msg(msg);
+ rc = opal_prd_msg(stack_pa(msg));
if (rc) {
pr_warn("write: opal_prd_msg returned %d\n", rc);
size = -EIO;@@ -252,7 +252,7 @@ static int opal_prd_release(struct inode *inode,
struct file *file)
msg.size = cpu_to_be16(sizeof(msg));
msg.type = OPAL_PRD_MSG_TYPE_FINI;
- opal_prd_msg((struct opal_prd_msg *)&msg);
+ opal_prd_msg((struct opal_prd_msg *)stack_pa(&msg));
atomic_xchg(&prd_usage, 0);
@@ -281,7 +281,7 @@ static long opal_prd_ioctl(struct file *file,
unsigned int cmd,
return -EFAULT;
scom.rc = opal_xscom_read(scom.chip, scom.addr,
- (__be64 *)&scom.data);
+ (__be64
*)stack_pa(&scom.data));
scom.data = be64_to_cpu(scom.data);
pr_devel("ioctl SCOM_READ: chip %llx addr %016llx
data %016llx rc %lld\n",
scom.chip, scom.addr, scom.data,
scom.rc);diff --git a/arch/powerpc/platforms/powernv/opal-psr.c
b/arch/powerpc/platforms/powernv/opal-psr.c
index 6441e17b6996..c37257b1ffe4 100644
--- a/arch/powerpc/platforms/powernv/opal-psr.c
+++ b/arch/powerpc/platforms/powernv/opal-psr.c
@@ -40,7 +40,7 @@ static ssize_t psr_show(struct kobject *kobj,
struct kobj_attribute *attr,
goto out_token;
ret = opal_get_power_shift_ratio(psr_attr->handle, token,
- (u32 *)__pa(&psr));
+ (u32 *)stack_pa(&psr));
switch (ret) {
case OPAL_ASYNC_COMPLETION:
ret = opal_async_wait_response(token, &msg);diff --git a/arch/powerpc/platforms/powernv/opal-rtc.c
b/arch/powerpc/platforms/powernv/opal-rtc.c
index a9bcf9217e64..891651455066 100644
--- a/arch/powerpc/platforms/powernv/opal-rtc.c
+++ b/arch/powerpc/platforms/powernv/opal-rtc.c
@@ -43,7 +43,7 @@ time64_t __init opal_get_boot_time(void)
return 0;
while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
- rc = opal_rtc_read(&__y_m_d, &__h_m_s_ms);
+ rc = opal_rtc_read(stack_pa(&__y_m_d),
stack_pa(&__h_m_s_ms));
if (rc == OPAL_BUSY_EVENT) {
mdelay(OPAL_BUSY_DELAY_MS);
opal_poll_events(NULL);diff --git a/arch/powerpc/platforms/powernv/opal-secvar.c
b/arch/powerpc/platforms/powernv/opal-secvar.c
index 14133e120bdd..a44df58d565d 100644
--- a/arch/powerpc/platforms/powernv/opal-secvar.c
+++ b/arch/powerpc/platforms/powernv/opal-secvar.c
@@ -64,7 +64,8 @@ static int opal_get_variable(const char *key,
uint64_t ksize,
*dsize = cpu_to_be64(*dsize);
- rc = opal_secvar_get(key, ksize, data, dsize);
+ rc = opal_secvar_get(stack_pa(key), ksize, stack_pa(data),
+ stack_pa(dsize));
*dsize = be64_to_cpu(*dsize);
@@ -81,7 +82,8 @@ static int opal_get_next_variable(const char *key,
uint64_t *keylen,
*keylen = cpu_to_be64(*keylen);
- rc = opal_secvar_get_next(key, keylen, keybufsize);
+ rc = opal_secvar_get_next(stack_pa(key), stack_pa(keylen),
+ keybufsize);
*keylen = be64_to_cpu(*keylen);
@@ -96,7 +98,8 @@ static int opal_set_variable(const char *key,
uint64_t ksize, u8 *data,
if (!key || !data)
return -EINVAL;
- rc = opal_secvar_enqueue_update(key, ksize, data, dsize);
+ rc = opal_secvar_enqueue_update(stack_pa(key), ksize,
stack_pa(data),
+ dsize);
return opal_status_to_err(rc);
}
diff --git a/arch/powerpc/platforms/powernv/opal-sensor.c
b/arch/powerpc/platforms/powernv/opal-sensor.c
index 3192c614a1e1..ff5f78bb419b 100644
--- a/arch/powerpc/platforms/powernv/opal-sensor.c
+++ b/arch/powerpc/platforms/powernv/opal-sensor.c
@@ -25,7 +25,7 @@ int opal_get_sensor_data(u32 sensor_hndl, u32
*sensor_data)
if (token < 0)
return token;
- ret = opal_sensor_read(sensor_hndl, token, &data);
+ ret = opal_sensor_read(sensor_hndl, token, stack_pa(&data));
switch (ret) {
case OPAL_ASYNC_COMPLETION:
ret = opal_async_wait_response(token, &msg);@@ -78,7 +78,7 @@ int opal_get_sensor_data_u64(u32 sensor_hndl, u64
*sensor_data)
if (token < 0)
return token;
- ret = opal_sensor_read_u64(sensor_hndl, token, &data);
+ ret = opal_sensor_read_u64(sensor_hndl, token,
stack_pa(&data));
switch (ret) {
case OPAL_ASYNC_COMPLETION:
ret = opal_async_wait_response(token, &msg);diff --git a/arch/powerpc/platforms/powernv/opal-sysparam.c
b/arch/powerpc/platforms/powernv/opal-sysparam.c
index a12312afe4ef..3882b31a9e61 100644
--- a/arch/powerpc/platforms/powernv/opal-sysparam.c
+++ b/arch/powerpc/platforms/powernv/opal-sysparam.c
@@ -41,7 +41,7 @@ static ssize_t opal_get_sys_param(u32 param_id, u32
length, void *buffer)
goto out;
}
- ret = opal_get_param(token, param_id, (u64)buffer, length);
+ ret = opal_get_param(token, param_id, (u64)stack_pa(buffer),
length);
if (ret != OPAL_ASYNC_COMPLETION) {
ret = opal_error_code(ret);
goto out_token;@@ -76,7 +76,7 @@ static int opal_set_sys_param(u32 param_id, u32
length, void *buffer)
goto out;
}
- ret = opal_set_param(token, param_id, (u64)buffer, length);
+ ret = opal_set_param(token, param_id, (u64)stack_pa(buffer),
length);
if (ret != OPAL_ASYNC_COMPLETION) {
ret = opal_error_code(ret);diff --git a/arch/powerpc/platforms/powernv/opal-xscom.c
b/arch/powerpc/platforms/powernv/opal-xscom.c
index 6b4eed2ef4fa..b318e2ef4ba2 100644
--- a/arch/powerpc/platforms/powernv/opal-xscom.c
+++ b/arch/powerpc/platforms/powernv/opal-xscom.c
@@ -58,7 +58,7 @@ static int opal_scom_read(uint32_t chip, uint64_t
addr, u64 reg, u64 *value)
__be64 v;
reg = opal_scom_unmangle(addr + reg);
- rc = opal_xscom_read(chip, reg, (__be64 *)__pa(&v));
+ rc = opal_xscom_read(chip, reg, (__be64 *)stack_pa(&v));
if (rc) {
*value = 0xfffffffffffffffful;
return -EIO;diff --git a/arch/powerpc/platforms/powernv/opal.c
b/arch/powerpc/platforms/powernv/opal.c
index cdf3838f08d3..ada336d77e64 100644
--- a/arch/powerpc/platforms/powernv/opal.c
+++ b/arch/powerpc/platforms/powernv/opal.c
@@ -357,7 +357,7 @@ static void opal_handle_message(void)
s64 ret;
u32 type;
- ret = opal_get_msg(__pa(opal_msg), opal_msg_size);
+ ret = opal_get_msg((uint64_t)stack_pa(opal_msg),
opal_msg_size);
/* No opal message pending. */
if (ret == OPAL_RESOURCE)
return;
@@ -431,11 +431,11 @@ int opal_get_chars(uint32_t vtermno, char *buf,
int count)
if (!opal.entry)
return -ENODEV;
- opal_poll_events(&evt);
+ opal_poll_events(stack_pa(&evt));
if ((be64_to_cpu(evt) & OPAL_EVENT_CONSOLE_INPUT) == 0)
return 0;
len = cpu_to_be64(count);
- rc = opal_console_read(vtermno, &len, buf);
+ rc = opal_console_read(vtermno, stack_pa(&len),
stack_pa(buf));
if (rc == OPAL_SUCCESS)
return be64_to_cpu(len);
return 0;
@@ -453,7 +453,7 @@ static int __opal_put_chars(uint32_t vtermno,
const char *data, int total_len, b
if (atomic)
spin_lock_irqsave(&opal_write_lock, flags);
- rc = opal_console_write_buffer_space(vtermno, &olen);
+ rc = opal_console_write_buffer_space(vtermno,
stack_pa(&olen));
if (rc || be64_to_cpu(olen) < total_len) {
/* Closed -> drop characters */
if (rc)@@ -465,7 +465,7 @@ static int __opal_put_chars(uint32_t vtermno,
const char *data, int total_len, b
/* Should not get a partial write here because space is
available. */
olen = cpu_to_be64(total_len);
- rc = opal_console_write(vtermno, &olen, data);
+ rc = opal_console_write(vtermno, stack_pa(&olen),
stack_pa((void *)data));
if (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
if (rc == OPAL_BUSY_EVENT)
opal_poll_events(NULL);@@ -527,7 +527,7 @@ static s64 __opal_flush_console(uint32_t vtermno)
*/
WARN_ONCE(1, "opal: OPAL_CONSOLE_FLUSH missing.\n");
- opal_poll_events(&evt);
+ opal_poll_events(stack_pa(&evt));
if (!(be64_to_cpu(evt) & OPAL_EVENT_CONSOLE_OUTPUT))
return OPAL_SUCCESS;
return OPAL_BUSY;
@@ -647,7 +647,7 @@ void __noreturn pnv_platform_error_reboot(struct
pt_regs *regs, const char *msg)
* Don't bother to shut things down because this will
* xstop the system.
*/
- if (opal_cec_reboot2(OPAL_REBOOT_PLATFORM_ERROR, msg)
+ if (opal_cec_reboot2(OPAL_REBOOT_PLATFORM_ERROR,
stack_pa((void *)msg))
== OPAL_UNSUPPORTED)
{
pr_emerg("Reboot type %d not supported for %s\n",
OPAL_REBOOT_PLATFORM_ERROR, msg);@@ -720,7 +720,7 @@ int opal_hmi_exception_early2(struct pt_regs
*regs)
* Check 64-bit flag mask to find out if an event was
generated,
* and whether TB is still valid or not etc.
*/
- rc = opal_handle_hmi2(&out_flags);
+ rc = opal_handle_hmi2(stack_pa(&out_flags));
if (rc != OPAL_SUCCESS)
return 0;
diff --git a/arch/powerpc/platforms/powernv/pci-ioda.c
b/arch/powerpc/platforms/powernv/pci-ioda.c
index 5c144c05cbfd..4d85e8253f94 100644
--- a/arch/powerpc/platforms/powernv/pci-ioda.c
+++ b/arch/powerpc/platforms/powernv/pci-ioda.c
@@ -628,7 +628,8 @@ static int pnv_ioda_get_pe_state(struct pnv_phb
*phb, int pe_no)
/* Check the master PE */
rc = opal_pci_eeh_freeze_status(phb->opal_id, pe_no,
- &state, &pcierr, NULL);
+ stack_pa(&state),
+ stack_pa(&pcierr), NULL);
if (rc != OPAL_SUCCESS) {
pr_warn("%s: Failure %lld getting "
"PHB#%x-PE#%x state\n",@@ -644,8 +645,8 @@ static int pnv_ioda_get_pe_state(struct pnv_phb
*phb, int pe_no)
list_for_each_entry(slave, &pe->slaves, list) {
rc = opal_pci_eeh_freeze_status(phb->opal_id,
slave->pe_number,
- &fstate,
- &pcierr,
+ stack_pa(&fstate),
+ stack_pa(&pcierr),
NULL);
if (rc != OPAL_SUCCESS) {
pr_warn("%s: Failure %lld getting "@@ -2061,7 +2062,7 @@ static int __pnv_pci_ioda_msi_setup(struct
pnv_phb *phb, struct pci_dev *dev,
__be64 addr64;
rc = opal_get_msi_64(phb->opal_id, pe->mve_number,
xive_num, 1,
- &addr64, &data);
+ stack_pa(&addr64),
stack_pa(&data));
if (rc) {
pr_warn("%s: OPAL error %d getting 64-bit MSI
data\n",
pci_name(dev), rc);@@ -2073,7 +2074,7 @@ static int __pnv_pci_ioda_msi_setup(struct
pnv_phb *phb, struct pci_dev *dev,
__be32 addr32;
rc = opal_get_msi_32(phb->opal_id, pe->mve_number,
xive_num, 1,
- &addr32, &data);
+ stack_pa(&addr32),
stack_pa(&data));
if (rc) {
pr_warn("%s: OPAL error %d getting 32-bit MSI
data\n",
pci_name(dev), rc);@@ -2415,7 +2416,8 @@ static int pnv_pci_diag_data_set(void *data,
u64 val)
s64 ret;
/* Retrieve the diag data from firmware */
- ret = opal_pci_get_phb_diag_data2(phb->opal_id, phb-
quoted
diag_data,
+ ret = opal_pci_get_phb_diag_data2(phb->opal_id,
+ stack_pa(phb->diag_data),
phb->diag_data_size);
if (ret != OPAL_SUCCESS)
return -EIO;
diff --git a/arch/powerpc/platforms/powernv/pci.c
b/arch/powerpc/platforms/powernv/pci.c
index 233a50e65fce..0c21b5aa24f5 100644
--- a/arch/powerpc/platforms/powernv/pci.c
+++ b/arch/powerpc/platforms/powernv/pci.c
@@ -84,7 +84,7 @@ int pnv_pci_get_device_tree(uint32_t phandle, void
*buf, uint64_t len)
if (!opal_check_token(OPAL_GET_DEVICE_TREE))
return -ENXIO;
- rc = opal_get_device_tree(phandle, (uint64_t)buf, len);
+ rc = opal_get_device_tree(phandle, (uint64_t)stack_pa(buf),
len);
if (rc < OPAL_SUCCESS)
return -EIO;
@@ -99,7 +99,7 @@ int pnv_pci_get_presence_state(uint64_t id, uint8_t
*state)
if (!opal_check_token(OPAL_PCI_GET_PRESENCE_STATE))
return -ENXIO;
- rc = opal_pci_get_presence_state(id, (uint64_t)state);
+ rc = opal_pci_get_presence_state(id,
(uint64_t)stack_pa(state));
if (rc != OPAL_SUCCESS)
return -EIO;
@@ -114,7 +114,7 @@ int pnv_pci_get_power_state(uint64_t id, uint8_t
*state)
if (!opal_check_token(OPAL_PCI_GET_POWER_STATE))
return -ENXIO;
- rc = opal_pci_get_power_state(id, (uint64_t)state);
+ rc = opal_pci_get_power_state(id, (uint64_t)stack_pa(state));
if (rc != OPAL_SUCCESS)
return -EIO;
@@ -135,7 +135,7 @@ int pnv_pci_set_power_state(uint64_t id, uint8_t
state, struct opal_msg *msg)
if (unlikely(token < 0))
return token;
- rc = opal_pci_set_power_state(token, id, (uint64_t)&state);
+ rc = opal_pci_set_power_state(token, id,
(uint64_t)stack_pa(&state));
if (rc == OPAL_SUCCESS) {
ret = 0;
goto exit;@@ -493,7 +493,8 @@ static void pnv_pci_handle_eeh_config(struct
pnv_phb *phb, u32 pe_no)
spin_lock_irqsave(&phb->lock, flags);
/* Fetch PHB diag-data */
- rc = opal_pci_get_phb_diag_data2(phb->opal_id, phb-
quoted
diag_data,
+ rc = opal_pci_get_phb_diag_data2(phb->opal_id,
+ stack_pa(phb->diag_data),
phb->diag_data_size);
has_diag = (rc == OPAL_SUCCESS);
@@ -554,8 +555,8 @@ static void pnv_pci_config_check_eeh(struct
pci_dn *pdn)
} else {
rc = opal_pci_eeh_freeze_status(phb->opal_id,
pe_no,
- &fstate,
- &pcierr,
+ stack_pa(&fstate),
+ stack_pa(&pcierr),
NULL);
if (rc) {
pr_warn("%s: Failure %lld getting PHB#%x-
PE#%x state\n",@@ -592,20 +593,22 @@ int pnv_pci_cfg_read(struct pci_dn *pdn,
switch (size) {
case 1: {
u8 v8;
- rc = opal_pci_config_read_byte(phb->opal_id, bdfn,
where, &v8);
+ rc = opal_pci_config_read_byte(phb->opal_id, bdfn,
where,
+ stack_pa(&v8));
*val = (rc == OPAL_SUCCESS) ? v8 : 0xff;
break;
}
case 2: {
__be16 v16;
rc = opal_pci_config_read_half_word(phb->opal_id,
bdfn, where,
- &v16);
+ stack_pa(&v16));
*val = (rc == OPAL_SUCCESS) ? be16_to_cpu(v16) :
0xffff;
break;
}
case 4: {
__be32 v32;
- rc = opal_pci_config_read_word(phb->opal_id, bdfn,
where, &v32);
+ rc = opal_pci_config_read_word(phb->opal_id, bdfn,
where,
+ stack_pa(&v32));
*val = (rc == OPAL_SUCCESS) ? be32_to_cpu(v32) :
0xffffffff;
break;
}@@ -765,7 +768,7 @@ int pnv_pci_set_tunnel_bar(struct pci_dev *dev,
u64 addr, int enable)
return -ENXIO;
mutex_lock(&tunnel_mutex);
- rc = opal_pci_get_pbcq_tunnel_bar(phb->opal_id, &val);
+ rc = opal_pci_get_pbcq_tunnel_bar(phb->opal_id,
stack_pa(&val));
if (rc != OPAL_SUCCESS) {
rc = -EIO;
goto out;diff --git a/arch/powerpc/platforms/powernv/setup.c
b/arch/powerpc/platforms/powernv/setup.c
index 61ab2d38ff4b..aae6ad04c65f 100644
--- a/arch/powerpc/platforms/powernv/setup.c
+++ b/arch/powerpc/platforms/powernv/setup.c
@@ -407,7 +407,7 @@ static void pnv_kexec_wait_secondaries_down(void)
for (;;) {
rc =
opal_query_cpu_status(get_hard_smp_processor_id(i),
- &status);
+
stack_pa(&status));
if (rc != OPAL_SUCCESS || status !=
OPAL_THREAD_STARTED)
break;
barrier();diff --git a/arch/powerpc/platforms/powernv/smp.c
b/arch/powerpc/platforms/powernv/smp.c
index 9e1a25398f98..2f70e0bf9873 100644
--- a/arch/powerpc/platforms/powernv/smp.c
+++ b/arch/powerpc/platforms/powernv/smp.c
@@ -86,7 +86,7 @@ static int pnv_smp_kick_cpu(int nr)
* first time. OPAL v3 allows us to query OPAL to know if it
* has the CPUs, so we do that
*/
- rc = opal_query_cpu_status(pcpu, &status);
+ rc = opal_query_cpu_status(pcpu, stack_pa(&status));
if (rc != OPAL_SUCCESS) {
pr_warn("OPAL Error %ld querying CPU %d state\n", rc,
nr);
return -ENODEV;diff --git a/arch/powerpc/sysdev/xics/icp-opal.c
b/arch/powerpc/sysdev/xics/icp-opal.c
index 4dae624b9f2f..a79b98349a1e 100644
--- a/arch/powerpc/sysdev/xics/icp-opal.c
+++ b/arch/powerpc/sysdev/xics/icp-opal.c
@@ -53,7 +53,7 @@ static unsigned int icp_opal_get_xirr(void)
return kvm_xirr;
/* Then ask OPAL */
- rc = opal_int_get_xirr(&hw_xirr, false);
+ rc = opal_int_get_xirr(stack_pa(&hw_xirr), false);
if (rc < 0)
return 0;
return be32_to_cpu(hw_xirr);
diff --git a/arch/powerpc/sysdev/xics/ics-opal.c
b/arch/powerpc/sysdev/xics/ics-opal.c
index 6cfbb4fac7fb..5bf54470b35d 100644
--- a/arch/powerpc/sysdev/xics/ics-opal.c
+++ b/arch/powerpc/sysdev/xics/ics-opal.c
@@ -105,7 +105,7 @@ static int ics_opal_set_affinity(struct irq_data
*d,
if (hw_irq == XICS_IPI || hw_irq == XICS_IRQ_SPURIOUS)
return -1;
- rc = opal_get_xive(hw_irq, &oserver, &priority);
+ rc = opal_get_xive(hw_irq, stack_pa(&oserver),
stack_pa(&priority));
if (rc != OPAL_SUCCESS) {
pr_err("%s: opal_get_xive(irq=%d [hw 0x%x]) error
%lld\n",
__func__, d->irq, hw_irq, rc);@@ -160,7 +160,7 @@ static int ics_opal_check(struct ics *ics,
unsigned int hw_irq)
return -EINVAL;
/* Check if HAL knows about this interrupt */
- rc = opal_get_xive(hw_irq, &server, &priority);
+ rc = opal_get_xive(hw_irq, stack_pa(&server),
stack_pa(&priority));
if (rc != OPAL_SUCCESS)
return -ENXIO;
@@ -174,7 +174,7 @@ static void ics_opal_mask_unknown(struct ics
*ics, unsigned long vec)
int8_t priority;
/* Check if HAL knows about this interrupt */
- rc = opal_get_xive(vec, &server, &priority);
+ rc = opal_get_xive(vec, stack_pa(&server),
stack_pa(&priority));
if (rc != OPAL_SUCCESS)
return;
@@ -188,7 +188,7 @@ static long ics_opal_get_server(struct ics *ics,
unsigned long vec)
int8_t priority;
/* Check if HAL knows about this interrupt */
- rc = opal_get_xive(vec, &server, &priority);
+ rc = opal_get_xive(vec, stack_pa(&server),
stack_pa(&priority));
if (rc != OPAL_SUCCESS)
return -1;
return ics_opal_unmangle_server(be16_to_cpu(server));
diff --git a/arch/powerpc/sysdev/xive/native.c
b/arch/powerpc/sysdev/xive/native.c
index 3925825954bc..a2082ee866ca 100644
--- a/arch/powerpc/sysdev/xive/native.c
+++ b/arch/powerpc/sysdev/xive/native.c
@@ -52,8 +52,11 @@ int xive_native_populate_irq_data(u32 hw_irq,
struct xive_irq_data *data)
memset(data, 0, sizeof(*data));
- rc = opal_xive_get_irq_info(hw_irq, &flags, &eoi_page,
&trig_page,
- &esb_shift, &src_chip);
+ rc = opal_xive_get_irq_info(hw_irq, stack_pa(&flags),
+ stack_pa(&eoi_page),
+ stack_pa(&trig_page),
+ stack_pa(&esb_shift),
+ stack_pa(&src_chip));
if (rc) {
pr_err("opal_xive_get_irq_info(0x%x) returned
%lld\n",
hw_irq, rc);@@ -117,7 +120,8 @@ static int xive_native_get_irq_config(u32 hw_irq,
u32 *target, u8 *prio,
__be64 vp;
__be32 lirq;
- rc = opal_xive_get_irq_config(hw_irq, &vp, prio, &lirq);
+ rc = opal_xive_get_irq_config(hw_irq, stack_pa(&vp),
stack_pa(prio),
+ stack_pa(&lirq));
*target = be64_to_cpu(vp);
*sw_irq = be32_to_cpu(lirq);
@@ -150,8 +154,8 @@ int xive_native_configure_queue(u32 vp_id, struct
xive_q *q, u8 prio,
q->toggle = 0;
rc = opal_xive_get_queue_info(vp_id, prio, NULL, NULL,
- &qeoi_page_be,
- &esc_irq_be,
+ stack_pa(&qeoi_page_be),
+ stack_pa(&esc_irq_be),
NULL);
if (rc) {
vp_err(vp_id, "Failed to get queue %d info : %lld\n",
prio, rc);@@ -416,7 +420,8 @@ static void xive_native_setup_cpu(unsigned int
cpu, struct xive_cpu *xc)
}
/* Grab it's CAM value */
- rc = opal_xive_get_vp_info(vp, NULL, &vp_cam_be, NULL, NULL);
+ rc = opal_xive_get_vp_info(vp, NULL, stack_pa(&vp_cam_be),
NULL,
+ NULL);
if (rc) {
pr_err("Failed to get pool VP info CPU %d\n", cpu);
return;@@ -756,7 +761,8 @@ int xive_native_get_vp_info(u32 vp_id, u32
*out_cam_id, u32 *out_chip_id)
__be32 vp_chip_id_be;
s64 rc;
- rc = opal_xive_get_vp_info(vp_id, NULL, &vp_cam_be, NULL,
&vp_chip_id_be);
+ rc = opal_xive_get_vp_info(vp_id, NULL, stack_pa(&vp_cam_be),
NULL,
+ stack_pa(&vp_chip_id_be));
if (rc) {
vp_err(vp_id, "Failed to get VP info : %lld\n", rc);
return -EIO;@@ -794,8 +800,11 @@ int xive_native_get_queue_info(u32 vp_id, u32
prio,
__be64 qflags;
s64 rc;
- rc = opal_xive_get_queue_info(vp_id, prio, &qpage, &qsize,
- &qeoi_page, &escalate_irq,
&qflags);
+ rc = opal_xive_get_queue_info(vp_id, prio, stack_pa(&qpage),
+ stack_pa(&qsize),
+ stack_pa(&qeoi_page),
+ stack_pa(&escalate_irq),
+ stack_pa(&qflags));
if (rc) {
vp_err(vp_id, "failed to get queue %d info : %lld\n",
prio, rc);
return -EIO;@@ -822,8 +831,8 @@ int xive_native_get_queue_state(u32 vp_id, u32
prio, u32 *qtoggle, u32 *qindex)
__be32 opal_qindex;
s64 rc;
- rc = opal_xive_get_queue_state(vp_id, prio, &opal_qtoggle,
- &opal_qindex);
+ rc = opal_xive_get_queue_state(vp_id, prio,
stack_pa(&opal_qtoggle),
+ stack_pa(&opal_qindex));
if (rc) {
vp_err(vp_id, "failed to get queue %d state :
%lld\n", prio, rc);
return -EIO;@@ -864,7 +873,7 @@ int xive_native_get_vp_state(u32 vp_id, u64
*out_state)
__be64 state;
s64 rc;
- rc = opal_xive_get_vp_state(vp_id, &state);
+ rc = opal_xive_get_vp_state(vp_id, stack_pa(&state));
if (rc) {
vp_err(vp_id, "failed to get vp state : %lld\n", rc);
return -EIO;diff --git a/drivers/char/ipmi/ipmi_powernv.c
b/drivers/char/ipmi/ipmi_powernv.c
index da22a8cbe68e..55032e205e8e 100644
--- a/drivers/char/ipmi/ipmi_powernv.c
+++ b/drivers/char/ipmi/ipmi_powernv.c
@@ -91,7 +91,7 @@ static void ipmi_powernv_send(void *send_info,
struct ipmi_smi_msg *msg)
pr_devel("%s: opal_ipmi_send(0x%llx, %p, %ld)\n", __func__,
smi->interface_id, opal_msg, size);
- rc = opal_ipmi_send(smi->interface_id, opal_msg, size);
+ rc = opal_ipmi_send(smi->interface_id, stack_pa(opal_msg),
size);
pr_devel("%s: -> %d\n", __func__, rc);
if (!rc) {@@ -132,8 +132,8 @@ static int ipmi_powernv_recv(struct
ipmi_smi_powernv *smi)
size = cpu_to_be64(sizeof(*opal_msg) + IPMI_MAX_MSG_LENGTH);
rc = opal_ipmi_recv(smi->interface_id,
- opal_msg,
- &size);
+ stack_pa(opal_msg),
+ stack_pa(&size));
size = be64_to_cpu(size);
pr_devel("%s: -> %d (size %lld)\n", __func__,
rc, rc == 0 ? size : 0);diff --git a/drivers/char/powernv-op-panel.c b/drivers/char/powernv-
op-panel.c
index 3c99696b145e..10588093e2e2 100644
--- a/drivers/char/powernv-op-panel.c
+++ b/drivers/char/powernv-op-panel.c
@@ -60,7 +60,7 @@ static int __op_panel_update_display(void)
return token;
}
- rc = opal_write_oppanel_async(token, oppanel_lines,
num_lines);
+ rc = opal_write_oppanel_async(token, stack_pa(oppanel_lines),
num_lines);
switch (rc) {
case OPAL_ASYNC_COMPLETION:
rc = opal_async_wait_response(token, &msg);diff --git a/drivers/i2c/busses/i2c-opal.c b/drivers/i2c/busses/i2c-
opal.c
index 9f773b4f5ed8..d1d1fb3a55ba 100644
--- a/drivers/i2c/busses/i2c-opal.c
+++ b/drivers/i2c/busses/i2c-opal.c
@@ -49,7 +49,7 @@ static int i2c_opal_send_request(u32 bus_id, struct
opal_i2c_request *req)
return token;
}
- rc = opal_i2c_request(token, bus_id, req);
+ rc = opal_i2c_request(token, bus_id, stack_pa(req));
if (rc != OPAL_ASYNC_COMPLETION) {
rc = i2c_opal_translate_error(rc);
goto exit;diff --git a/drivers/leds/leds-powernv.c b/drivers/leds/leds-
powernv.c
index 743e2cdd0891..b65bfdf6fa18 100644
--- a/drivers/leds/leds-powernv.c
+++ b/drivers/leds/leds-powernv.c
@@ -99,7 +99,7 @@ static int powernv_led_set(struct powernv_led_data
*powernv_led,
}
rc = opal_leds_set_ind(token, powernv_led->loc_code,
- led_mask, led_value, &max_type);
+ led_mask, led_value,
stack_pa(&max_type));
if (rc != OPAL_ASYNC_COMPLETION) {
dev_err(dev, "%s: OPAL set LED call failed for %s
[rc=%d]\n",
__func__, powernv_led->loc_code, rc);@@ -142,7 +142,9 @@ static enum led_brightness powernv_led_get(struct
powernv_led_data *powernv_led)
max_type = powernv_led_common->max_led_type;
rc = opal_leds_get_ind(powernv_led->loc_code,
- &mask, &value, &max_type);
+ stack_pa(&mask),
+ stack_pa(&value),
+ stack_pa(&max_type));
if (rc != OPAL_SUCCESS && rc != OPAL_PARTIAL) {
dev_err(dev, "%s: OPAL get led call failed
[rc=%d]\n",
__func__, rc);diff --git a/drivers/mtd/devices/powernv_flash.c
b/drivers/mtd/devices/powernv_flash.c
index 36e060386e59..a2d0e61d0afe 100644
--- a/drivers/mtd/devices/powernv_flash.c
+++ b/drivers/mtd/devices/powernv_flash.c
@@ -66,10 +66,10 @@ static int powernv_flash_async_op(struct mtd_info
*mtd, enum flash_op op,
switch (op) {
case FLASH_OP_READ:
- rc = opal_flash_read(info->id, offset, __pa(buf),
len, token);
+ rc = opal_flash_read(info->id, offset,
(uint64_t)stack_pa(buf), len, token);
break;
case FLASH_OP_WRITE:
- rc = opal_flash_write(info->id, offset, __pa(buf),
len, token);
+ rc = opal_flash_write(info->id, offset,
(uint64_t)stack_pa(buf), len, token);
break;
case FLASH_OP_ERASE:
rc = opal_flash_erase(info->id, offset, len, token);diff --git a/drivers/rtc/rtc-opal.c b/drivers/rtc/rtc-opal.c
index ad41aaf8a17f..9e627fb7115a 100644
--- a/drivers/rtc/rtc-opal.c
+++ b/drivers/rtc/rtc-opal.c
@@ -53,7 +53,7 @@ static int opal_get_rtc_time(struct device *dev,
struct rtc_time *tm)
__be64 __h_m_s_ms;
while (rc == OPAL_BUSY || rc == OPAL_BUSY_EVENT) {
- rc = opal_rtc_read(&__y_m_d, &__h_m_s_ms);
+ rc = opal_rtc_read(stack_pa(&__y_m_d),
stack_pa(&__h_m_s_ms));
if (rc == OPAL_BUSY_EVENT) {
msleep(OPAL_BUSY_DELAY_MS);
opal_poll_events(NULL);@@ -127,7 +127,7 @@ static int opal_get_tpo_time(struct device *dev,
struct rtc_wkalrm *alarm)
return token;
}
- rc = opal_tpo_read(token, &__y_m_d, &__h_m);
+ rc = opal_tpo_read(token, stack_pa(&__y_m_d),
stack_pa(&__h_m));
if (rc != OPAL_ASYNC_COMPLETION) {
rc = -EIO;
goto exit;