mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-30 11:41:38 -04:00
Merge branch 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull x86 platform updates from Ingo Molnar: "The main changes include various Hyper-V optimizations such as faster hypercalls and faster/better TLB flushes - and there's also some Intel-MID cleanups" * 'x86-platform-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: tracing/hyper-v: Trace hyperv_mmu_flush_tlb_others() x86/hyper-v: Support extended CPU ranges for TLB flush hypercalls x86/platform/intel-mid: Make several arrays static, to make code smaller MAINTAINERS: Add missed file for Hyper-V x86/hyper-v: Use hypercall for remote TLB flush hyper-v: Globalize vp_index x86/hyper-v: Implement rep hypercalls hyper-v: Use fast hypercall for HVCALL_SIGNAL_EVENT x86/hyper-v: Introduce fast hypercall implementation x86/hyper-v: Make hv_do_hypercall() inline x86/hyper-v: Include hyperv/ only when CONFIG_HYPERV is set x86/platform/intel-mid: Make 'bt_sfi_data' const x86/platform/intel-mid: Make IRQ allocation a bit more flexible x86/platform/intel-mid: Group timers callbacks together
This commit is contained in:
commit
57e88b43b8
22 changed files with 552 additions and 183 deletions
|
|
@ -562,52 +562,6 @@ static void put_pcichild(struct hv_pci_dev *hv_pcidev,
|
|||
static void get_hvpcibus(struct hv_pcibus_device *hv_pcibus);
|
||||
static void put_hvpcibus(struct hv_pcibus_device *hv_pcibus);
|
||||
|
||||
|
||||
/*
|
||||
* Temporary CPU to vCPU mapping to address transitioning
|
||||
* vmbus_cpu_number_to_vp_number() being migrated to
|
||||
* hv_cpu_number_to_vp_number() in a separate patch. Once that patch
|
||||
* has been picked up in the main line, remove this code here and use
|
||||
* the official code.
|
||||
*/
|
||||
static struct hv_tmpcpumap
|
||||
{
|
||||
bool initialized;
|
||||
u32 vp_index[NR_CPUS];
|
||||
} hv_tmpcpumap;
|
||||
|
||||
static void hv_tmpcpumap_init_cpu(void *_unused)
|
||||
{
|
||||
int cpu = smp_processor_id();
|
||||
u64 vp_index;
|
||||
|
||||
hv_get_vp_index(vp_index);
|
||||
|
||||
hv_tmpcpumap.vp_index[cpu] = vp_index;
|
||||
}
|
||||
|
||||
static void hv_tmpcpumap_init(void)
|
||||
{
|
||||
if (hv_tmpcpumap.initialized)
|
||||
return;
|
||||
|
||||
memset(hv_tmpcpumap.vp_index, -1, sizeof(hv_tmpcpumap.vp_index));
|
||||
on_each_cpu(hv_tmpcpumap_init_cpu, NULL, true);
|
||||
hv_tmpcpumap.initialized = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* hv_tmp_cpu_nr_to_vp_nr() - Convert Linux CPU nr to Hyper-V vCPU nr
|
||||
*
|
||||
* Remove once vmbus_cpu_number_to_vp_number() has been converted to
|
||||
* hv_cpu_number_to_vp_number() and replace callers appropriately.
|
||||
*/
|
||||
static u32 hv_tmp_cpu_nr_to_vp_nr(int cpu)
|
||||
{
|
||||
return hv_tmpcpumap.vp_index[cpu];
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* devfn_to_wslot() - Convert from Linux PCI slot to Windows
|
||||
* @devfn: The Linux representation of PCI slot
|
||||
|
|
@ -971,7 +925,7 @@ static void hv_irq_unmask(struct irq_data *data)
|
|||
var_size = 1 + HV_VP_SET_BANK_COUNT_MAX;
|
||||
|
||||
for_each_cpu_and(cpu, dest, cpu_online_mask) {
|
||||
cpu_vmbus = hv_tmp_cpu_nr_to_vp_nr(cpu);
|
||||
cpu_vmbus = hv_cpu_number_to_vp_number(cpu);
|
||||
|
||||
if (cpu_vmbus >= HV_VP_SET_BANK_COUNT_MAX * 64) {
|
||||
dev_err(&hbus->hdev->device,
|
||||
|
|
@ -986,7 +940,7 @@ static void hv_irq_unmask(struct irq_data *data)
|
|||
} else {
|
||||
for_each_cpu_and(cpu, dest, cpu_online_mask) {
|
||||
params->int_target.vp_mask |=
|
||||
(1ULL << hv_tmp_cpu_nr_to_vp_nr(cpu));
|
||||
(1ULL << hv_cpu_number_to_vp_number(cpu));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1063,7 +1017,7 @@ static u32 hv_compose_msi_req_v2(
|
|||
*/
|
||||
cpu = cpumask_first_and(affinity, cpu_online_mask);
|
||||
int_pkt->int_desc.processor_array[0] =
|
||||
hv_tmp_cpu_nr_to_vp_nr(cpu);
|
||||
hv_cpu_number_to_vp_number(cpu);
|
||||
int_pkt->int_desc.processor_count = 1;
|
||||
|
||||
return sizeof(*int_pkt);
|
||||
|
|
@ -2490,8 +2444,6 @@ static int hv_pci_probe(struct hv_device *hdev,
|
|||
return -ENOMEM;
|
||||
hbus->state = hv_pcibus_init;
|
||||
|
||||
hv_tmpcpumap_init();
|
||||
|
||||
/*
|
||||
* The PCI bus "domain" is what is called "segment" in ACPI and
|
||||
* other specs. Pull it from the instance ID, to get something
|
||||
|
|
|
|||
Loading…
Reference in a new issue