mirror of
https://github.com/linux-msm/laptops-kernel.git
synced 2026-08-13 14:19:53 -07:00
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
VERSION = 4
|
||||
PATCHLEVEL = 9
|
||||
SUBLEVEL = 0
|
||||
EXTRAVERSION = -rc7
|
||||
EXTRAVERSION = -rc8
|
||||
NAME = Psychotic Stoned Sheep
|
||||
|
||||
# *DOCUMENTATION*
|
||||
@@ -607,6 +607,13 @@ else
|
||||
include/config/auto.conf: ;
|
||||
endif # $(dot-config)
|
||||
|
||||
# For the kernel to actually contain only the needed exported symbols,
|
||||
# we have to build modules as well to determine what those symbols are.
|
||||
# (this can be evaluated only once include/config/auto.conf has been included)
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
KBUILD_MODULES := 1
|
||||
endif
|
||||
|
||||
# The all: target is the default when no target is given on the
|
||||
# command line.
|
||||
# This allow a user to issue only 'make' to build a kernel including modules
|
||||
@@ -944,7 +951,7 @@ ifdef CONFIG_GDB_SCRIPTS
|
||||
endif
|
||||
ifdef CONFIG_TRIM_UNUSED_KSYMS
|
||||
$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
|
||||
"$(MAKE) KBUILD_MODULES=1 -f $(srctree)/Makefile vmlinux_prereq"
|
||||
"$(MAKE) -f $(srctree)/Makefile vmlinux"
|
||||
endif
|
||||
|
||||
# standalone target for easier testing
|
||||
|
||||
@@ -100,7 +100,8 @@ src-wlib-y := string.S crt0.S crtsavres.S stdio.c decompress.c main.c \
|
||||
ns16550.c serial.c simple_alloc.c div64.S util.S \
|
||||
elf_util.c $(zlib-y) devtree.c stdlib.c \
|
||||
oflib.c ofconsole.c cuboot.c mpsc.c cpm-serial.c \
|
||||
uartlite.c mpc52xx-psc.c opal.c opal-calls.S
|
||||
uartlite.c mpc52xx-psc.c opal.c
|
||||
src-wlib-$(CONFIG_PPC64_BOOT_WRAPPER) += opal-calls.S
|
||||
src-wlib-$(CONFIG_40x) += 4xx.c planetcore.c
|
||||
src-wlib-$(CONFIG_44x) += 4xx.c ebony.c bamboo.c
|
||||
src-wlib-$(CONFIG_8xx) += mpc8xx.c planetcore.c fsl-soc.c
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include <libfdt.h>
|
||||
#include "../include/asm/opal-api.h"
|
||||
|
||||
#ifdef __powerpc64__
|
||||
#ifdef CONFIG_PPC64_BOOT_WRAPPER
|
||||
|
||||
/* Global OPAL struct used by opal-call.S */
|
||||
struct opal {
|
||||
|
||||
@@ -671,8 +671,10 @@ static int eeh_reset_device(struct eeh_pe *pe, struct pci_bus *bus,
|
||||
|
||||
/* Clear frozen state */
|
||||
rc = eeh_clear_pe_frozen_state(pe, false);
|
||||
if (rc)
|
||||
if (rc) {
|
||||
pci_unlock_rescan_remove();
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* Give the system 5 seconds to finish running the user-space
|
||||
* hotplug shutdown scripts, e.g. ifdown for ethernet. Yes,
|
||||
|
||||
@@ -94,8 +94,17 @@ SECTIONS
|
||||
* detected, and will result in a crash at boot due to offsets being
|
||||
* wrong.
|
||||
*/
|
||||
#ifdef CONFIG_PPC64
|
||||
/*
|
||||
* BLOCK(0) overrides the default output section alignment because
|
||||
* this needs to start right after .head.text in order for fixed
|
||||
* section placement to work.
|
||||
*/
|
||||
.text BLOCK(0) : AT(ADDR(.text) - LOAD_OFFSET) {
|
||||
#else
|
||||
.text : AT(ADDR(.text) - LOAD_OFFSET) {
|
||||
ALIGN_FUNCTION();
|
||||
#endif
|
||||
/* careful! __ftr_alt_* sections need to be close to .text */
|
||||
*(.text .fixup __ftr_alt_* .ref.text)
|
||||
SCHED_TEXT
|
||||
|
||||
@@ -55,7 +55,7 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
|
||||
*/
|
||||
rflags = htab_convert_pte_flags(new_pte);
|
||||
|
||||
if (!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||
if (cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||
!cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
|
||||
rflags = hash_page_do_lazy_icache(rflags, __pte(old_pte), trap);
|
||||
|
||||
|
||||
@@ -87,7 +87,7 @@ int __hash_page_4K(unsigned long ea, unsigned long access, unsigned long vsid,
|
||||
subpg_pte = new_pte & ~subpg_prot;
|
||||
rflags = htab_convert_pte_flags(subpg_pte);
|
||||
|
||||
if (!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||
if (cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||
!cpu_has_feature(CPU_FTR_COHERENT_ICACHE)) {
|
||||
|
||||
/*
|
||||
@@ -258,7 +258,7 @@ int __hash_page_64K(unsigned long ea, unsigned long access,
|
||||
|
||||
rflags = htab_convert_pte_flags(new_pte);
|
||||
|
||||
if (!cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||
if (cpu_has_feature(CPU_FTR_NOEXECUTE) &&
|
||||
!cpu_has_feature(CPU_FTR_COHERENT_ICACHE))
|
||||
rflags = hash_page_do_lazy_icache(rflags, __pte(old_pte), trap);
|
||||
|
||||
|
||||
@@ -40,6 +40,7 @@ obj-$(CONFIG_CRYPTO_ECDH) += ecdh_generic.o
|
||||
|
||||
$(obj)/rsapubkey-asn1.o: $(obj)/rsapubkey-asn1.c $(obj)/rsapubkey-asn1.h
|
||||
$(obj)/rsaprivkey-asn1.o: $(obj)/rsaprivkey-asn1.c $(obj)/rsaprivkey-asn1.h
|
||||
$(obj)/rsa_helper.o: $(obj)/rsapubkey-asn1.h $(obj)/rsaprivkey-asn1.h
|
||||
clean-files += rsapubkey-asn1.c rsapubkey-asn1.h
|
||||
clean-files += rsaprivkey-asn1.c rsaprivkey-asn1.h
|
||||
|
||||
|
||||
+24
-5
@@ -262,6 +262,7 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg,
|
||||
u8 *inbuf, u32 inbuflen,
|
||||
u8 *outbuf, u32 outlen);
|
||||
#define DRBG_CTR_NULL_LEN 128
|
||||
#define DRBG_OUTSCRATCHLEN DRBG_CTR_NULL_LEN
|
||||
|
||||
/* BCC function for CTR DRBG as defined in 10.4.3 */
|
||||
static int drbg_ctr_bcc(struct drbg_state *drbg,
|
||||
@@ -1644,6 +1645,9 @@ static int drbg_fini_sym_kernel(struct drbg_state *drbg)
|
||||
kfree(drbg->ctr_null_value_buf);
|
||||
drbg->ctr_null_value = NULL;
|
||||
|
||||
kfree(drbg->outscratchpadbuf);
|
||||
drbg->outscratchpadbuf = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -1708,6 +1712,15 @@ static int drbg_init_sym_kernel(struct drbg_state *drbg)
|
||||
drbg->ctr_null_value = (u8 *)PTR_ALIGN(drbg->ctr_null_value_buf,
|
||||
alignmask + 1);
|
||||
|
||||
drbg->outscratchpadbuf = kmalloc(DRBG_OUTSCRATCHLEN + alignmask,
|
||||
GFP_KERNEL);
|
||||
if (!drbg->outscratchpadbuf) {
|
||||
drbg_fini_sym_kernel(drbg);
|
||||
return -ENOMEM;
|
||||
}
|
||||
drbg->outscratchpad = (u8 *)PTR_ALIGN(drbg->outscratchpadbuf,
|
||||
alignmask + 1);
|
||||
|
||||
return alignmask;
|
||||
}
|
||||
|
||||
@@ -1737,15 +1750,16 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg,
|
||||
u8 *outbuf, u32 outlen)
|
||||
{
|
||||
struct scatterlist sg_in;
|
||||
int ret;
|
||||
|
||||
sg_init_one(&sg_in, inbuf, inlen);
|
||||
|
||||
while (outlen) {
|
||||
u32 cryptlen = min_t(u32, inlen, outlen);
|
||||
u32 cryptlen = min3(inlen, outlen, (u32)DRBG_OUTSCRATCHLEN);
|
||||
struct scatterlist sg_out;
|
||||
int ret;
|
||||
|
||||
sg_init_one(&sg_out, outbuf, cryptlen);
|
||||
/* Output buffer may not be valid for SGL, use scratchpad */
|
||||
sg_init_one(&sg_out, drbg->outscratchpad, cryptlen);
|
||||
skcipher_request_set_crypt(drbg->ctr_req, &sg_in, &sg_out,
|
||||
cryptlen, drbg->V);
|
||||
ret = crypto_skcipher_encrypt(drbg->ctr_req);
|
||||
@@ -1761,14 +1775,19 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg,
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return ret;
|
||||
goto out;
|
||||
}
|
||||
init_completion(&drbg->ctr_completion);
|
||||
|
||||
memcpy(outbuf, drbg->outscratchpad, cryptlen);
|
||||
|
||||
outlen -= cryptlen;
|
||||
}
|
||||
ret = 0;
|
||||
|
||||
return 0;
|
||||
out:
|
||||
memzero_explicit(drbg->outscratchpad, DRBG_OUTSCRATCHLEN);
|
||||
return ret;
|
||||
}
|
||||
#endif /* CONFIG_CRYPTO_DRBG_CTR */
|
||||
|
||||
|
||||
+1
-1
@@ -1727,7 +1727,7 @@ static int eni_do_init(struct atm_dev *dev)
|
||||
printk("\n");
|
||||
printk(KERN_ERR DEV_LABEL "(itf %d): can't set up page "
|
||||
"mapping\n",dev->number);
|
||||
return error;
|
||||
return -ENOMEM;
|
||||
}
|
||||
eni_dev->ioaddr = base;
|
||||
eni_dev->base_diff = real_base - (unsigned long) base;
|
||||
|
||||
@@ -2143,6 +2143,7 @@ static int lanai_dev_open(struct atm_dev *atmdev)
|
||||
lanai->base = (bus_addr_t) ioremap(raw_base, LANAI_MAPPING_SIZE);
|
||||
if (lanai->base == NULL) {
|
||||
printk(KERN_ERR DEV_LABEL ": couldn't remap I/O space\n");
|
||||
result = -ENOMEM;
|
||||
goto error_pci;
|
||||
}
|
||||
/* 3.3: Reset lanai and PHY */
|
||||
|
||||
@@ -422,7 +422,7 @@ static inline void get_aes_decrypt_key(unsigned char *dec_key,
|
||||
{
|
||||
u32 temp;
|
||||
u32 w_ring[MAX_NK];
|
||||
int i, j, k = 0;
|
||||
int i, j, k;
|
||||
u8 nr, nk;
|
||||
|
||||
switch (keylength) {
|
||||
@@ -460,6 +460,7 @@ static inline void get_aes_decrypt_key(unsigned char *dec_key,
|
||||
temp = w_ring[i % nk];
|
||||
i++;
|
||||
}
|
||||
i--;
|
||||
for (k = 0, j = i % nk; k < nk; k++) {
|
||||
*((u32 *)dec_key + k) = htonl(w_ring[j]);
|
||||
j--;
|
||||
|
||||
@@ -485,7 +485,6 @@ static int amdgpu_atpx_power_state(enum vga_switcheroo_client_id id,
|
||||
*/
|
||||
static bool amdgpu_atpx_pci_probe_handle(struct pci_dev *pdev)
|
||||
{
|
||||
struct pci_dev *parent_pdev = pci_upstream_bridge(pdev);
|
||||
acpi_handle dhandle, atpx_handle;
|
||||
acpi_status status;
|
||||
|
||||
@@ -500,7 +499,6 @@ static bool amdgpu_atpx_pci_probe_handle(struct pci_dev *pdev)
|
||||
}
|
||||
amdgpu_atpx_priv.dhandle = dhandle;
|
||||
amdgpu_atpx_priv.atpx.handle = atpx_handle;
|
||||
amdgpu_atpx_priv.bridge_pm_usable = parent_pdev && parent_pdev->bridge_d3;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -562,17 +560,25 @@ static bool amdgpu_atpx_detect(void)
|
||||
struct pci_dev *pdev = NULL;
|
||||
bool has_atpx = false;
|
||||
int vga_count = 0;
|
||||
bool d3_supported = false;
|
||||
struct pci_dev *parent_pdev;
|
||||
|
||||
while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) {
|
||||
vga_count++;
|
||||
|
||||
has_atpx |= (amdgpu_atpx_pci_probe_handle(pdev) == true);
|
||||
|
||||
parent_pdev = pci_upstream_bridge(pdev);
|
||||
d3_supported |= parent_pdev && parent_pdev->bridge_d3;
|
||||
}
|
||||
|
||||
while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_OTHER << 8, pdev)) != NULL) {
|
||||
vga_count++;
|
||||
|
||||
has_atpx |= (amdgpu_atpx_pci_probe_handle(pdev) == true);
|
||||
|
||||
parent_pdev = pci_upstream_bridge(pdev);
|
||||
d3_supported |= parent_pdev && parent_pdev->bridge_d3;
|
||||
}
|
||||
|
||||
if (has_atpx && vga_count == 2) {
|
||||
@@ -580,6 +586,7 @@ static bool amdgpu_atpx_detect(void)
|
||||
printk(KERN_INFO "vga_switcheroo: detected switching method %s handle\n",
|
||||
acpi_method_name);
|
||||
amdgpu_atpx_priv.atpx_detected = true;
|
||||
amdgpu_atpx_priv.bridge_pm_usable = d3_supported;
|
||||
amdgpu_atpx_init();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -2214,6 +2214,7 @@ uint32_t polaris10_get_mac_definition(uint32_t value)
|
||||
int polaris10_process_firmware_header(struct pp_hwmgr *hwmgr)
|
||||
{
|
||||
struct polaris10_smumgr *smu_data = (struct polaris10_smumgr *)(hwmgr->smumgr->backend);
|
||||
struct smu7_hwmgr *data = (struct smu7_hwmgr *)(hwmgr->backend);
|
||||
uint32_t tmp;
|
||||
int result;
|
||||
bool error = false;
|
||||
@@ -2233,8 +2234,10 @@ int polaris10_process_firmware_header(struct pp_hwmgr *hwmgr)
|
||||
offsetof(SMU74_Firmware_Header, SoftRegisters),
|
||||
&tmp, SMC_RAM_END);
|
||||
|
||||
if (!result)
|
||||
if (!result) {
|
||||
data->soft_regs_start = tmp;
|
||||
smu_data->smu7_data.soft_regs_start = tmp;
|
||||
}
|
||||
|
||||
error |= (0 != result);
|
||||
|
||||
|
||||
@@ -375,7 +375,6 @@ static int hdlcd_drm_bind(struct device *dev)
|
||||
|
||||
err_fbdev:
|
||||
drm_kms_helper_poll_fini(drm);
|
||||
drm_mode_config_cleanup(drm);
|
||||
drm_vblank_cleanup(drm);
|
||||
err_vblank:
|
||||
pm_runtime_disable(drm->dev);
|
||||
@@ -387,6 +386,7 @@ err_unload:
|
||||
drm_irq_uninstall(drm);
|
||||
of_reserved_mem_device_release(drm->dev);
|
||||
err_free:
|
||||
drm_mode_config_cleanup(drm);
|
||||
dev_set_drvdata(dev, NULL);
|
||||
drm_dev_unref(drm);
|
||||
|
||||
|
||||
@@ -254,10 +254,12 @@ static int drm_getcap(struct drm_device *dev, void *data, struct drm_file *file_
|
||||
req->value = dev->mode_config.async_page_flip;
|
||||
break;
|
||||
case DRM_CAP_PAGE_FLIP_TARGET:
|
||||
req->value = 1;
|
||||
drm_for_each_crtc(crtc, dev) {
|
||||
if (!crtc->funcs->page_flip_target)
|
||||
req->value = 0;
|
||||
if (drm_core_check_feature(dev, DRIVER_MODESET)) {
|
||||
req->value = 1;
|
||||
drm_for_each_crtc(crtc, dev) {
|
||||
if (!crtc->funcs->page_flip_target)
|
||||
req->value = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DRM_CAP_CURSOR_WIDTH:
|
||||
|
||||
@@ -2268,7 +2268,7 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
|
||||
page = shmem_read_mapping_page(mapping, i);
|
||||
if (IS_ERR(page)) {
|
||||
ret = PTR_ERR(page);
|
||||
goto err_pages;
|
||||
goto err_sg;
|
||||
}
|
||||
}
|
||||
#ifdef CONFIG_SWIOTLB
|
||||
@@ -2311,8 +2311,9 @@ i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj)
|
||||
|
||||
return 0;
|
||||
|
||||
err_pages:
|
||||
err_sg:
|
||||
sg_mark_end(sg);
|
||||
err_pages:
|
||||
for_each_sgt_page(page, sgt_iter, st)
|
||||
put_page(page);
|
||||
sg_free_table(st);
|
||||
|
||||
@@ -12260,7 +12260,7 @@ static int intel_crtc_page_flip(struct drm_crtc *crtc,
|
||||
intel_crtc->reset_count = i915_reset_count(&dev_priv->gpu_error);
|
||||
if (i915_reset_in_progress_or_wedged(&dev_priv->gpu_error)) {
|
||||
ret = -EIO;
|
||||
goto cleanup;
|
||||
goto unlock;
|
||||
}
|
||||
|
||||
atomic_inc(&intel_crtc->unpin_work_count);
|
||||
@@ -12352,6 +12352,7 @@ cleanup_unpin:
|
||||
intel_unpin_fb_obj(fb, crtc->primary->state->rotation);
|
||||
cleanup_pending:
|
||||
atomic_dec(&intel_crtc->unpin_work_count);
|
||||
unlock:
|
||||
mutex_unlock(&dev->struct_mutex);
|
||||
cleanup:
|
||||
crtc->primary->fb = old_fb;
|
||||
|
||||
@@ -479,7 +479,6 @@ static int radeon_atpx_power_state(enum vga_switcheroo_client_id id,
|
||||
*/
|
||||
static bool radeon_atpx_pci_probe_handle(struct pci_dev *pdev)
|
||||
{
|
||||
struct pci_dev *parent_pdev = pci_upstream_bridge(pdev);
|
||||
acpi_handle dhandle, atpx_handle;
|
||||
acpi_status status;
|
||||
|
||||
@@ -493,7 +492,6 @@ static bool radeon_atpx_pci_probe_handle(struct pci_dev *pdev)
|
||||
|
||||
radeon_atpx_priv.dhandle = dhandle;
|
||||
radeon_atpx_priv.atpx.handle = atpx_handle;
|
||||
radeon_atpx_priv.bridge_pm_usable = parent_pdev && parent_pdev->bridge_d3;
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -555,11 +553,16 @@ static bool radeon_atpx_detect(void)
|
||||
struct pci_dev *pdev = NULL;
|
||||
bool has_atpx = false;
|
||||
int vga_count = 0;
|
||||
bool d3_supported = false;
|
||||
struct pci_dev *parent_pdev;
|
||||
|
||||
while ((pdev = pci_get_class(PCI_CLASS_DISPLAY_VGA << 8, pdev)) != NULL) {
|
||||
vga_count++;
|
||||
|
||||
has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true);
|
||||
|
||||
parent_pdev = pci_upstream_bridge(pdev);
|
||||
d3_supported |= parent_pdev && parent_pdev->bridge_d3;
|
||||
}
|
||||
|
||||
/* some newer PX laptops mark the dGPU as a non-VGA display device */
|
||||
@@ -567,6 +570,9 @@ static bool radeon_atpx_detect(void)
|
||||
vga_count++;
|
||||
|
||||
has_atpx |= (radeon_atpx_pci_probe_handle(pdev) == true);
|
||||
|
||||
parent_pdev = pci_upstream_bridge(pdev);
|
||||
d3_supported |= parent_pdev && parent_pdev->bridge_d3;
|
||||
}
|
||||
|
||||
if (has_atpx && vga_count == 2) {
|
||||
@@ -574,6 +580,7 @@ static bool radeon_atpx_detect(void)
|
||||
printk(KERN_INFO "vga_switcheroo: detected switching method %s handle\n",
|
||||
acpi_method_name);
|
||||
radeon_atpx_priv.atpx_detected = true;
|
||||
radeon_atpx_priv.bridge_pm_usable = d3_supported;
|
||||
radeon_atpx_init();
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -1499,6 +1499,7 @@ hfc4s8s_probe(struct pci_dev *pdev, const struct pci_device_id *ent)
|
||||
printk(KERN_INFO
|
||||
"HFC-4S/8S: failed to request address space at 0x%04x\n",
|
||||
hw->iobase);
|
||||
err = -EBUSY;
|
||||
goto out;
|
||||
}
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user