psvr 3.10

This commit is contained in:
ps5_enthusiast 2020-04-04 22:39:13 -07:00
parent ec3a7a2e7c
commit 6081dd0618
6 changed files with 56 additions and 20 deletions

View file

@ -56,6 +56,9 @@ static unsigned long sm_base;
static unsigned long sm_asserted_watchdog_flag = 0;
#define SM_ASSERTED_WATCHDOG_BIT (0)
typedef void (*wdt_cb_t)(void);
static wdt_cb_t wdt_cb = NULL;
typedef union {
unsigned int u32;
struct w32smSysCtl_SM_CTRL;
@ -356,8 +359,13 @@ static irqreturn_t bsm_intr(int irq, void *dev_id)
if(0xAEEDACD0 == readl(SOC_DTCM(SM_DTCM_ASSERTED_WATCHDOG))) {
writel(0, SOC_DTCM(SM_DTCM_ASSERTED_WATCHDOG));
if(!test_and_set_bit(SM_ASSERTED_WATCHDOG_BIT, &sm_asserted_watchdog_flag))
panic("sm asserted watchdog!");
if(!test_and_set_bit(SM_ASSERTED_WATCHDOG_BIT, &sm_asserted_watchdog_flag)) {
if( wdt_cb ) {
wdt_cb();
} else {
panic("sm asserted watchdog!");
}
}
}
bsm_msg_dispatch();
@ -680,6 +688,22 @@ int sm_get_ex_mem_size(void)
}
EXPORT_SYMBOL(sm_get_ex_mem_size);
int sm_register_wdt_callback( void (*cb_func)(void) )
{
if(cb_func) {
wdt_cb = cb_func;
}
return 0;
}
EXPORT_SYMBOL(sm_register_wdt_callback);
int sm_unregister_wdt_callback(void)
{
wdt_cb = NULL;
return 0;
}
EXPORT_SYMBOL(sm_unregister_wdt_callback);
MODULE_AUTHOR("Marvell-Galois");
MODULE_DESCRIPTION("System Manager Driver");
MODULE_LICENSE("GPL");

View file

@ -1532,6 +1532,8 @@ static void regulator_ena_gpio_free(struct regulator_dev *rdev)
gpio_free(pin->gpio);
list_del(&pin->list);
kfree(pin);
rdev->ena_pin = NULL;
return;
} else {
pin->request_count--;
}

View file

@ -751,6 +751,20 @@ has_zeroout:
int ret = check_block_validity(inode, map);
if (ret != 0)
return ret;
/*
* Inodes with freshly allocated blocks where contents will be
* visible after transaction commit must be on transaction's
* ordered data list.
*/
if (map->m_flags & EXT4_MAP_NEW &&
!(map->m_flags & EXT4_MAP_UNWRITTEN) &&
!IS_NOQUOTA(inode) &&
ext4_should_order_data(inode)) {
ret = ext4_jbd2_file_inode(handle, inode);
if (ret)
return ret;
}
}
return retval;
}
@ -1110,15 +1124,6 @@ static int ext4_write_end(struct file *file,
int i_size_changed = 0;
trace_ext4_write_end(inode, pos, len, copied);
if (ext4_test_inode_state(inode, EXT4_STATE_ORDERED_MODE)) {
ret = ext4_jbd2_file_inode(handle, inode);
if (ret) {
unlock_page(page);
page_cache_release(page);
goto errout;
}
}
if (ext4_has_inline_data(inode)) {
ret = ext4_write_inline_data_end(inode, pos, len,
copied, page);

View file

@ -430,11 +430,6 @@ struct perf_event {
#endif /* CONFIG_PERF_EVENTS */
};
enum perf_event_context_type {
task_context,
cpu_context,
};
/**
* struct perf_event_context - event context structure
*
@ -442,7 +437,6 @@ enum perf_event_context_type {
*/
struct perf_event_context {
struct pmu *pmu;
enum perf_event_context_type type;
/*
* Protect the states of the events in the list,
* nr_active, and the list:

View file

@ -6187,7 +6187,6 @@ skip_type:
__perf_event_init_context(&cpuctx->ctx);
lockdep_set_class(&cpuctx->ctx.mutex, &cpuctx_mutex);
lockdep_set_class(&cpuctx->ctx.lock, &cpuctx_lock);
cpuctx->ctx.type = cpu_context;
cpuctx->ctx.pmu = pmu;
cpuctx->jiffies_interval = 1;
INIT_LIST_HEAD(&cpuctx->rotation_list);
@ -6794,7 +6793,19 @@ SYSCALL_DEFINE5(perf_event_open,
* task or CPU context:
*/
if (move_group) {
if (group_leader->ctx->type != ctx->type)
/*
* Make sure we're both on the same task, or both
* per-cpu events.
*/
if (group_leader->ctx->task != ctx->task)
goto err_context;
/*
* Make sure we're both events for the same CPU;
* grouping events for different CPUs is broken; since
* you can never concurrently schedule them anyhow.
*/
if (group_leader->cpu != event->cpu)
goto err_context;
} else {
if (group_leader->ctx != ctx)

View file

@ -1441,9 +1441,9 @@ static void em_print_info_external_detailed(unsigned long time, unsigned long na
/* hook: off -> on */
em_dump_vwrite_hook = em_vprintk_external;
em_dump_exception(0, NULL);
em_dump_log(CONFIG_SNSC_EM_LOGFILE_LOG_MAX_LINES, NULL);
em_dump_write(" [%6lu.%06lu] Exception happened\n", time, nanosec_rem / 1000);
em_dump_exception(0, NULL);
/* hook: on -> off */
em_dump_vwrite_hook = NULL;