Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

powerpc/ps3: Fix hcall lv1_get_version_info

The lv1_get_version_info hcall takes 2, not 1 output
arguments. Adjust the lv1 hcall table and all calls.

Usage:

int lv1_get_version_info(u64 *version_number, u64 *vendor_id)

Signed-off-by: Geoff Levand <geoff@infradead.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>

authored by

Geoff Levand and committed by
Benjamin Herrenschmidt
816cb49a b5ecc559

+6 -4
+1 -1
arch/powerpc/include/asm/lv1call.h
··· 276 276 LV1_CALL(destruct_io_irq_outlet, 1, 0, 121 ) 277 277 LV1_CALL(map_htab, 1, 1, 122 ) 278 278 LV1_CALL(unmap_htab, 1, 0, 123 ) 279 - LV1_CALL(get_version_info, 0, 1, 127 ) 279 + LV1_CALL(get_version_info, 0, 2, 127 ) 280 280 LV1_CALL(insert_htab_entry, 6, 3, 158 ) 281 281 LV1_CALL(read_virtual_uart, 3, 1, 162 ) 282 282 LV1_CALL(write_virtual_uart, 3, 1, 163 )
+2 -2
arch/powerpc/kernel/irq.c
··· 186 186 * Any HV call will have this side effect. 187 187 */ 188 188 if (firmware_has_feature(FW_FEATURE_PS3_LV1)) { 189 - u64 tmp; 190 - lv1_get_version_info(&tmp); 189 + u64 tmp, tmp2; 190 + lv1_get_version_info(&tmp, &tmp2); 191 191 } 192 192 193 193 __hard_irq_enable();
+3 -1
arch/powerpc/platforms/ps3/setup.c
··· 193 193 194 194 static void __init ps3_setup_arch(void) 195 195 { 196 + u64 tmp; 196 197 197 198 DBG(" -> %s:%d\n", __func__, __LINE__); 198 199 199 - lv1_get_version_info(&ps3_firmware_version.raw); 200 + lv1_get_version_info(&ps3_firmware_version.raw, &tmp); 201 + 200 202 printk(KERN_INFO "PS3 firmware version %u.%u.%u\n", 201 203 ps3_firmware_version.major, ps3_firmware_version.minor, 202 204 ps3_firmware_version.rev);