Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
Pull sparc fixes from David Miller: "Three bug fixes, and TLB flushing one is of particular brown paper bag quality..." * git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc: sparc: perf: fix updated event period in response to PERF_EVENT_IOC_PERIOD mdesc: fix a missing-check bug in get_vdev_port_node_info() sparc64: Fix regression in non-hypervisor TLB flush xcall
This commit is contained in:
commit
01e7a841b4
|
@ -356,6 +356,8 @@ static int get_vdev_port_node_info(struct mdesc_handle *md, u64 node,
|
|||
|
||||
node_info->vdev_port.id = *idp;
|
||||
node_info->vdev_port.name = kstrdup_const(name, GFP_KERNEL);
|
||||
if (!node_info->vdev_port.name)
|
||||
return -1;
|
||||
node_info->vdev_port.parent_cfg_hdl = *parent_cfg_hdlp;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -891,6 +891,10 @@ static int sparc_perf_event_set_period(struct perf_event *event,
|
|||
s64 period = hwc->sample_period;
|
||||
int ret = 0;
|
||||
|
||||
/* The period may have been changed by PERF_EVENT_IOC_PERIOD */
|
||||
if (unlikely(period != hwc->last_period))
|
||||
left = period - (hwc->last_period - left);
|
||||
|
||||
if (unlikely(left <= -period)) {
|
||||
left = period;
|
||||
local64_set(&hwc->period_left, left);
|
||||
|
|
|
@ -587,7 +587,7 @@ xcall_flush_tlb_kernel_range: /* 44 insns */
|
|||
sub %g7, %g1, %g3
|
||||
srlx %g3, 18, %g2
|
||||
brnz,pn %g2, 2f
|
||||
add %g2, 1, %g2
|
||||
sethi %hi(PAGE_SIZE), %g2
|
||||
sub %g3, %g2, %g3
|
||||
or %g1, 0x20, %g1 ! Nucleus
|
||||
1: stxa %g0, [%g1 + %g3] ASI_DMMU_DEMAP
|
||||
|
@ -751,7 +751,7 @@ __cheetah_xcall_flush_tlb_kernel_range: /* 44 insns */
|
|||
sub %g7, %g1, %g3
|
||||
srlx %g3, 18, %g2
|
||||
brnz,pn %g2, 2f
|
||||
add %g2, 1, %g2
|
||||
sethi %hi(PAGE_SIZE), %g2
|
||||
sub %g3, %g2, %g3
|
||||
or %g1, 0x20, %g1 ! Nucleus
|
||||
1: stxa %g0, [%g1 + %g3] ASI_DMMU_DEMAP
|
||||
|
|
Loading…
Reference in New Issue