Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
efdad722
Commit
efdad722
authored
Dec 16, 2011
by
Benjamin Herrenschmidt
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'ps3' into next
parents
e6f08d37
987706ac
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
156 additions
and
149 deletions
+156
-149
arch/powerpc/configs/ps3_defconfig
arch/powerpc/configs/ps3_defconfig
+20
-19
arch/powerpc/include/asm/lv1call.h
arch/powerpc/include/asm/lv1call.h
+5
-5
arch/powerpc/kernel/irq.c
arch/powerpc/kernel/irq.c
+2
-2
arch/powerpc/platforms/ps3/interrupt.c
arch/powerpc/platforms/ps3/interrupt.c
+53
-50
arch/powerpc/platforms/ps3/repository.c
arch/powerpc/platforms/ps3/repository.c
+69
-68
arch/powerpc/platforms/ps3/setup.c
arch/powerpc/platforms/ps3/setup.c
+3
-1
arch/powerpc/platforms/ps3/smp.c
arch/powerpc/platforms/ps3/smp.c
+1
-1
arch/powerpc/platforms/ps3/spu.c
arch/powerpc/platforms/ps3/spu.c
+1
-1
drivers/net/ethernet/toshiba/ps3_gelic_net.c
drivers/net/ethernet/toshiba/ps3_gelic_net.c
+2
-2
No files found.
arch/powerpc/configs/ps3_defconfig
View file @
efdad722
...
...
@@ -6,10 +6,10 @@ CONFIG_NR_CPUS=2
CONFIG_EXPERIMENTAL=y
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_
NAMESPACES
=y
CONFIG_
SPARSE_IRQ
=y
CONFIG_BLK_DEV_INITRD=y
CONFIG_
EXPERT
=y
CONFIG_
KALLSYMS_EXTRA_PASS
=y
CONFIG_
CC_OPTIMIZE_FOR_SIZE
=y
CONFIG_
EMBEDDED
=y
# CONFIG_PERF_EVENTS is not set
# CONFIG_COMPAT_BRK is not set
CONFIG_SLAB=y
...
...
@@ -17,6 +17,7 @@ CONFIG_PROFILING=y
CONFIG_OPROFILE=m
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_PPC_POWERNV is not set
# CONFIG_PPC_PSERIES is not set
# CONFIG_PPC_PMAC is not set
CONFIG_PPC_PS3=y
...
...
@@ -27,14 +28,14 @@ CONFIG_PS3_VRAM=m
CONFIG_PS3_LPM=m
# CONFIG_PPC_OF_BOOT_TRAMPOLINE is not set
CONFIG_HIGH_RES_TIMERS=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
CONFIG_BINFMT_MISC=y
CONFIG_KEXEC=y
CONFIG_SPARSE_IRQ=y
# CONFIG_SPARSEMEM_VMEMMAP is not set
CONFIG_SCHED_SMT=y
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE=""
CONFIG_PM=y
CONFIG_PM
_RUNTIME
=y
CONFIG_PM_DEBUG=y
# CONFIG_SECCOMP is not set
# CONFIG_PCI is not set
...
...
@@ -81,20 +82,23 @@ CONFIG_SCSI_MULTI_LUN=y
CONFIG_MD=y
CONFIG_BLK_DEV_DM=m
CONFIG_NETDEVICES=y
CONFIG_NET_ETHERNET=y
# CONFIG_NET_VENDOR_BROADCOM is not set
# CONFIG_NET_VENDOR_CHELSIO is not set
# CONFIG_NET_VENDOR_INTEL is not set
# CONFIG_NET_VENDOR_MARVELL is not set
# CONFIG_NET_VENDOR_MICREL is not set
# CONFIG_NET_VENDOR_NATSEMI is not set
# CONFIG_NET_VENDOR_SEEQ is not set
# CONFIG_NET_VENDOR_STMICRO is not set
CONFIG_GELIC_NET=y
CONFIG_GELIC_WIRELESS=y
# CONFIG_NET
DEV_10000
is not set
# CONFIG_NET
_VENDOR_XILINX
is not set
CONFIG_USB_USBNET=m
# CONFIG_USB_NET_CDCETHER is not set
# CONFIG_USB_NET_CDC_NCM is not set
# CONFIG_USB_NET_NET1080 is not set
# CONFIG_USB_NET_CDC_SUBSET is not set
# CONFIG_USB_NET_ZAURUS is not set
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_ASYNC=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPPOE=m
CONFIG_INPUT_FF_MEMLESS=m
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
CONFIG_INPUT_JOYDEV=m
...
...
@@ -135,22 +139,21 @@ CONFIG_USB=m
CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_DEVICE_CLASS is not set
CONFIG_USB_SUSPEND=y
CONFIG_USB_MON=m
CONFIG_USB_EHCI_HCD=m
CONFIG_USB_EHCI_TT_NEWSCHED=y
# CONFIG_USB_EHCI_HCD_PPC_OF is not set
CONFIG_USB_OHCI_HCD=m
CONFIG_USB_STORAGE=m
CONFIG_RTC_CLASS=y
CONFIG_RTC_DRV_PS3=m
CONFIG_RTC_DRV_PS3=y
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_EXT2_FS=m
CONFIG_EXT3_FS=m
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_EXT4_FS=y
CONFIG_INOTIFY=y
CONFIG_QUOTA=y
CONFIG_QFMT_V2=y
CONFIG_AUTOFS_FS=m
CONFIG_AUTOFS4_FS=m
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
...
...
@@ -167,19 +170,17 @@ CONFIG_CIFS=m
CONFIG_NLS=y
CONFIG_NLS_CODEPAGE_437=y
CONFIG_NLS_ISO8859_1=y
CONFIG_CRC_CCITT=m
CONFIG_CRC_T10DIF=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_FS=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_PROVE_LOCKING=y
CONFIG_DEBUG_LOCKDEP=y
CONFIG_DEBUG_SPINLOCK_SLEEP=y
CONFIG_DEBUG_INFO=y
CONFIG_DEBUG_WRITECOUNT=y
CONFIG_DEBUG_MEMORY_INIT=y
CONFIG_DEBUG_LIST=y
# CONFIG_RCU_CPU_STALL_DETECTOR is not set
CONFIG_SYSCTL_SYSCALL_CHECK=y
# CONFIG_FTRACE is not set
CONFIG_DEBUG_STACKOVERFLOW=y
...
...
arch/powerpc/include/asm/lv1call.h
View file @
efdad722
...
...
@@ -231,7 +231,7 @@ LV1_CALL(allocate_memory, 4, 2, 0 )
LV1_CALL
(
write_htab_entry
,
4
,
0
,
1
)
LV1_CALL
(
construct_virtual_address_space
,
3
,
2
,
2
)
LV1_CALL
(
invalidate_htab_entries
,
5
,
0
,
3
)
LV1_CALL
(
get_virtual_address_space_id_of_ppe
,
1
,
1
,
4
)
LV1_CALL
(
get_virtual_address_space_id_of_ppe
,
0
,
1
,
4
)
LV1_CALL
(
query_logical_partition_address_region_info
,
1
,
5
,
6
)
LV1_CALL
(
select_virtual_address_space
,
1
,
0
,
7
)
LV1_CALL
(
pause
,
1
,
0
,
9
)
...
...
@@ -264,7 +264,7 @@ LV1_CALL(configure_execution_time_variable, 1, 0, 77 )
LV1_CALL
(
get_spe_irq_outlet
,
2
,
1
,
78
)
LV1_CALL
(
set_spe_privilege_state_area_1_register
,
3
,
0
,
79
)
LV1_CALL
(
create_repository_node
,
6
,
0
,
90
)
LV1_CALL
(
get_repository_node_value
,
5
,
2
,
91
)
LV1_CALL
(
read_repository_node
,
5
,
2
,
91
)
LV1_CALL
(
modify_repository_node_value
,
6
,
0
,
92
)
LV1_CALL
(
remove_repository_node
,
4
,
0
,
93
)
LV1_CALL
(
read_htab_entries
,
2
,
5
,
95
)
...
...
@@ -276,7 +276,7 @@ LV1_CALL(construct_io_irq_outlet, 1, 1, 120 )
LV1_CALL
(
destruct_io_irq_outlet
,
1
,
0
,
121
)
LV1_CALL
(
map_htab
,
1
,
1
,
122
)
LV1_CALL
(
unmap_htab
,
1
,
0
,
123
)
LV1_CALL
(
get_version_info
,
0
,
1
,
127
)
LV1_CALL
(
get_version_info
,
0
,
2
,
127
)
LV1_CALL
(
insert_htab_entry
,
6
,
3
,
158
)
LV1_CALL
(
read_virtual_uart
,
3
,
1
,
162
)
LV1_CALL
(
write_virtual_uart
,
3
,
1
,
163
)
...
...
@@ -294,9 +294,9 @@ LV1_CALL(unmap_device_dma_region, 4, 0, 177 )
LV1_CALL
(
net_add_multicast_address
,
4
,
0
,
185
)
LV1_CALL
(
net_remove_multicast_address
,
4
,
0
,
186
)
LV1_CALL
(
net_start_tx_dma
,
4
,
0
,
187
)
LV1_CALL
(
net_stop_tx_dma
,
3
,
0
,
188
)
LV1_CALL
(
net_stop_tx_dma
,
2
,
0
,
188
)
LV1_CALL
(
net_start_rx_dma
,
4
,
0
,
189
)
LV1_CALL
(
net_stop_rx_dma
,
3
,
0
,
190
)
LV1_CALL
(
net_stop_rx_dma
,
2
,
0
,
190
)
LV1_CALL
(
net_set_interrupt_status_indicator
,
4
,
0
,
191
)
LV1_CALL
(
net_set_interrupt_mask
,
4
,
0
,
193
)
LV1_CALL
(
net_control
,
6
,
2
,
194
)
...
...
arch/powerpc/kernel/irq.c
View file @
efdad722
...
...
@@ -186,8 +186,8 @@ notrace void arch_local_irq_restore(unsigned long en)
* Any HV call will have this side effect.
*/
if
(
firmware_has_feature
(
FW_FEATURE_PS3_LV1
))
{
u64
tmp
;
lv1_get_version_info
(
&
tmp
);
u64
tmp
,
tmp2
;
lv1_get_version_info
(
&
tmp
,
&
tmp2
);
}
__hard_irq_enable
();
...
...
arch/powerpc/platforms/ps3/interrupt.c
View file @
efdad722
...
...
@@ -31,18 +31,18 @@
#if defined(DEBUG)
#define DBG udbg_printf
#define FAIL udbg_printf
#else
#define DBG pr_debug
#define DBG pr_devel
#define FAIL pr_debug
#endif
/**
* struct ps3_bmp - a per cpu irq status and mask bitmap structure
* @status: 256 bit status bitmap indexed by plug
* @unused_1:
* @unused_1:
Alignment
* @mask: 256 bit mask bitmap indexed by plug
* @unused_2:
* @lock:
* @ipi_debug_brk_mask:
* @unused_2: Alignment
*
* The HV maintains per SMT thread mappings of HV outlet to HV plug on
* behalf of the guest. These mappings are implemented as 256 bit guest
...
...
@@ -73,21 +73,24 @@ struct ps3_bmp {
unsigned
long
mask
;
u64
unused_2
[
3
];
};
u64
ipi_debug_brk_mask
;
spinlock_t
lock
;
};
/**
* struct ps3_private - a per cpu data structure
* @bmp: ps3_bmp structure
* @bmp_lock: Syncronize access to bmp.
* @ipi_debug_brk_mask: Mask for debug break IPIs
* @ppe_id: HV logical_ppe_id
* @thread_id: HV thread_id
* @ipi_mask: Mask of IPI virqs
*/
struct
ps3_private
{
struct
ps3_bmp
bmp
__attribute__
((
aligned
(
PS3_BMP_MINALIGN
)));
spinlock_t
bmp_lock
;
u64
ppe_id
;
u64
thread_id
;
unsigned
long
ipi_debug_brk_mask
;
unsigned
long
ipi_mask
;
};
...
...
@@ -105,7 +108,7 @@ static void ps3_chip_mask(struct irq_data *d)
struct
ps3_private
*
pd
=
irq_data_get_irq_chip_data
(
d
);
unsigned
long
flags
;
pr_debug
(
"%s:%d: thread_id %llu, virq %d
\n
"
,
__func__
,
__LINE__
,
DBG
(
"%s:%d: thread_id %llu, virq %d
\n
"
,
__func__
,
__LINE__
,
pd
->
thread_id
,
d
->
irq
);
local_irq_save
(
flags
);
...
...
@@ -126,7 +129,7 @@ static void ps3_chip_unmask(struct irq_data *d)
struct
ps3_private
*
pd
=
irq_data_get_irq_chip_data
(
d
);
unsigned
long
flags
;
pr_debug
(
"%s:%d: thread_id %llu, virq %d
\n
"
,
__func__
,
__LINE__
,
DBG
(
"%s:%d: thread_id %llu, virq %d
\n
"
,
__func__
,
__LINE__
,
pd
->
thread_id
,
d
->
irq
);
local_irq_save
(
flags
);
...
...
@@ -190,19 +193,19 @@ static int ps3_virq_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
*
virq
=
irq_create_mapping
(
NULL
,
outlet
);
if
(
*
virq
==
NO_IRQ
)
{
pr_debug
(
"%s:%d: irq_create_mapping failed: outlet %lu
\n
"
,
FAIL
(
"%s:%d: irq_create_mapping failed: outlet %lu
\n
"
,
__func__
,
__LINE__
,
outlet
);
result
=
-
ENOMEM
;
goto
fail_create
;
}
pr_debug
(
"%s:%d: outlet %lu => cpu %u, virq %u
\n
"
,
__func__
,
__LINE__
,
DBG
(
"%s:%d: outlet %lu => cpu %u, virq %u
\n
"
,
__func__
,
__LINE__
,
outlet
,
cpu
,
*
virq
);
result
=
irq_set_chip_data
(
*
virq
,
pd
);
if
(
result
)
{
pr_debug
(
"%s:%d: irq_set_chip_data failed
\n
"
,
FAIL
(
"%s:%d: irq_set_chip_data failed
\n
"
,
__func__
,
__LINE__
);
goto
fail_set
;
}
...
...
@@ -228,13 +231,13 @@ static int ps3_virq_destroy(unsigned int virq)
{
const
struct
ps3_private
*
pd
=
irq_get_chip_data
(
virq
);
pr_debug
(
"%s:%d: ppe_id %llu, thread_id %llu, virq %u
\n
"
,
__func__
,
DBG
(
"%s:%d: ppe_id %llu, thread_id %llu, virq %u
\n
"
,
__func__
,
__LINE__
,
pd
->
ppe_id
,
pd
->
thread_id
,
virq
);
irq_set_chip_data
(
virq
,
NULL
);
irq_dispose_mapping
(
virq
);
pr_debug
(
"%s:%d <-
\n
"
,
__func__
,
__LINE__
);
DBG
(
"%s:%d <-
\n
"
,
__func__
,
__LINE__
);
return
0
;
}
...
...
@@ -257,7 +260,7 @@ int ps3_irq_plug_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
result
=
ps3_virq_setup
(
cpu
,
outlet
,
virq
);
if
(
result
)
{
pr_debug
(
"%s:%d: ps3_virq_setup failed
\n
"
,
__func__
,
__LINE__
);
FAIL
(
"%s:%d: ps3_virq_setup failed
\n
"
,
__func__
,
__LINE__
);
goto
fail_setup
;
}
...
...
@@ -269,7 +272,7 @@ int ps3_irq_plug_setup(enum ps3_cpu_binding cpu, unsigned long outlet,
outlet
,
0
);
if
(
result
)
{
pr_info
(
"%s:%d: lv1_connect_irq_plug_ext failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_connect_irq_plug_ext failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
result
=
-
EPERM
;
goto
fail_connect
;
...
...
@@ -298,7 +301,7 @@ int ps3_irq_plug_destroy(unsigned int virq)
int
result
;
const
struct
ps3_private
*
pd
=
irq_get_chip_data
(
virq
);
pr_debug
(
"%s:%d: ppe_id %llu, thread_id %llu, virq %u
\n
"
,
__func__
,
DBG
(
"%s:%d: ppe_id %llu, thread_id %llu, virq %u
\n
"
,
__func__
,
__LINE__
,
pd
->
ppe_id
,
pd
->
thread_id
,
virq
);
ps3_chip_mask
(
irq_get_irq_data
(
virq
));
...
...
@@ -306,7 +309,7 @@ int ps3_irq_plug_destroy(unsigned int virq)
result
=
lv1_disconnect_irq_plug_ext
(
pd
->
ppe_id
,
pd
->
thread_id
,
virq
);
if
(
result
)
pr_info
(
"%s:%d: lv1_disconnect_irq_plug_ext failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_disconnect_irq_plug_ext failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
ps3_virq_destroy
(
virq
);
...
...
@@ -334,7 +337,7 @@ int ps3_event_receive_port_setup(enum ps3_cpu_binding cpu, unsigned int *virq)
result
=
lv1_construct_event_receive_port
(
&
outlet
);
if
(
result
)
{
pr_debug
(
"%s:%d: lv1_construct_event_receive_port failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_construct_event_receive_port failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
*
virq
=
NO_IRQ
;
return
result
;
...
...
@@ -360,14 +363,14 @@ int ps3_event_receive_port_destroy(unsigned int virq)
{
int
result
;
pr_debug
(
" -> %s:%d virq %u
\n
"
,
__func__
,
__LINE__
,
virq
);
DBG
(
" -> %s:%d virq %u
\n
"
,
__func__
,
__LINE__
,
virq
);
ps3_chip_mask
(
irq_get_irq_data
(
virq
));
result
=
lv1_destruct_event_receive_port
(
virq_to_hw
(
virq
));
if
(
result
)
pr_debug
(
"%s:%d: lv1_destruct_event_receive_port failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_destruct_event_receive_port failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
/*
...
...
@@ -375,7 +378,7 @@ int ps3_event_receive_port_destroy(unsigned int virq)
* calls from interrupt context (smp_call_function) when kexecing.
*/
pr_debug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
DBG
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -411,7 +414,7 @@ int ps3_sb_event_receive_port_setup(struct ps3_system_bus_device *dev,
dev
->
dev_id
,
virq_to_hw
(
*
virq
),
dev
->
interrupt_id
);
if
(
result
)
{
pr_debug
(
"%s:%d: lv1_connect_interrupt_event_receive_port"
FAIL
(
"%s:%d: lv1_connect_interrupt_event_receive_port"
" failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
ps3_event_receive_port_destroy
(
*
virq
);
...
...
@@ -419,7 +422,7 @@ int ps3_sb_event_receive_port_setup(struct ps3_system_bus_device *dev,
return
result
;
}
pr_debug
(
"%s:%d: interrupt_id %u, virq %u
\n
"
,
__func__
,
__LINE__
,
DBG
(
"%s:%d: interrupt_id %u, virq %u
\n
"
,
__func__
,
__LINE__
,
dev
->
interrupt_id
,
*
virq
);
return
0
;
...
...
@@ -433,14 +436,14 @@ int ps3_sb_event_receive_port_destroy(struct ps3_system_bus_device *dev,
int
result
;
pr_debug
(
" -> %s:%d: interrupt_id %u, virq %u
\n
"
,
__func__
,
__LINE__
,
DBG
(
" -> %s:%d: interrupt_id %u, virq %u
\n
"
,
__func__
,
__LINE__
,
dev
->
interrupt_id
,
virq
);
result
=
lv1_disconnect_interrupt_event_receive_port
(
dev
->
bus_id
,
dev
->
dev_id
,
virq_to_hw
(
virq
),
dev
->
interrupt_id
);
if
(
result
)
pr_debug
(
"%s:%d: lv1_disconnect_interrupt_event_receive_port"
FAIL
(
"%s:%d: lv1_disconnect_interrupt_event_receive_port"
" failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
...
...
@@ -455,7 +458,7 @@ int ps3_sb_event_receive_port_destroy(struct ps3_system_bus_device *dev,
result
=
ps3_virq_destroy
(
virq
);
BUG_ON
(
result
);
pr_debug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
DBG
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
EXPORT_SYMBOL
(
ps3_sb_event_receive_port_destroy
);
...
...
@@ -480,7 +483,7 @@ int ps3_io_irq_setup(enum ps3_cpu_binding cpu, unsigned int interrupt_id,
result
=
lv1_construct_io_irq_outlet
(
interrupt_id
,
&
outlet
);
if
(
result
)
{
pr_debug
(
"%s:%d: lv1_construct_io_irq_outlet failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_construct_io_irq_outlet failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
return
result
;
}
...
...
@@ -510,7 +513,7 @@ int ps3_io_irq_destroy(unsigned int virq)
result
=
lv1_destruct_io_irq_outlet
(
outlet
);
if
(
result
)
pr_debug
(
"%s:%d: lv1_destruct_io_irq_outlet failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_destruct_io_irq_outlet failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
return
result
;
...
...
@@ -542,7 +545,7 @@ int ps3_vuart_irq_setup(enum ps3_cpu_binding cpu, void* virt_addr_bmp,
result
=
lv1_configure_virtual_uart_irq
(
lpar_addr
,
&
outlet
);
if
(
result
)
{
pr_debug
(
"%s:%d: lv1_configure_virtual_uart_irq failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_configure_virtual_uart_irq failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
return
result
;
}
...
...
@@ -562,7 +565,7 @@ int ps3_vuart_irq_destroy(unsigned int virq)
result
=
lv1_deconfigure_virtual_uart_irq
();
if
(
result
)
{
pr_debug
(
"%s:%d: lv1_configure_virtual_uart_irq failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_configure_virtual_uart_irq failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
return
result
;
}
...
...
@@ -595,7 +598,7 @@ int ps3_spe_irq_setup(enum ps3_cpu_binding cpu, unsigned long spe_id,
result
=
lv1_get_spe_irq_outlet
(
spe_id
,
class
,
&
outlet
);
if
(
result
)
{
pr_debug
(
"%s:%d: lv1_get_spe_irq_outlet failed: %s
\n
"
,
FAIL
(
"%s:%d: lv1_get_spe_irq_outlet failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
return
result
;
}
...
...
@@ -626,7 +629,7 @@ int ps3_spe_irq_destroy(unsigned int virq)
static
void
_dump_64_bmp
(
const
char
*
header
,
const
u64
*
p
,
unsigned
cpu
,
const
char
*
func
,
int
line
)
{
pr_debug
(
"%s:%d: %s %u {%04l
x_%04lx_%04lx_%04
lx}
\n
"
,
pr_debug
(
"%s:%d: %s %u {%04l
lx_%04llx_%04llx_%04l
lx}
\n
"
,
func
,
line
,
header
,
cpu
,
*
p
>>
48
,
(
*
p
>>
32
)
&
0xffff
,
(
*
p
>>
16
)
&
0xffff
,
*
p
&
0xffff
);
...
...
@@ -635,7 +638,7 @@ static void _dump_64_bmp(const char *header, const u64 *p, unsigned cpu,
static
void
__maybe_unused
_dump_256_bmp
(
const
char
*
header
,
const
u64
*
p
,
unsigned
cpu
,
const
char
*
func
,
int
line
)
{
pr_debug
(
"%s:%d: %s %u {%016l
x:%016lx:%016lx:%016
lx}
\n
"
,
pr_debug
(
"%s:%d: %s %u {%016l
lx:%016llx:%016llx:%016l
lx}
\n
"
,
func
,
line
,
header
,
cpu
,
p
[
0
],
p
[
1
],
p
[
2
],
p
[
3
]);
}
...
...
@@ -644,10 +647,10 @@ static void _dump_bmp(struct ps3_private* pd, const char* func, int line)
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
pd
->
bmp
.
lock
,
flags
);
spin_lock_irqsave
(
&
pd
->
bmp
_
lock
,
flags
);
_dump_64_bmp
(
"stat"
,
&
pd
->
bmp
.
status
,
pd
->
thread_id
,
func
,
line
);
_dump_64_bmp
(
"mask"
,
&
pd
->
bmp
.
mask
,
pd
->
thread_id
,
func
,
line
);
spin_unlock_irqrestore
(
&
pd
->
bmp
.
lock
,
flags
);
_dump_64_bmp
(
"mask"
,
(
u64
*
)
&
pd
->
bmp
.
mask
,
pd
->
thread_id
,
func
,
line
);
spin_unlock_irqrestore
(
&
pd
->
bmp
_
lock
,
flags
);
}
#define dump_mask(_x) _dump_mask(_x, __func__, __LINE__)
...
...
@@ -656,9 +659,9 @@ static void __maybe_unused _dump_mask(struct ps3_private *pd,
{
unsigned
long
flags
;
spin_lock_irqsave
(
&
pd
->
bmp
.
lock
,
flags
);
_dump_64_bmp
(
"mask"
,
&
pd
->
bmp
.
mask
,
pd
->
thread_id
,
func
,
line
);
spin_unlock_irqrestore
(
&
pd
->
bmp
.
lock
,
flags
);
spin_lock_irqsave
(
&
pd
->
bmp
_
lock
,
flags
);
_dump_64_bmp
(
"mask"
,
(
u64
*
)
&
pd
->
bmp
.
mask
,
pd
->
thread_id
,
func
,
line
);
spin_unlock_irqrestore
(
&
pd
->
bmp
_
lock
,
flags
);
}
#else
static
void
dump_bmp
(
struct
ps3_private
*
pd
)
{};
...
...
@@ -667,7 +670,7 @@ static void dump_bmp(struct ps3_private* pd) {};
static
int
ps3_host_map
(
struct
irq_host
*
h
,
unsigned
int
virq
,
irq_hw_number_t
hwirq
)
{
pr_debug
(
"%s:%d: hwirq %lu, virq %u
\n
"
,
__func__
,
__LINE__
,
hwirq
,
DBG
(
"%s:%d: hwirq %lu, virq %u
\n
"
,
__func__
,
__LINE__
,
hwirq
,
virq
);
irq_set_chip_and_handler
(
virq
,
&
ps3_irq_chip
,
handle_fasteoi_irq
);
...
...
@@ -690,10 +693,10 @@ void __init ps3_register_ipi_debug_brk(unsigned int cpu, unsigned int virq)
{
struct
ps3_private
*
pd
=
&
per_cpu
(
ps3_private
,
cpu
);
pd
->
bmp
.
ipi_debug_brk_mask
=
0x8000000000000000UL
>>
virq
;
set_bit
(
63
-
virq
,
&
pd
->
ipi_debug_brk_mask
)
;
pr_debug
(
"%s:%d: cpu %u, virq %u, mask %l
lxh
\n
"
,
__func__
,
__LINE__
,
cpu
,
virq
,
pd
->
bmp
.
ipi_debug_brk_mask
);
DBG
(
"%s:%d: cpu %u, virq %u, mask %
lxh
\n
"
,
__func__
,
__LINE__
,
cpu
,
virq
,
pd
->
ipi_debug_brk_mask
);
}
void
__init
ps3_register_ipi_irq
(
unsigned
int
cpu
,
unsigned
int
virq
)
...
...
@@ -714,14 +717,14 @@ static unsigned int ps3_get_irq(void)
/* check for ipi break first to stop this cpu ASAP */
if
(
x
&
pd
->
bmp
.
ipi_debug_brk_mask
)
x
&=
pd
->
bmp
.
ipi_debug_brk_mask
;
if
(
x
&
pd
->
ipi_debug_brk_mask
)
x
&=
pd
->
ipi_debug_brk_mask
;
asm
volatile
(
"cntlzd %0,%1"
:
"=r"
(
plug
)
:
"r"
(
x
));
plug
&=
0x3f
;
if
(
unlikely
(
plug
==
NO_IRQ
))
{
pr_debug
(
"%s:%d: no plug found: thread_id %llu
\n
"
,
__func__
,
DBG
(
"%s:%d: no plug found: thread_id %llu
\n
"
,
__func__
,
__LINE__
,
pd
->
thread_id
);
dump_bmp
(
&
per_cpu
(
ps3_private
,
0
));
dump_bmp
(
&
per_cpu
(
ps3_private
,
1
));
...
...
@@ -760,9 +763,9 @@ void __init ps3_init_IRQ(void)
lv1_get_logical_ppe_id
(
&
pd
->
ppe_id
);
pd
->
thread_id
=
get_hard_smp_processor_id
(
cpu
);
spin_lock_init
(
&
pd
->
bmp
.
lock
);
spin_lock_init
(
&
pd
->
bmp
_
lock
);
pr_debug
(
"%s:%d: ppe_id %llu, thread_id %llu, bmp %lxh
\n
"
,
DBG
(
"%s:%d: ppe_id %llu, thread_id %llu, bmp %lxh
\n
"
,
__func__
,
__LINE__
,
pd
->
ppe_id
,
pd
->
thread_id
,
ps3_mm_phys_to_lpar
(
__pa
(
&
pd
->
bmp
)));
...
...
@@ -770,7 +773,7 @@ void __init ps3_init_IRQ(void)
pd
->
thread_id
,
ps3_mm_phys_to_lpar
(
__pa
(
&
pd
->
bmp
)));
if
(
result
)
pr_debug
(
"%s:%d: lv1_configure_irq_state_bitmap failed:"
FAIL
(
"%s:%d: lv1_configure_irq_state_bitmap failed:"
" %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
}
...
...
arch/powerpc/platforms/ps3/repository.c
View file @
efdad722
...
...
@@ -44,7 +44,7 @@ static void _dump_field(const char *hdr, u64 n, const char *func, int line)
s
[
i
]
=
(
in
[
i
]
<=
126
&&
in
[
i
]
>=
32
)
?
in
[
i
]
:
'.'
;
s
[
i
]
=
0
;
pr_de
bug
(
"%s:%d: %s%016llx : %s
\n
"
,
func
,
line
,
hdr
,
n
,
s
);
pr_de
vel
(
"%s:%d: %s%016llx : %s
\n
"
,
func
,
line
,
hdr
,
n
,
s
);
#endif
}
...
...
@@ -53,7 +53,7 @@ static void _dump_field(const char *hdr, u64 n, const char *func, int line)
static
void
_dump_node_name
(
unsigned
int
lpar_id
,
u64
n1
,
u64
n2
,
u64
n3
,
u64
n4
,
const
char
*
func
,
int
line
)
{
pr_de
bug
(
"%s:%d: lpar: %u
\n
"
,
func
,
line
,
lpar_id
);
pr_de
vel
(
"%s:%d: lpar: %u
\n
"
,
func
,
line
,
lpar_id
);
_dump_field
(
"n1: "
,
n1
,
func
,
line
);
_dump_field
(
"n2: "
,
n2
,
func
,
line
);
_dump_field
(
"n3: "
,
n3
,
func
,
line
);
...
...
@@ -65,13 +65,13 @@ static void _dump_node_name(unsigned int lpar_id, u64 n1, u64 n2, u64 n3,
static
void
_dump_node
(
unsigned
int
lpar_id
,
u64
n1
,
u64
n2
,
u64
n3
,
u64
n4
,
u64
v1
,
u64
v2
,
const
char
*
func
,
int
line
)
{
pr_de
bug
(
"%s:%d: lpar: %u
\n
"
,
func
,
line
,
lpar_id
);
pr_de
vel
(
"%s:%d: lpar: %u
\n
"
,
func
,
line
,
lpar_id
);
_dump_field
(
"n1: "
,
n1
,
func
,
line
);
_dump_field
(
"n2: "
,
n2
,
func
,
line
);
_dump_field
(
"n3: "
,
n3
,
func
,
line
);
_dump_field
(
"n4: "
,
n4
,
func
,
line
);
pr_de
bug
(
"%s:%d: v1: %016llx
\n
"
,
func
,
line
,
v1
);
pr_de
bug
(
"%s:%d: v2: %016llx
\n
"
,
func
,
line
,
v2
);
pr_de
vel
(
"%s:%d: v1: %016llx
\n
"
,
func
,
line
,
v1
);
pr_de
vel
(
"%s:%d: v2: %016llx
\n
"
,
func
,
line
,
v2
);
}
/**
...
...
@@ -131,11 +131,11 @@ static int read_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4,
lpar_id
=
id
;
}
result
=
lv1_
get_repository_node_valu
e
(
lpar_id
,
n1
,
n2
,
n3
,
n4
,
&
v1
,
result
=
lv1_
read_repository_nod
e
(
lpar_id
,
n1
,
n2
,
n3
,
n4
,
&
v1
,
&
v2
);
if
(
result
)
{
pr_
debug
(
"%s:%d: lv1_get_repository_node_valu
e failed: %s
\n
"
,
pr_
warn
(
"%s:%d: lv1_read_repository_nod
e failed: %s
\n
"
,
__func__
,
__LINE__
,
ps3_result
(
result
));
dump_node_name
(
lpar_id
,
n1
,
n2
,
n3
,
n4
);
return
-
ENOENT
;
...
...
@@ -149,10 +149,10 @@ static int read_node(unsigned int lpar_id, u64 n1, u64 n2, u64 n3, u64 n4,
*
_v2
=
v2
;
if
(
v1
&&
!
_v1
)
pr_de
bug
(
"%s:%d: warning: discarding non-zero v1: %016llx
\n
"
,
pr_de
vel
(
"%s:%d: warning: discarding non-zero v1: %016llx
\n
"
,
__func__
,
__LINE__
,
v1
);
if
(
v2
&&
!
_v2
)
pr_de
bug
(
"%s:%d: warning: discarding non-zero v2: %016llx
\n
"
,
pr_de
vel
(
"%s:%d: warning: discarding non-zero v2: %016llx
\n
"
,
__func__
,
__LINE__
,
v2
);
return
0
;
...
...
@@ -323,16 +323,16 @@ int ps3_repository_find_device(struct ps3_repository_device *repo)
result
=
ps3_repository_read_bus_num_dev
(
tmp
.
bus_index
,
&
num_dev
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_bus_num_dev failed
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
"%s:%d read_bus_num_dev failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
pr_de
bug
(
"%s:%d: bus_type %u, bus_index %u, bus_id %llu, num_dev %u
\n
"
,
pr_de
vel
(
"%s:%d: bus_type %u, bus_index %u, bus_id %llu, num_dev %u
\n
"
,
__func__
,
__LINE__
,
tmp
.
bus_type
,
tmp
.
bus_index
,
tmp
.
bus_id
,
num_dev
);
if
(
tmp
.
dev_index
>=
num_dev
)
{
pr_de
bug
(
"%s:%d: no device found
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
"%s:%d: no device found
\n
"
,
__func__
,
__LINE__
);
return
-
ENODEV
;
}
...
...
@@ -340,7 +340,7 @@ int ps3_repository_find_device(struct ps3_repository_device *repo)
&
tmp
.
dev_type
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_dev_type failed
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
"%s:%d read_dev_type failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -348,12 +348,12 @@ int ps3_repository_find_device(struct ps3_repository_device *repo)
&
tmp
.
dev_id
);
if
(
result
)
{
pr_de
bug
(
"%s:%d ps3_repository_read_dev_id failed
\n
"
,
__func__
,
pr_de
vel
(
"%s:%d ps3_repository_read_dev_id failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
pr_de
bug
(
"%s:%d: found: dev_type %u, dev_index %u, dev_id %llu
\n
"
,
pr_de
vel
(
"%s:%d: found: dev_type %u, dev_index %u, dev_id %llu
\n
"
,
__func__
,
__LINE__
,
tmp
.
dev_type
,
tmp
.
dev_index
,
tmp
.
dev_id
);
*
repo
=
tmp
;
...
...
@@ -367,14 +367,14 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo,
struct
ps3_repository_device
tmp
;
unsigned
int
num_dev
;
pr_de
bug
(
" -> %s:%u: find device by id %llu:%llu
\n
"
,
__func__
,
__LINE__
,
pr_de
vel
(
" -> %s:%u: find device by id %llu:%llu
\n
"
,
__func__
,
__LINE__
,
bus_id
,
dev_id
);
for
(
tmp
.
bus_index
=
0
;
tmp
.
bus_index
<
10
;
tmp
.
bus_index
++
)
{
result
=
ps3_repository_read_bus_id
(
tmp
.
bus_index
,
&
tmp
.
bus_id
);
if
(
result
)
{
pr_de
bug
(
"%s:%u read_bus_id(%u) failed
\n
"
,
__func__
,
pr_de
vel
(
"%s:%u read_bus_id(%u) failed
\n
"
,
__func__
,
__LINE__
,
tmp
.
bus_index
);
return
result
;
}
...
...
@@ -382,23 +382,23 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo,
if
(
tmp
.
bus_id
==
bus_id
)
goto
found_bus
;
pr_de
bug
(
"%s:%u: skip, bus_id %llu
\n
"
,
__func__
,
__LINE__
,
pr_de
vel
(
"%s:%u: skip, bus_id %llu
\n
"
,
__func__
,
__LINE__
,
tmp
.
bus_id
);
}
pr_de
bug
(
" <- %s:%u: bus not found
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%u: bus not found
\n
"
,
__func__
,
__LINE__
);
return
result
;
found_bus:
result
=
ps3_repository_read_bus_type
(
tmp
.
bus_index
,
&
tmp
.
bus_type
);
if
(
result
)
{
pr_de
bug
(
"%s:%u read_bus_type(%u) failed
\n
"
,
__func__
,
pr_de
vel
(
"%s:%u read_bus_type(%u) failed
\n
"
,
__func__
,
__LINE__
,
tmp
.
bus_index
);
return
result
;
}
result
=
ps3_repository_read_bus_num_dev
(
tmp
.
bus_index
,
&
num_dev
);
if
(
result
)
{
pr_de
bug
(
"%s:%u read_bus_num_dev failed
\n
"
,
__func__
,
pr_de
vel
(
"%s:%u read_bus_num_dev failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -408,7 +408,7 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo,
tmp
.
dev_index
,
&
tmp
.
dev_id
);
if
(
result
)
{
pr_de
bug
(
"%s:%u read_dev_id(%u:%u) failed
\n
"
,
__func__
,
pr_de
vel
(
"%s:%u read_dev_id(%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
tmp
.
bus_index
,
tmp
.
dev_index
);
return
result
;
}
...
...
@@ -416,21 +416,21 @@ int ps3_repository_find_device_by_id(struct ps3_repository_device *repo,
if
(
tmp
.
dev_id
==
dev_id
)
goto
found_dev
;
pr_de
bug
(
"%s:%u: skip, dev_id %llu
\n
"
,
__func__
,
__LINE__
,
pr_de
vel
(
"%s:%u: skip, dev_id %llu
\n
"
,
__func__
,
__LINE__
,
tmp
.
dev_id
);
}
pr_de
bug
(
" <- %s:%u: dev not found
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%u: dev not found
\n
"
,
__func__
,
__LINE__
);
return
result
;
found_dev:
result
=
ps3_repository_read_dev_type
(
tmp
.
bus_index
,
tmp
.
dev_index
,
&
tmp
.
dev_type
);
if
(
result
)
{
pr_de
bug
(
"%s:%u read_dev_type failed
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
"%s:%u read_dev_type failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
pr_de
bug
(
" <- %s:%u: found: type (%u:%u) index (%u:%u) id (%llu:%llu)
\n
"
,
pr_de
vel
(
" <- %s:%u: found: type (%u:%u) index (%u:%u) id (%llu:%llu)
\n
"
,
__func__
,
__LINE__
,
tmp
.
bus_type
,
tmp
.
dev_type
,
tmp
.
bus_index
,
tmp
.
dev_index
,
tmp
.
bus_id
,
tmp
.
dev_id
);
*
repo
=
tmp
;
...
...
@@ -443,18 +443,18 @@ int __devinit ps3_repository_find_devices(enum ps3_bus_type bus_type,
int
result
=
0
;
struct
ps3_repository_device
repo
;
pr_de
bug
(
" -> %s:%d: find bus_type %u
\n
"
,
__func__
,
__LINE__
,
bus_type
);
pr_de
vel
(
" -> %s:%d: find bus_type %u
\n
"
,
__func__
,
__LINE__
,
bus_type
);
repo
.
bus_type
=
bus_type
;
result
=
ps3_repository_find_bus
(
repo
.
bus_type
,
0
,
&
repo
.
bus_index
);
if
(
result
)
{
pr_de
bug
(
" <- %s:%u: bus not found
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%u: bus not found
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
result
=
ps3_repository_read_bus_id
(
repo
.
bus_index
,
&
repo
.
bus_id
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_bus_id(%u) failed
\n
"
,
__func__
,
__LINE__
,
pr_de
vel
(
"%s:%d read_bus_id(%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
.
bus_index
);
return
result
;
}
...
...
@@ -469,13 +469,13 @@ int __devinit ps3_repository_find_devices(enum ps3_bus_type bus_type,
result
=
callback
(
&
repo
);
if
(
result
)
{
pr_de
bug
(
"%s:%d: abort at callback
\n
"
,
__func__
,
pr_de
vel
(
"%s:%d: abort at callback
\n
"
,
__func__
,
__LINE__
);
break
;
}
}
pr_de
bug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -489,7 +489,7 @@ int ps3_repository_find_bus(enum ps3_bus_type bus_type, unsigned int from,
for
(
i
=
from
;
i
<
10
;
i
++
)
{
error
=
ps3_repository_read_bus_type
(
i
,
&
type
);
if
(
error
)
{
pr_de
bug
(
"%s:%d read_bus_type failed
\n
"
,
pr_de
vel
(
"%s:%d read_bus_type failed
\n
"
,
__func__
,
__LINE__
);
*
bus_index
=
UINT_MAX
;
return
error
;
...
...
@@ -509,7 +509,7 @@ int ps3_repository_find_interrupt(const struct ps3_repository_device *repo,
int
result
=
0
;
unsigned
int
res_index
;
pr_de
bug
(
"%s:%d: find intr_type %u
\n
"
,
__func__
,
__LINE__
,
intr_type
);
pr_de
vel
(
"%s:%d: find intr_type %u
\n
"
,
__func__
,
__LINE__
,
intr_type
);
*
interrupt_id
=
UINT_MAX
;
...
...
@@ -521,7 +521,7 @@ int ps3_repository_find_interrupt(const struct ps3_repository_device *repo,
repo
->
dev_index
,
res_index
,
&
t
,
&
id
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_dev_intr failed
\n
"
,
pr_de
vel
(
"%s:%d read_dev_intr failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -535,7 +535,7 @@ int ps3_repository_find_interrupt(const struct ps3_repository_device *repo,
if
(
res_index
==
10
)
return
-
ENODEV
;
pr_de
bug
(
"%s:%d: found intr_type %u at res_index %u
\n
"
,
pr_de
vel
(
"%s:%d: found intr_type %u at res_index %u
\n
"
,
__func__
,
__LINE__
,
intr_type
,
res_index
);
return
result
;
...
...
@@ -547,7 +547,7 @@ int ps3_repository_find_reg(const struct ps3_repository_device *repo,
int
result
=
0
;
unsigned
int
res_index
;
pr_de
bug
(
"%s:%d: find reg_type %u
\n
"
,
__func__
,
__LINE__
,
reg_type
);
pr_de
vel
(
"%s:%d: find reg_type %u
\n
"
,
__func__
,
__LINE__
,
reg_type
);
*
bus_addr
=
*
len
=
0
;
...
...
@@ -560,7 +560,7 @@ int ps3_repository_find_reg(const struct ps3_repository_device *repo,
repo
->
dev_index
,
res_index
,
&
t
,
&
a
,
&
l
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_dev_reg failed
\n
"
,
pr_de
vel
(
"%s:%d read_dev_reg failed
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -575,7 +575,7 @@ int ps3_repository_find_reg(const struct ps3_repository_device *repo,
if
(
res_index
==
10
)
return
-
ENODEV
;
pr_de
bug
(
"%s:%d: found reg_type %u at res_index %u
\n
"
,
pr_de
vel
(
"%s:%d: found reg_type %u at res_index %u
\n
"
,
__func__
,
__LINE__
,
reg_type
,
res_index
);
return
result
;
...
...
@@ -1009,7 +1009,7 @@ int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
int
result
=
0
;
unsigned
int
res_index
;
pr_de
bug
(
" -> %s:%d: (%u:%u)
\n
"
,
__func__
,
__LINE__
,
pr_de
vel
(
" -> %s:%d: (%u:%u)
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
for
(
res_index
=
0
;
res_index
<
10
;
res_index
++
)
{
...
...
@@ -1021,13 +1021,13 @@ int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
if
(
result
)
{
if
(
result
!=
LV1_NO_ENTRY
)
pr_de
bug
(
"%s:%d ps3_repository_read_dev_intr"
pr_de
vel
(
"%s:%d ps3_repository_read_dev_intr"
" (%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
break
;
}
pr_de
bug
(
"%s:%d (%u:%u) intr_type %u, interrupt_id %u
\n
"
,
pr_de
vel
(
"%s:%d (%u:%u) intr_type %u, interrupt_id %u
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
,
intr_type
,
interrupt_id
);
}
...
...
@@ -1042,18 +1042,18 @@ int ps3_repository_dump_resource_info(const struct ps3_repository_device *repo)
if
(
result
)
{
if
(
result
!=
LV1_NO_ENTRY
)
pr_de
bug
(
"%s:%d ps3_repository_read_dev_reg"
pr_de
vel
(
"%s:%d ps3_repository_read_dev_reg"
" (%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
break
;
}
pr_de
bug
(
"%s:%d (%u:%u) reg_type %u, bus_addr %lxh, len %
lxh
\n
"
,
pr_de
vel
(
"%s:%d (%u:%u) reg_type %u, bus_addr %llxh, len %l
lxh
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
,
reg_type
,
bus_addr
,
len
);
}
pr_de
bug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -1063,22 +1063,22 @@ static int dump_stor_dev_info(struct ps3_repository_device *repo)
unsigned
int
num_regions
,
region_index
;
u64
port
,
blk_size
,
num_blocks
;
pr_de
bug
(
" -> %s:%d: (%u:%u)
\n
"
,
__func__
,
__LINE__
,
pr_de
vel
(
" -> %s:%d: (%u:%u)
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
result
=
ps3_repository_read_stor_dev_info
(
repo
->
bus_index
,
repo
->
dev_index
,
&
port
,
&
blk_size
,
&
num_blocks
,
&
num_regions
);
if
(
result
)
{
pr_de
bug
(
"%s:%d ps3_repository_read_stor_dev_info"
pr_de
vel
(
"%s:%d ps3_repository_read_stor_dev_info"
" (%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
goto
out
;
}
pr_de
bug
(
"%s:%d (%u:%u): port %lu, blk_size %
lu, num_blocks "
"%lu, num_regions %u
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
,
port
,
blk_size
,
num_blocks
,
num_regions
);
pr_de
vel
(
"%s:%d (%u:%u): port %llu, blk_size %l
lu, num_blocks "
"%l
l
u, num_regions %u
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
,
port
,
blk_size
,
num_blocks
,
num_regions
);
for
(
region_index
=
0
;
region_index
<
num_regions
;
region_index
++
)
{
unsigned
int
region_id
;
...
...
@@ -1088,19 +1088,20 @@ static int dump_stor_dev_info(struct ps3_repository_device *repo)
repo
->
dev_index
,
region_index
,
&
region_id
,
&
region_start
,
&
region_size
);
if
(
result
)
{
pr_de
bug
(
"%s:%d ps3_repository_read_stor_dev_region"
pr_de
vel
(
"%s:%d ps3_repository_read_stor_dev_region"
" (%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
break
;
}
pr_de
bug
(
"%s:%d (%u:%u) region_id %u, start %lxh, size %lxh
\n
"
,
pr_de
vel
(
"%s:%d (%u:%u) region_id %u, start %lxh, size %lxh
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
,
region_id
,
region_start
,
region_size
);
region_id
,
(
unsigned
long
)
region_start
,
(
unsigned
long
)
region_size
);
}
out:
pr_de
bug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -1109,7 +1110,7 @@ static int dump_device_info(struct ps3_repository_device *repo,
{
int
result
=
0
;
pr_de
bug
(
" -> %s:%d: bus_%u
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
);
pr_de
vel
(
" -> %s:%d: bus_%u
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
);
for
(
repo
->
dev_index
=
0
;
repo
->
dev_index
<
num_dev
;
repo
->
dev_index
++
)
{
...
...
@@ -1118,7 +1119,7 @@ static int dump_device_info(struct ps3_repository_device *repo,
repo
->
dev_index
,
&
repo
->
dev_type
);
if
(
result
)
{
pr_de
bug
(
"%s:%d ps3_repository_read_dev_type"
pr_de
vel
(
"%s:%d ps3_repository_read_dev_type"
" (%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
break
;
...
...
@@ -1128,15 +1129,15 @@ static int dump_device_info(struct ps3_repository_device *repo,
repo
->
dev_index
,
&
repo
->
dev_id
);
if
(
result
)
{
pr_de
bug
(
"%s:%d ps3_repository_read_dev_id"
pr_de
vel
(
"%s:%d ps3_repository_read_dev_id"
" (%u:%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
);
continue
;
}
pr_de
bug
(
"%s:%d (%u:%u): dev_type %u, dev_id %lu
\n
"
,
__func__
,
pr_de
vel
(
"%s:%d (%u:%u): dev_type %u, dev_id %lu
\n
"
,
__func__
,
__LINE__
,
repo
->
bus_index
,
repo
->
dev_index
,
repo
->
dev_type
,
repo
->
dev_id
);
repo
->
dev_type
,
(
unsigned
long
)
repo
->
dev_id
);
ps3_repository_dump_resource_info
(
repo
);
...
...
@@ -1144,7 +1145,7 @@ static int dump_device_info(struct ps3_repository_device *repo,
dump_stor_dev_info
(
repo
);
}
pr_de
bug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
@@ -1153,7 +1154,7 @@ int ps3_repository_dump_bus_info(void)
int
result
=
0
;
struct
ps3_repository_device
repo
;
pr_de
bug
(
" -> %s:%d
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" -> %s:%d
\n
"
,
__func__
,
__LINE__
);
memset
(
&
repo
,
0
,
sizeof
(
repo
));
...
...
@@ -1164,7 +1165,7 @@ int ps3_repository_dump_bus_info(void)
&
repo
.
bus_type
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_bus_type(%u) failed
\n
"
,
pr_de
vel
(
"%s:%d read_bus_type(%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
.
bus_index
);
break
;
}
...
...
@@ -1173,32 +1174,32 @@ int ps3_repository_dump_bus_info(void)
&
repo
.
bus_id
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_bus_id(%u) failed
\n
"
,
pr_de
vel
(
"%s:%d read_bus_id(%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
.
bus_index
);
continue
;
}
if
(
repo
.
bus_index
!=
repo
.
bus_id
)
pr_de
bug
(
"%s:%d bus_index != bus_id
\n
"
,
pr_de
vel
(
"%s:%d bus_index != bus_id
\n
"
,
__func__
,
__LINE__
);
result
=
ps3_repository_read_bus_num_dev
(
repo
.
bus_index
,
&
num_dev
);
if
(
result
)
{
pr_de
bug
(
"%s:%d read_bus_num_dev(%u) failed
\n
"
,
pr_de
vel
(
"%s:%d read_bus_num_dev(%u) failed
\n
"
,
__func__
,
__LINE__
,
repo
.
bus_index
);
continue
;
}
pr_de
bug
(
"%s:%d bus_%u: bus_type %u, bus_id %lu, num_dev %u
\n
"
,
pr_de
vel
(
"%s:%d bus_%u: bus_type %u, bus_id %lu, num_dev %u
\n
"
,
__func__
,
__LINE__
,
repo
.
bus_index
,
repo
.
bus_type
,
repo
.
bus_id
,
num_dev
);
(
unsigned
long
)
repo
.
bus_id
,
num_dev
);
dump_device_info
(
&
repo
,
num_dev
);
}
pr_de
bug
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
pr_de
vel
(
" <- %s:%d
\n
"
,
__func__
,
__LINE__
);
return
result
;
}
...
...
arch/powerpc/platforms/ps3/setup.c
View file @
efdad722
...
...
@@ -193,10 +193,12 @@ static int ps3_set_dabr(unsigned long dabr)
static
void
__init
ps3_setup_arch
(
void
)
{
u64
tmp
;
DBG
(
" -> %s:%d
\n
"
,
__func__
,
__LINE__
);
lv1_get_version_info
(
&
ps3_firmware_version
.
raw
);
lv1_get_version_info
(
&
ps3_firmware_version
.
raw
,
&
tmp
);
printk
(
KERN_INFO
"PS3 firmware version %u.%u.%u
\n
"
,
ps3_firmware_version
.
major
,
ps3_firmware_version
.
minor
,
ps3_firmware_version
.
rev
);
...
...
arch/powerpc/platforms/ps3/smp.c
View file @
efdad722
...
...
@@ -57,7 +57,7 @@ static void ps3_smp_message_pass(int cpu, int msg)
" (%d)
\n
"
,
__func__
,
__LINE__
,
cpu
,
msg
,
result
);
}
static
int
ps3_smp_probe
(
void
)
static
int
__init
ps3_smp_probe
(
void
)
{
int
cpu
;
...
...
arch/powerpc/platforms/ps3/spu.c
View file @
efdad722
...
...
@@ -154,7 +154,7 @@ static unsigned long get_vas_id(void)
u64
id
;
lv1_get_logical_ppe_id
(
&
id
);
lv1_get_virtual_address_space_id_of_ppe
(
id
,
&
id
);
lv1_get_virtual_address_space_id_of_ppe
(
&
id
);
return
id
;
}
...
...
drivers/net/ethernet/toshiba/ps3_gelic_net.c
View file @
efdad722
...
...
@@ -640,7 +640,7 @@ static inline void gelic_card_disable_rxdmac(struct gelic_card *card)
int
status
;
/* this hvc blocks until the DMA in progress really stopped */
status
=
lv1_net_stop_rx_dma
(
bus_id
(
card
),
dev_id
(
card
)
,
0
);
status
=
lv1_net_stop_rx_dma
(
bus_id
(
card
),
dev_id
(
card
));
if
(
status
)
dev_err
(
ctodev
(
card
),
"lv1_net_stop_rx_dma failed, %d
\n
"
,
status
);
...
...
@@ -658,7 +658,7 @@ static inline void gelic_card_disable_txdmac(struct gelic_card *card)
int
status
;
/* this hvc blocks until the DMA in progress really stopped */
status
=
lv1_net_stop_tx_dma
(
bus_id
(
card
),
dev_id
(
card
)
,
0
);
status
=
lv1_net_stop_tx_dma
(
bus_id
(
card
),
dev_id
(
card
));
if
(
status
)
dev_err
(
ctodev
(
card
),
"lv1_net_stop_tx_dma failed, status=%d
\n
"
,
status
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment