mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-11 13:27:06 +09:00
Merge branch 'master' into sid
* Drop ABI reference and ABI maintenance patch * Drop patches that are already included in 5.3.7 * Rewrite changelog entry for enabling of SOF sound driver * Drop "[rt] Update to 5.2.17-rt9" from debian/changelog as rt isn't enabled on 5.3
This commit is contained in:
16
debian/.gitignore
vendored
16
debian/.gitignore
vendored
@@ -4,27 +4,27 @@
|
||||
!series
|
||||
*.debhelper*
|
||||
*.pyc
|
||||
*.substvars
|
||||
*-di
|
||||
/*-tmp/
|
||||
/*.substvars
|
||||
/*-modules-*-di*
|
||||
/*-tmp
|
||||
/build/
|
||||
/config.defines.dump
|
||||
/control
|
||||
/control.md5sum
|
||||
/files
|
||||
/hyperv-daemons/
|
||||
/kernel-image-*-di*
|
||||
/libbpf*/
|
||||
/libcpupower*/
|
||||
/liblockdep*/
|
||||
/libusbip-dev/
|
||||
/linux-*
|
||||
!/linux-cpupower.install
|
||||
!/linux-cpupower.manpages
|
||||
/linux-*/
|
||||
/linux-headers-*
|
||||
/linux-image-*
|
||||
/linux-perf-*
|
||||
/lockdep/
|
||||
/po/
|
||||
/rules.gen
|
||||
/stamps/
|
||||
/tests/control
|
||||
/tmp/
|
||||
/usbip/
|
||||
/xen-linux-system-*
|
||||
|
||||
2
debian/README.source
vendored
2
debian/README.source
vendored
@@ -253,6 +253,8 @@ Several build profiles are understood and supported:
|
||||
with nopython as the build-dependencies will be unsatisfiable otherwise.
|
||||
- nopython: Disable Python bindings. This currently disables building the
|
||||
linux-perf-<version> package, as the perf program embeds Python.
|
||||
- pkg.linux.nometa: Exclude most meta-packages. The linux-compiler-* and
|
||||
linux-headers-*-all* packages can still be built.
|
||||
|
||||
Build rules
|
||||
===========
|
||||
|
||||
16187
debian/abi/5.2.0-3/alpha_none_alpha-generic
vendored
16187
debian/abi/5.2.0-3/alpha_none_alpha-generic
vendored
File diff suppressed because it is too large
Load Diff
16317
debian/abi/5.2.0-3/alpha_none_alpha-smp
vendored
16317
debian/abi/5.2.0-3/alpha_none_alpha-smp
vendored
File diff suppressed because it is too large
Load Diff
20779
debian/abi/5.2.0-3/amd64_none_amd64
vendored
20779
debian/abi/5.2.0-3/amd64_none_amd64
vendored
File diff suppressed because it is too large
Load Diff
11609
debian/abi/5.2.0-3/amd64_none_cloud-amd64
vendored
11609
debian/abi/5.2.0-3/amd64_none_cloud-amd64
vendored
File diff suppressed because it is too large
Load Diff
20724
debian/abi/5.2.0-3/amd64_rt_amd64
vendored
20724
debian/abi/5.2.0-3/amd64_rt_amd64
vendored
File diff suppressed because it is too large
Load Diff
19782
debian/abi/5.2.0-3/arm64_none_arm64
vendored
19782
debian/abi/5.2.0-3/arm64_none_arm64
vendored
File diff suppressed because it is too large
Load Diff
19730
debian/abi/5.2.0-3/arm64_rt_arm64
vendored
19730
debian/abi/5.2.0-3/arm64_rt_arm64
vendored
File diff suppressed because it is too large
Load Diff
15876
debian/abi/5.2.0-3/armel_none_marvell
vendored
15876
debian/abi/5.2.0-3/armel_none_marvell
vendored
File diff suppressed because it is too large
Load Diff
15286
debian/abi/5.2.0-3/armel_none_rpi
vendored
15286
debian/abi/5.2.0-3/armel_none_rpi
vendored
File diff suppressed because it is too large
Load Diff
19080
debian/abi/5.2.0-3/armhf_none_armmp
vendored
19080
debian/abi/5.2.0-3/armhf_none_armmp
vendored
File diff suppressed because it is too large
Load Diff
19209
debian/abi/5.2.0-3/armhf_none_armmp-lpae
vendored
19209
debian/abi/5.2.0-3/armhf_none_armmp-lpae
vendored
File diff suppressed because it is too large
Load Diff
19026
debian/abi/5.2.0-3/armhf_rt_armmp
vendored
19026
debian/abi/5.2.0-3/armhf_rt_armmp
vendored
File diff suppressed because it is too large
Load Diff
14933
debian/abi/5.2.0-3/hppa_none_parisc
vendored
14933
debian/abi/5.2.0-3/hppa_none_parisc
vendored
File diff suppressed because it is too large
Load Diff
15804
debian/abi/5.2.0-3/hppa_none_parisc64
vendored
15804
debian/abi/5.2.0-3/hppa_none_parisc64
vendored
File diff suppressed because it is too large
Load Diff
20546
debian/abi/5.2.0-3/i386_none_686
vendored
20546
debian/abi/5.2.0-3/i386_none_686
vendored
File diff suppressed because it is too large
Load Diff
20587
debian/abi/5.2.0-3/i386_none_686-pae
vendored
20587
debian/abi/5.2.0-3/i386_none_686-pae
vendored
File diff suppressed because it is too large
Load Diff
20532
debian/abi/5.2.0-3/i386_rt_686-pae
vendored
20532
debian/abi/5.2.0-3/i386_rt_686-pae
vendored
File diff suppressed because it is too large
Load Diff
17100
debian/abi/5.2.0-3/ia64_none_itanium
vendored
17100
debian/abi/5.2.0-3/ia64_none_itanium
vendored
File diff suppressed because it is too large
Load Diff
17100
debian/abi/5.2.0-3/ia64_none_mckinley
vendored
17100
debian/abi/5.2.0-3/ia64_none_mckinley
vendored
File diff suppressed because it is too large
Load Diff
8909
debian/abi/5.2.0-3/m68k_none_m68k
vendored
8909
debian/abi/5.2.0-3/m68k_none_m68k
vendored
File diff suppressed because it is too large
Load Diff
16793
debian/abi/5.2.0-3/mips64el_none_5kc-malta
vendored
16793
debian/abi/5.2.0-3/mips64el_none_5kc-malta
vendored
File diff suppressed because it is too large
Load Diff
16558
debian/abi/5.2.0-3/mips64el_none_loongson-3
vendored
16558
debian/abi/5.2.0-3/mips64el_none_loongson-3
vendored
File diff suppressed because it is too large
Load Diff
15547
debian/abi/5.2.0-3/mips64el_none_octeon
vendored
15547
debian/abi/5.2.0-3/mips64el_none_octeon
vendored
File diff suppressed because it is too large
Load Diff
16766
debian/abi/5.2.0-3/mipsel_none_4kc-malta
vendored
16766
debian/abi/5.2.0-3/mipsel_none_4kc-malta
vendored
File diff suppressed because it is too large
Load Diff
16793
debian/abi/5.2.0-3/mipsel_none_5kc-malta
vendored
16793
debian/abi/5.2.0-3/mipsel_none_5kc-malta
vendored
File diff suppressed because it is too large
Load Diff
16558
debian/abi/5.2.0-3/mipsel_none_loongson-3
vendored
16558
debian/abi/5.2.0-3/mipsel_none_loongson-3
vendored
File diff suppressed because it is too large
Load Diff
15547
debian/abi/5.2.0-3/mipsel_none_octeon
vendored
15547
debian/abi/5.2.0-3/mipsel_none_octeon
vendored
File diff suppressed because it is too large
Load Diff
17396
debian/abi/5.2.0-3/powerpc_none_powerpc
vendored
17396
debian/abi/5.2.0-3/powerpc_none_powerpc
vendored
File diff suppressed because it is too large
Load Diff
17542
debian/abi/5.2.0-3/powerpc_none_powerpc-smp
vendored
17542
debian/abi/5.2.0-3/powerpc_none_powerpc-smp
vendored
File diff suppressed because it is too large
Load Diff
18361
debian/abi/5.2.0-3/powerpc_none_powerpc64
vendored
18361
debian/abi/5.2.0-3/powerpc_none_powerpc64
vendored
File diff suppressed because it is too large
Load Diff
18361
debian/abi/5.2.0-3/ppc64_none_powerpc64
vendored
18361
debian/abi/5.2.0-3/ppc64_none_powerpc64
vendored
File diff suppressed because it is too large
Load Diff
17951
debian/abi/5.2.0-3/ppc64el_none_powerpc64le
vendored
17951
debian/abi/5.2.0-3/ppc64el_none_powerpc64le
vendored
File diff suppressed because it is too large
Load Diff
16116
debian/abi/5.2.0-3/riscv64_none_riscv64
vendored
16116
debian/abi/5.2.0-3/riscv64_none_riscv64
vendored
File diff suppressed because it is too large
Load Diff
14314
debian/abi/5.2.0-3/s390x_none_s390x
vendored
14314
debian/abi/5.2.0-3/s390x_none_s390x
vendored
File diff suppressed because it is too large
Load Diff
16012
debian/abi/5.2.0-3/sparc64_none_sparc64
vendored
16012
debian/abi/5.2.0-3/sparc64_none_sparc64
vendored
File diff suppressed because it is too large
Load Diff
16153
debian/abi/5.2.0-3/sparc64_none_sparc64-smp
vendored
16153
debian/abi/5.2.0-3/sparc64_none_sparc64-smp
vendored
File diff suppressed because it is too large
Load Diff
46
debian/bin/gencontrol.py
vendored
46
debian/bin/gencontrol.py
vendored
@@ -52,6 +52,7 @@ class Gencontrol(Base):
|
||||
'headers-all': config.SchemaItemBoolean(),
|
||||
'installer': config.SchemaItemBoolean(),
|
||||
'libc-dev': config.SchemaItemBoolean(),
|
||||
'meta': config.SchemaItemBoolean(),
|
||||
'tools-unversioned': config.SchemaItemBoolean(),
|
||||
'tools-versioned': config.SchemaItemBoolean(),
|
||||
'source': config.SchemaItemBoolean(),
|
||||
@@ -85,6 +86,7 @@ class Gencontrol(Base):
|
||||
'SOURCEVERSION': self.version.complete,
|
||||
})
|
||||
makeflags['SOURCE_BASENAME'] = self.vars['source_basename']
|
||||
makeflags['SOURCE_SUFFIX'] = self.vars['source_suffix']
|
||||
|
||||
# Prepare to generate debian/tests/control
|
||||
self.tests_control = self.process_packages(
|
||||
@@ -171,18 +173,33 @@ class Gencontrol(Base):
|
||||
def do_main_packages(self, packages, vars, makeflags, extra):
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.main"], self.vars))
|
||||
|
||||
# Only build the metapackages if their names won't exactly match
|
||||
# the packages they depend on
|
||||
do_meta = self.config.merge('packages').get('meta', True) \
|
||||
and vars['source_suffix'] != '-' + vars['version']
|
||||
|
||||
if self.config.merge('packages').get('docs', True):
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.docs"], self.vars))
|
||||
if do_meta:
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.docs.meta"], vars))
|
||||
if self.config.merge('packages').get('tools-unversioned', True):
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.tools-unversioned"], self.vars))
|
||||
if self.config.merge('packages').get('tools-versioned', True):
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.tools-versioned"], self.vars))
|
||||
if do_meta:
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.tools-versioned.meta"], vars))
|
||||
if self.config.merge('packages').get('source', True):
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.sourcebin"], self.vars))
|
||||
if do_meta:
|
||||
packages.extend(self.process_packages(
|
||||
self.templates["control.sourcebin.meta"], vars))
|
||||
|
||||
self._substitute_file('perf.lintian-overrides', self.vars,
|
||||
'debian/linux-perf-%s.lintian-overrides' %
|
||||
@@ -322,7 +339,7 @@ class Gencontrol(Base):
|
||||
('compiler', 'COMPILER', False),
|
||||
('compiler-filename', 'COMPILER', True),
|
||||
('kernel-arch', 'KERNEL_ARCH', False),
|
||||
('cflags', 'CFLAGS_KERNEL', True),
|
||||
('cflags', 'KCFLAGS', True),
|
||||
('override-host-type', 'OVERRIDE_HOST_TYPE', True),
|
||||
)
|
||||
|
||||
@@ -347,6 +364,7 @@ class Gencontrol(Base):
|
||||
flavour)
|
||||
config_image = self.config.merge('image', arch, featureset, flavour)
|
||||
|
||||
vars['flavour'] = vars['localversion'][1:]
|
||||
vars['class'] = config_description['hardware']
|
||||
vars['longclass'] = (config_description.get('hardware-long')
|
||||
or vars['class'])
|
||||
@@ -371,6 +389,7 @@ class Gencontrol(Base):
|
||||
headers = self.templates["control.headers"]
|
||||
assert len(headers) == 1
|
||||
|
||||
do_meta = self.config.merge('packages').get('meta', True)
|
||||
config_entry_base = self.config.merge('base', arch, featureset,
|
||||
flavour)
|
||||
config_entry_build = self.config.merge('build', arch, featureset,
|
||||
@@ -469,12 +488,28 @@ class Gencontrol(Base):
|
||||
packages_own.append(image_main)
|
||||
makeflags['IMAGE_PACKAGE_NAME'] = image_main['Package']
|
||||
|
||||
# The image meta-packages will depend on signed linux-image
|
||||
# packages where applicable, so should be built from the
|
||||
# signed source packages
|
||||
if do_meta and not build_signed:
|
||||
packages_own.extend(self.process_packages(
|
||||
self.templates["control.image.meta"], vars))
|
||||
|
||||
# Include a bug presubj message directing reporters to the real
|
||||
# image package.
|
||||
self._substitute_file(
|
||||
"image.meta.bug-presubj", vars,
|
||||
"debian/linux-image%s.bug-presubj" % vars['localversion'])
|
||||
|
||||
package_headers = self.process_package(headers[0], vars)
|
||||
package_headers['Depends'].extend(relations_compiler_headers)
|
||||
packages_own.append(package_headers)
|
||||
if extra.get('headers_arch_depends'):
|
||||
extra['headers_arch_depends'].append('%s (= ${binary:Version})' %
|
||||
packages_own[-1]['Package'])
|
||||
if do_meta:
|
||||
packages_own.extend(self.process_packages(
|
||||
self.templates["control.headers.meta"], vars))
|
||||
|
||||
if config_entry_build.get('vdso', False):
|
||||
makeflags['VDSO'] = True
|
||||
@@ -496,6 +531,13 @@ class Gencontrol(Base):
|
||||
makeflags['DEBUG'] = True
|
||||
packages_own.extend(self.process_packages(
|
||||
self.templates['control.image-dbg'], vars))
|
||||
if do_meta:
|
||||
packages_own.extend(self.process_packages(
|
||||
self.templates["control.image-dbg.meta"], vars))
|
||||
self._substitute_file(
|
||||
'image-dbg.meta.lintian-overrides', vars,
|
||||
'debian/linux-image%s-dbg.lintian-overrides' %
|
||||
vars['localversion'])
|
||||
|
||||
merge_packages(packages, packages_own, arch)
|
||||
|
||||
@@ -626,6 +668,8 @@ class Gencontrol(Base):
|
||||
'source_package': self.changelog[0].source,
|
||||
'abiname': self.abiname_version + self.abiname_part,
|
||||
}
|
||||
self.vars['source_suffix'] = \
|
||||
self.changelog[0].source[len(self.vars['source_basename']):]
|
||||
self.config['version', ] = {'source': self.version.complete,
|
||||
'upstream': self.version.linux_upstream,
|
||||
'abiname_base': self.abiname_version,
|
||||
|
||||
40
debian/bin/gencontrol_signed.py
vendored
40
debian/bin/gencontrol_signed.py
vendored
@@ -36,6 +36,7 @@ class Gencontrol(Base):
|
||||
'template': 'linux-image-%s-signed-template' % arch,
|
||||
'upstreamversion': self.version.linux_upstream,
|
||||
'version': self.version.linux_version,
|
||||
'source_suffix': '',
|
||||
'source_upstream': self.version.upstream,
|
||||
'abiname': self.abiname,
|
||||
'imagebinaryversion': image_binary_version,
|
||||
@@ -147,7 +148,15 @@ class Gencontrol(Base):
|
||||
super(Gencontrol, self).do_flavour_setup(vars, makeflags, arch,
|
||||
featureset, flavour, extra)
|
||||
|
||||
config_description = self.config.merge('description', arch, featureset,
|
||||
flavour)
|
||||
config_image = self.config.merge('image', arch, featureset, flavour)
|
||||
|
||||
vars['flavour'] = vars['localversion'][1:]
|
||||
vars['class'] = config_description['hardware']
|
||||
vars['longclass'] = (config_description.get('hardware-long')
|
||||
or vars['class'])
|
||||
|
||||
vars['image-stem'] = config_image.get('install-stem')
|
||||
makeflags['IMAGE_INSTALL_STEM'] = vars['image-stem']
|
||||
|
||||
@@ -187,15 +196,34 @@ class Gencontrol(Base):
|
||||
image_package_name
|
||||
+ ' (= %(imagebinaryversion)s) [%(arch)s]' % vars)
|
||||
|
||||
packages_signed = self.process_packages(
|
||||
packages_own = self.process_packages(
|
||||
self.templates['control.image'], vars)
|
||||
merge_packages(packages, packages_signed, arch)
|
||||
assert len(packages_own) == 1
|
||||
cmds_binary_arch = ["$(MAKE) -f debian/rules.real install-signed "
|
||||
"PACKAGE_NAME='%s' %s" %
|
||||
(packages_own[0]['Package'], makeflags)]
|
||||
|
||||
cmds_binary_arch = []
|
||||
for i in packages_signed:
|
||||
cmds_binary_arch += ["$(MAKE) -f debian/rules.real install-signed "
|
||||
if self.config.merge('packages').get('meta', True):
|
||||
packages_meta = self.process_packages(
|
||||
self.templates['control.image.meta'], vars)
|
||||
assert len(packages_meta) == 1
|
||||
|
||||
# Don't pretend to support build-profiles
|
||||
del packages_meta[0]['Build-Profiles']
|
||||
|
||||
packages_own.extend(packages_meta)
|
||||
cmds_binary_arch += ["$(MAKE) -f debian/rules.real install-meta "
|
||||
"PACKAGE_NAME='%s' %s" %
|
||||
(i['Package'], makeflags)]
|
||||
(packages_meta[0]['Package'], makeflags)]
|
||||
|
||||
# Include a bug presubj message directing reporters to the real
|
||||
# image package.
|
||||
self._substitute_file(
|
||||
"image.meta.bug-presubj", vars,
|
||||
self.template_debian_dir +
|
||||
"/linux-image%s.bug-presubj" % vars['localversion'])
|
||||
|
||||
merge_packages(packages, packages_own, arch)
|
||||
makefile.add('binary-arch_%s_%s_%s_real' % (arch, featureset, flavour),
|
||||
cmds=cmds_binary_arch)
|
||||
|
||||
|
||||
2
debian/bin/genorig.py
vendored
2
debian/bin/genorig.py
vendored
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/python3
|
||||
|
||||
import sys
|
||||
import deb822
|
||||
from debian import deb822
|
||||
import glob
|
||||
import os
|
||||
import os.path
|
||||
|
||||
13061
debian/changelog
vendored
13061
debian/changelog
vendored
File diff suppressed because it is too large
Load Diff
12946
debian/changelog.old
vendored
12946
debian/changelog.old
vendored
File diff suppressed because it is too large
Load Diff
29
debian/config/alpha/config
vendored
29
debian/config/alpha/config
vendored
@@ -334,27 +334,13 @@ CONFIG_INPUT_TOUCHSCREEN=y
|
||||
## file: drivers/isdn/Kconfig
|
||||
##
|
||||
CONFIG_ISDN=y
|
||||
CONFIG_ISDN_CAPI=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/capi/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_CAPI=m
|
||||
CONFIG_ISDN_CAPI_CAPI20=m
|
||||
CONFIG_ISDN_CAPI_MIDDLEWARE=y
|
||||
CONFIG_ISDN_CAPI_CAPIDRV=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_T1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/media/radio/Kconfig
|
||||
@@ -772,6 +758,19 @@ CONFIG_MEGARAID_LEGACY=m
|
||||
CONFIG_PCMCIA_QLOGIC=m
|
||||
CONFIG_PCMCIA_SYM53C500=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_T1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/tty/Kconfig
|
||||
##
|
||||
|
||||
5
debian/config/amd64/config.cloud-amd64
vendored
5
debian/config/amd64/config.cloud-amd64
vendored
@@ -234,11 +234,6 @@ CONFIG_XEN_BLKDEV_FRONTEND=m
|
||||
# CONFIG_FIREWIRE is not set
|
||||
# CONFIG_FIREWIRE_NOSY is not set
|
||||
|
||||
##
|
||||
## file: drivers/fmc/Kconfig
|
||||
##
|
||||
# CONFIG_FMC is not set
|
||||
|
||||
##
|
||||
## file: drivers/fpga/Kconfig
|
||||
##
|
||||
|
||||
3
debian/config/amd64/defines
vendored
3
debian/config/amd64/defines
vendored
@@ -16,8 +16,7 @@ install-stem: vmlinuz
|
||||
breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99)
|
||||
|
||||
[relations]
|
||||
gcc-8: gcc-8 (>= 8-20180123-1~) <!stage1 !cross !pkg.linux.nokernel>, gcc-8-x86-64-linux-gnu (>= 8-20180123-1~) <!stage1 cross !pkg.linux.nokernel>
|
||||
headers%gcc-8: linux-compiler-gcc-8-x86
|
||||
headers%gcc-9: linux-compiler-gcc-9-x86
|
||||
|
||||
[amd64_description]
|
||||
hardware: 64-bit PCs
|
||||
|
||||
10
debian/config/arm64/config
vendored
10
debian/config/arm64/config
vendored
@@ -395,6 +395,7 @@ CONFIG_I2C_GPIO=m
|
||||
CONFIG_I2C_MESON=m
|
||||
CONFIG_I2C_MV64XXX=m
|
||||
CONFIG_I2C_PXA=m
|
||||
CONFIG_I2C_QCOM_GENI=m
|
||||
CONFIG_I2C_QUP=m
|
||||
CONFIG_I2C_RK3X=m
|
||||
CONFIG_I2C_TEGRA=m
|
||||
@@ -441,7 +442,7 @@ CONFIG_IIO_CROS_EC_BARO=m
|
||||
##
|
||||
## file: drivers/infiniband/hw/hns/Kconfig
|
||||
##
|
||||
CONFIG_INFINIBAND_HNS=m
|
||||
CONFIG_INFINIBAND_HNS=y
|
||||
CONFIG_INFINIBAND_HNS_HIP06=m
|
||||
CONFIG_INFINIBAND_HNS_HIP08=m
|
||||
|
||||
@@ -741,7 +742,7 @@ CONFIG_MESON_GXL_PHY=m
|
||||
CONFIG_WCN36XX=m
|
||||
|
||||
##
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/Kconfig
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/brcmfmac/Kconfig
|
||||
##
|
||||
CONFIG_BRCMFMAC_SDIO=y
|
||||
|
||||
@@ -1280,6 +1281,11 @@ CONFIG_CMA_SIZE_MBYTES=64
|
||||
##
|
||||
CONFIG_ENERGY_MODEL=y
|
||||
|
||||
##
|
||||
## file: lib/vdso/Kconfig
|
||||
##
|
||||
CONFIG_CROSS_COMPILE_COMPAT_VDSO="arm-linux-gnueabihf-"
|
||||
|
||||
##
|
||||
## file: mm/Kconfig
|
||||
##
|
||||
|
||||
4
debian/config/arm64/defines
vendored
4
debian/config/arm64/defines
vendored
@@ -18,3 +18,7 @@ breaks: libmozjs185-1.0, libmozjs-24-0 (<< 24.2.0-5.1~)
|
||||
hardware: 64-bit ARMv8 machines
|
||||
|
||||
[arm64_image]
|
||||
|
||||
[relations]
|
||||
gcc-9: gcc-9 <!stage1 !cross !pkg.linux.nokernel>, gcc-9-aarch64-linux-gnu <!stage1 cross !pkg.linux.nokernel>, gcc-arm-linux-gnueabihf <!stage1 !pkg.linux.nokernel>
|
||||
headers%gcc-9: gcc-9
|
||||
|
||||
25
debian/config/armel/config.marvell
vendored
25
debian/config/armel/config.marvell
vendored
@@ -300,25 +300,13 @@ CONFIG_INPUT_TOUCHSCREEN=y
|
||||
## file: drivers/isdn/Kconfig
|
||||
##
|
||||
CONFIG_ISDN=y
|
||||
CONFIG_ISDN_CAPI=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/capi/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_CAPI=m
|
||||
CONFIG_ISDN_CAPI_CAPI20=m
|
||||
CONFIG_ISDN_CAPI_MIDDLEWARE=y
|
||||
CONFIG_ISDN_CAPI_CAPIDRV=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/leds/Kconfig
|
||||
@@ -632,6 +620,17 @@ CONFIG_SPI_ORION=m
|
||||
##
|
||||
# CONFIG_SSB is not set
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/thermal/Kconfig
|
||||
##
|
||||
|
||||
2
debian/config/armel/defines
vendored
2
debian/config/armel/defines
vendored
@@ -13,7 +13,7 @@ uncompressed-image-file: arch/arm/boot/Image
|
||||
install-stem: vmlinuz
|
||||
|
||||
[relations]
|
||||
headers%gcc-8: linux-compiler-gcc-8-arm
|
||||
headers%gcc-9: linux-compiler-gcc-9-arm
|
||||
|
||||
[marvell_description]
|
||||
hardware: Marvell Kirkwood/Orion
|
||||
|
||||
20
debian/config/armhf/config
vendored
20
debian/config/armhf/config
vendored
@@ -591,15 +591,24 @@ CONFIG_BCM2835_MBOX=y
|
||||
## file: drivers/media/Kconfig
|
||||
##
|
||||
CONFIG_MEDIA_SUPPORT=y
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
CONFIG_VIDEO_V4L2_SUBDEV_API=y
|
||||
|
||||
##
|
||||
## file: drivers/media/mc/Kconfig
|
||||
##
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
|
||||
##
|
||||
## file: drivers/media/platform/Kconfig
|
||||
##
|
||||
CONFIG_VIDEO_OMAP3=m
|
||||
CONFIG_VIDEO_TI_VPE=m
|
||||
|
||||
##
|
||||
## file: drivers/media/platform/marvell-ccic/Kconfig
|
||||
##
|
||||
CONFIG_VIDEO_MMP_CAMERA=m
|
||||
|
||||
##
|
||||
## file: drivers/media/platform/omap/Kconfig
|
||||
##
|
||||
@@ -875,7 +884,7 @@ CONFIG_SKFP=m
|
||||
CONFIG_MDIO_SUN4I=y
|
||||
|
||||
##
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/Kconfig
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/brcmfmac/Kconfig
|
||||
##
|
||||
CONFIG_BRCMFMAC=m
|
||||
CONFIG_BRCMFMAC_SDIO=y
|
||||
@@ -994,6 +1003,12 @@ CONFIG_PINCTRL_WM8850=y
|
||||
##
|
||||
CONFIG_CROS_EC_SPI=m
|
||||
|
||||
##
|
||||
## file: drivers/platform/olpc/Kconfig
|
||||
##
|
||||
CONFIG_OLPC_XO175=y
|
||||
CONFIG_OLPC_XO175_EC=m
|
||||
|
||||
##
|
||||
## file: drivers/power/avs/Kconfig
|
||||
##
|
||||
@@ -1014,6 +1029,7 @@ CONFIG_POWER_RESET_SYSCON_POWEROFF=y
|
||||
##
|
||||
## file: drivers/power/supply/Kconfig
|
||||
##
|
||||
CONFIG_BATTERY_OLPC=m
|
||||
CONFIG_BATTERY_SBS=m
|
||||
CONFIG_BATTERY_BQ27XXX=m
|
||||
CONFIG_CHARGER_AXP20X=m
|
||||
|
||||
2
debian/config/armhf/defines
vendored
2
debian/config/armhf/defines
vendored
@@ -12,7 +12,7 @@ vdso: true
|
||||
install-stem: vmlinuz
|
||||
|
||||
[relations]
|
||||
headers%gcc-8: linux-compiler-gcc-8-arm
|
||||
headers%gcc-9: linux-compiler-gcc-9-arm
|
||||
|
||||
[armmp_description]
|
||||
hardware: ARMv7 multiplatform compatible SoCs
|
||||
|
||||
69
debian/config/config
vendored
69
debian/config/config
vendored
@@ -34,6 +34,7 @@ CONFIG_MQ_IOSCHED_DEADLINE=y
|
||||
CONFIG_MQ_IOSCHED_KYBER=m
|
||||
CONFIG_IOSCHED_BFQ=m
|
||||
CONFIG_BFQ_GROUP_IOSCHED=y
|
||||
# CONFIG_BFQ_CGROUP_DEBUG is not set
|
||||
|
||||
##
|
||||
## file: block/partitions/Kconfig
|
||||
@@ -80,7 +81,6 @@ CONFIG_CRYPTO_FIPS=y
|
||||
CONFIG_CRYPTO_MANAGER=y
|
||||
CONFIG_CRYPTO_USER=m
|
||||
# CONFIG_CRYPTO_MANAGER_DISABLE_TESTS is not set
|
||||
CONFIG_CRYPTO_GF128MUL=m
|
||||
CONFIG_CRYPTO_NULL=m
|
||||
CONFIG_CRYPTO_PCRYPT=m
|
||||
# CONFIG_CRYPTO_CRYPTD is not set
|
||||
@@ -564,6 +564,7 @@ CONFIG_EDAC_LEGACY_SYSFS=y
|
||||
## file: drivers/extcon/Kconfig
|
||||
##
|
||||
# CONFIG_EXTCON is not set
|
||||
# CONFIG_EXTCON_FSA9480 is not set
|
||||
|
||||
##
|
||||
## file: drivers/firewire/Kconfig
|
||||
@@ -601,11 +602,6 @@ CONFIG_GOOGLE_FIRMWARE=y
|
||||
CONFIG_GOOGLE_COREBOOT_TABLE=m
|
||||
CONFIG_GOOGLE_MEMCONSOLE_COREBOOT=m
|
||||
|
||||
##
|
||||
## file: drivers/fmc/Kconfig
|
||||
##
|
||||
# CONFIG_FMC is not set
|
||||
|
||||
##
|
||||
## file: drivers/fpga/Kconfig
|
||||
##
|
||||
@@ -1452,12 +1448,6 @@ CONFIG_MLX5_INFINIBAND=m
|
||||
CONFIG_INFINIBAND_MTHCA=m
|
||||
CONFIG_INFINIBAND_MTHCA_DEBUG=y
|
||||
|
||||
##
|
||||
## file: drivers/infiniband/hw/nes/Kconfig
|
||||
##
|
||||
CONFIG_INFINIBAND_NES=m
|
||||
# CONFIG_INFINIBAND_NES_DEBUG is not set
|
||||
|
||||
##
|
||||
## file: drivers/infiniband/hw/ocrdma/Kconfig
|
||||
##
|
||||
@@ -1795,23 +1785,12 @@ CONFIG_IOMMU_SUPPORT=y
|
||||
## file: drivers/isdn/Kconfig
|
||||
##
|
||||
# CONFIG_ISDN is not set
|
||||
# CONFIG_ISDN_I4L is not set
|
||||
|
||||
##
|
||||
## file: drivers/isdn/capi/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_TRACE=y
|
||||
|
||||
##
|
||||
## file: drivers/isdn/gigaset/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_DRV_GIGASET=m
|
||||
CONFIG_GIGASET_CAPI=y
|
||||
CONFIG_GIGASET_BASE=m
|
||||
CONFIG_GIGASET_M105=m
|
||||
CONFIG_GIGASET_M101=m
|
||||
# CONFIG_GIGASET_DEBUG is not set
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/mISDN/Kconfig
|
||||
##
|
||||
@@ -1825,12 +1804,6 @@ CONFIG_MISDN_W6692=m
|
||||
#. Binds a generic PCI bridge
|
||||
# CONFIG_MISDN_NETJET is not set
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hysdn/Kconfig
|
||||
##
|
||||
CONFIG_HYSDN=m
|
||||
CONFIG_HYSDN_CAPI=y
|
||||
|
||||
##
|
||||
## file: drivers/isdn/mISDN/Kconfig
|
||||
##
|
||||
@@ -1967,8 +1940,6 @@ CONFIG_MEDIA_DIGITAL_TV_SUPPORT=y
|
||||
CONFIG_MEDIA_RADIO_SUPPORT=y
|
||||
CONFIG_MEDIA_SDR_SUPPORT=y
|
||||
CONFIG_MEDIA_CEC_SUPPORT=y
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
# CONFIG_MEDIA_CONTROLLER_DVB is not set
|
||||
# CONFIG_VIDEO_V4L2_SUBDEV_API is not set
|
||||
# CONFIG_DVB_MMAP is not set
|
||||
CONFIG_DVB_NET=y
|
||||
@@ -2081,6 +2052,12 @@ CONFIG_VIDEO_UPD64083=m
|
||||
##
|
||||
CONFIG_VIDEO_CX25840=m
|
||||
|
||||
##
|
||||
## file: drivers/media/mc/Kconfig
|
||||
##
|
||||
CONFIG_MEDIA_CONTROLLER=y
|
||||
# CONFIG_MEDIA_CONTROLLER_DVB is not set
|
||||
|
||||
##
|
||||
## file: drivers/media/mmc/siano/Kconfig
|
||||
##
|
||||
@@ -2806,7 +2783,6 @@ CONFIG_SENSORS_BH1770=m
|
||||
CONFIG_SENSORS_APDS990X=m
|
||||
CONFIG_HMC6352=m
|
||||
CONFIG_DS1682=m
|
||||
# CONFIG_USB_SWITCH_FSA9480 is not set
|
||||
# CONFIG_LATTICE_ECP3_CONFIG is not set
|
||||
# CONFIG_SRAM is not set
|
||||
# CONFIG_PCI_ENDPOINT_TEST is not set
|
||||
@@ -3935,12 +3911,16 @@ CONFIG_B43LEGACY_DMA_AND_PIO_MODE=y
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/Kconfig
|
||||
##
|
||||
CONFIG_BRCMSMAC=m
|
||||
# CONFIG_BRCM_TRACING is not set
|
||||
# CONFIG_BRCMDBG is not set
|
||||
|
||||
##
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/brcmfmac/Kconfig
|
||||
##
|
||||
CONFIG_BRCMFMAC=m
|
||||
# CONFIG_BRCMFMAC_SDIO is not set
|
||||
CONFIG_BRCMFMAC_USB=y
|
||||
CONFIG_BRCMFMAC_PCIE=y
|
||||
# CONFIG_BRCM_TRACING is not set
|
||||
# CONFIG_BRCMDBG is not set
|
||||
|
||||
##
|
||||
## file: drivers/net/wireless/cisco/Kconfig
|
||||
@@ -4598,7 +4578,6 @@ CONFIG_SCSI=m
|
||||
# CONFIG_SCSI_PROC_FS is not set
|
||||
CONFIG_BLK_DEV_SD=m
|
||||
CONFIG_CHR_DEV_ST=m
|
||||
CONFIG_CHR_DEV_OSST=m
|
||||
CONFIG_BLK_DEV_SR=m
|
||||
CONFIG_BLK_DEV_SR_VENDOR=y
|
||||
CONFIG_CHR_DEV_SG=m
|
||||
@@ -4927,6 +4906,22 @@ CONFIG_ASHMEM=m
|
||||
##
|
||||
# CONFIG_AD2S1210 is not set
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/gigaset/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_DRV_GIGASET=m
|
||||
CONFIG_GIGASET_CAPI=y
|
||||
CONFIG_GIGASET_BASE=m
|
||||
CONFIG_GIGASET_M105=m
|
||||
CONFIG_GIGASET_M101=m
|
||||
# CONFIG_GIGASET_DEBUG is not set
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/hysdn/Kconfig
|
||||
##
|
||||
CONFIG_HYSDN=m
|
||||
CONFIG_HYSDN_CAPI=y
|
||||
|
||||
##
|
||||
## file: drivers/staging/media/Kconfig
|
||||
##
|
||||
@@ -5781,7 +5776,6 @@ CONFIG_CIFS_WEAK_PW_HASH=y
|
||||
CONFIG_CIFS_UPCALL=y
|
||||
CONFIG_CIFS_XATTR=y
|
||||
CONFIG_CIFS_POSIX=y
|
||||
CONFIG_CIFS_ACL=y
|
||||
CONFIG_CIFS_DEBUG=y
|
||||
# CONFIG_CIFS_DEBUG2 is not set
|
||||
CONFIG_CIFS_DFS_UPCALL=y
|
||||
@@ -6247,7 +6241,6 @@ CONFIG_MEMCG=y
|
||||
CONFIG_MEMCG_SWAP=y
|
||||
# CONFIG_MEMCG_SWAP_ENABLED is not set
|
||||
CONFIG_BLK_CGROUP=y
|
||||
# CONFIG_DEBUG_BLK_CGROUP is not set
|
||||
CONFIG_CGROUP_SCHED=y
|
||||
CONFIG_FAIR_GROUP_SCHED=y
|
||||
CONFIG_CFS_BANDWIDTH=y
|
||||
@@ -6471,7 +6464,6 @@ CONFIG_LIBCRC32C=m
|
||||
# CONFIG_CRC8 is not set
|
||||
# CONFIG_RANDOM32_SELFTEST is not set
|
||||
# CONFIG_GLOB_SELFTEST is not set
|
||||
# CONFIG_DDR is not set
|
||||
|
||||
##
|
||||
## file: lib/Kconfig.debug
|
||||
@@ -7453,7 +7445,6 @@ CONFIG_NET_ACT_TUNNEL_KEY=m
|
||||
CONFIG_NET_IFE_SKBMARK=m
|
||||
CONFIG_NET_IFE_SKBPRIO=m
|
||||
CONFIG_NET_IFE_SKBTCINDEX=m
|
||||
CONFIG_NET_CLS_IND=y
|
||||
|
||||
##
|
||||
## file: net/sctp/Kconfig
|
||||
|
||||
9
debian/config/defines
vendored
9
debian/config/defines
vendored
@@ -1,5 +1,5 @@
|
||||
[abi]
|
||||
abiname: 3
|
||||
abiname: trunk
|
||||
ignore-changes:
|
||||
__cpuhp_*
|
||||
__xive_vm_h_*
|
||||
@@ -108,7 +108,6 @@ arches:
|
||||
mipsr6
|
||||
mipsr6el
|
||||
powerpc
|
||||
powerpcspe
|
||||
ppc64
|
||||
ppc64el
|
||||
riscv64
|
||||
@@ -119,7 +118,7 @@ arches:
|
||||
sparc
|
||||
sparc64
|
||||
x32
|
||||
compiler: gcc-8
|
||||
compiler: gcc-9
|
||||
featuresets:
|
||||
none
|
||||
rt
|
||||
@@ -130,7 +129,7 @@ debug-info: true
|
||||
signed-code: false
|
||||
|
||||
[featureset-rt_base]
|
||||
enabled: true
|
||||
enabled: false
|
||||
|
||||
[description]
|
||||
part-long-up: This kernel is not suitable for SMP (multi-processor,
|
||||
@@ -142,7 +141,7 @@ recommends: apparmor
|
||||
|
||||
[relations]
|
||||
# compilers
|
||||
gcc-8: gcc-8 <!stage1 !cross !pkg.linux.nokernel>, gcc-8-@gnu-type-package@ <!stage1 cross !pkg.linux.nokernel>
|
||||
gcc-9: gcc-9 <!stage1 !cross !pkg.linux.nokernel>, gcc-9-@gnu-type-package@ <!stage1 cross !pkg.linux.nokernel>
|
||||
|
||||
# initramfs-generators
|
||||
initramfs-fallback: linux-initramfs-tool
|
||||
|
||||
5
debian/config/hppa/config
vendored
5
debian/config/hppa/config
vendored
@@ -18,6 +18,11 @@ CONFIG_PARISC_PAGE_SIZE_4KB=y
|
||||
##
|
||||
# CONFIG_PARTITION_ADVANCED is not set
|
||||
|
||||
##
|
||||
## file: crypto/Kconfig
|
||||
##
|
||||
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
|
||||
|
||||
##
|
||||
## file: drivers/ata/Kconfig
|
||||
##
|
||||
|
||||
2
debian/config/hppa/defines
vendored
2
debian/config/hppa/defines
vendored
@@ -24,5 +24,5 @@ hardware: 64-bit PA-RISC
|
||||
hardware-long: HP PA-RISC 64-bit systems with support for more than 4 GB RAM
|
||||
|
||||
[relations]
|
||||
gcc-8: gcc-8 <!stage1 !cross !pkg.linux.nokernel>, gcc-8-hppa-linux-gnu <!stage1 cross !pkg.linux.nokernel>, binutils-hppa64-linux-gnu <!stage1 !pkg.linux.nokernel>, gcc-8-hppa64-linux-gnu <!stage1 !pkg.linux.nokernel>
|
||||
gcc-9: gcc-9 <!stage1 !cross !pkg.linux.nokernel>, gcc-9-hppa-linux-gnu <!stage1 cross !pkg.linux.nokernel>, binutils-hppa64-linux-gnu <!stage1 !pkg.linux.nokernel>, gcc-9-hppa64-linux-gnu <!stage1 !pkg.linux.nokernel>
|
||||
|
||||
|
||||
12
debian/config/i386/config
vendored
12
debian/config/i386/config
vendored
@@ -171,12 +171,6 @@ CONFIG_MOUSE_PC110PAD=m
|
||||
##
|
||||
# CONFIG_INTEL_IOMMU is not set
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/avm/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_DRV_AVMB1_B1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1ISA=m
|
||||
|
||||
##
|
||||
## file: drivers/leds/Kconfig
|
||||
##
|
||||
@@ -400,6 +394,12 @@ CONFIG_COMEDI_PCMMIO=m
|
||||
CONFIG_COMEDI_PCMUIO=m
|
||||
CONFIG_COMEDI_MULTIQ3=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/avm/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_DRV_AVMB1_B1ISA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1ISA=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/olpc_dcon/Kconfig
|
||||
##
|
||||
|
||||
3
debian/config/i386/defines
vendored
3
debian/config/i386/defines
vendored
@@ -21,8 +21,7 @@ install-stem: vmlinuz
|
||||
breaks: xserver-xorg-input-vmmouse (<< 1:13.0.99)
|
||||
|
||||
[relations]
|
||||
gcc-8: gcc-8 (>= 8-20180123-1~) <!stage1 !cross !pkg.linux.nokernel>, gcc-8-i686-linux-gnu (>= 8-20180123-1~) <!stage1 cross !pkg.linux.nokernel>
|
||||
headers%gcc-8: linux-compiler-gcc-8-x86
|
||||
headers%gcc-9: linux-compiler-gcc-9-x86
|
||||
|
||||
[686_description]
|
||||
hardware: older PCs
|
||||
|
||||
24
debian/config/ia64/config
vendored
24
debian/config/ia64/config
vendored
@@ -332,25 +332,14 @@ CONFIG_SERIO_RAW=m
|
||||
## file: drivers/isdn/Kconfig
|
||||
##
|
||||
CONFIG_ISDN=y
|
||||
CONFIG_ISDN_CAPI=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/capi/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_CAPI=m
|
||||
CONFIG_ISDN_CAPI_CAPI20=m
|
||||
# CONFIG_ISDN_CAPI_MIDDLEWARE is not set
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/media/radio/Kconfig
|
||||
##
|
||||
@@ -642,6 +631,17 @@ CONFIG_PCMCIA_SYM53C500=m
|
||||
##
|
||||
CONFIG_SGI_IOC3=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/wlan-ng/Kconfig
|
||||
##
|
||||
|
||||
24
debian/config/kernelarch-powerpc/config
vendored
24
debian/config/kernelarch-powerpc/config
vendored
@@ -341,25 +341,14 @@ CONFIG_INPUT_TOUCHSCREEN=y
|
||||
## file: drivers/isdn/Kconfig
|
||||
##
|
||||
CONFIG_ISDN=y
|
||||
CONFIG_ISDN_CAPI=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/capi/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_CAPI=m
|
||||
CONFIG_ISDN_CAPI_CAPI20=m
|
||||
CONFIG_ISDN_CAPI_MIDDLEWARE=y
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/macintosh/Kconfig
|
||||
##
|
||||
@@ -717,6 +706,17 @@ CONFIG_PCMCIA_NINJA_SCSI=m
|
||||
CONFIG_PCMCIA_QLOGIC=m
|
||||
CONFIG_PCMCIA_SYM53C500=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/tty/Kconfig
|
||||
##
|
||||
|
||||
29
debian/config/kernelarch-x86/config
vendored
29
debian/config/kernelarch-x86/config
vendored
@@ -832,32 +832,22 @@ CONFIG_TOUCHSCREEN_SURFACE3_SPI=m
|
||||
##
|
||||
CONFIG_INTEL_IOMMU=y
|
||||
CONFIG_INTEL_IOMMU_SVM=y
|
||||
## choice: Default state of Intel DMA Remapping Devices
|
||||
CONFIG_INTEL_IOMMU_DEFAULT_ON_INTGPU_OFF=y
|
||||
## end choice
|
||||
CONFIG_IRQ_REMAP=y
|
||||
|
||||
##
|
||||
## file: drivers/isdn/Kconfig
|
||||
##
|
||||
CONFIG_ISDN=y
|
||||
CONFIG_ISDN_CAPI=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/capi/Kconfig
|
||||
##
|
||||
CONFIG_ISDN_CAPI=m
|
||||
CONFIG_ISDN_CAPI_CAPI20=m
|
||||
CONFIG_ISDN_CAPI_MIDDLEWARE=y
|
||||
CONFIG_ISDN_CAPI_CAPIDRV=m
|
||||
|
||||
##
|
||||
## file: drivers/isdn/hardware/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/leds/Kconfig
|
||||
@@ -1265,7 +1255,7 @@ CONFIG_PCI_ATMEL=m
|
||||
CONFIG_PCMCIA_ATMEL=m
|
||||
|
||||
##
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/Kconfig
|
||||
## file: drivers/net/wireless/broadcom/brcm80211/brcmfmac/Kconfig
|
||||
##
|
||||
#. Sony Vaio laptops
|
||||
CONFIG_BRCMFMAC_SDIO=y
|
||||
@@ -1630,6 +1620,17 @@ CONFIG_COMEDI_VMK80XX=m
|
||||
CONFIG_COMEDI_8255_SA=m
|
||||
CONFIG_COMEDI_KCOMEDILIB=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/isdn/avm/Kconfig
|
||||
##
|
||||
CONFIG_CAPI_AVM=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCIV4=y
|
||||
CONFIG_ISDN_DRV_AVMB1_B1PCMCIA=m
|
||||
CONFIG_ISDN_DRV_AVMB1_AVM_CS=m
|
||||
CONFIG_ISDN_DRV_AVMB1_T1PCI=m
|
||||
CONFIG_ISDN_DRV_AVMB1_C4=m
|
||||
|
||||
##
|
||||
## file: drivers/staging/media/Kconfig
|
||||
##
|
||||
|
||||
5
debian/config/m68k/config
vendored
5
debian/config/m68k/config
vendored
@@ -84,6 +84,11 @@ CONFIG_SYSV68_PARTITION=y
|
||||
##
|
||||
# CONFIG_ACCESSIBILITY is not set
|
||||
|
||||
##
|
||||
## file: crypto/Kconfig
|
||||
##
|
||||
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
|
||||
|
||||
##
|
||||
## file: drivers/ata/Kconfig
|
||||
##
|
||||
|
||||
33
debian/config/powerpcspe/config
vendored
33
debian/config/powerpcspe/config
vendored
@@ -1,33 +0,0 @@
|
||||
##
|
||||
## file: arch/powerpc/Kconfig
|
||||
##
|
||||
CONFIG_HIGHMEM=y
|
||||
CONFIG_CMDLINE_BOOL=y
|
||||
CONFIG_CMDLINE="console=ttyS0,115200"
|
||||
|
||||
##
|
||||
## file: arch/powerpc/platforms/85xx/Kconfig
|
||||
##
|
||||
CONFIG_MPC8540_ADS=y
|
||||
CONFIG_MPC8560_ADS=y
|
||||
CONFIG_MPC85xx_CDS=y
|
||||
CONFIG_MPC85xx_MDS=y
|
||||
CONFIG_MPC8536_DS=y
|
||||
CONFIG_MPC85xx_DS=y
|
||||
CONFIG_MPC85xx_RDB=y
|
||||
|
||||
##
|
||||
## file: arch/powerpc/platforms/Kconfig.cputype
|
||||
##
|
||||
## choice: Processor Type
|
||||
CONFIG_PPC_85xx=y
|
||||
## end choice
|
||||
CONFIG_PHYS_64BIT=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=4
|
||||
|
||||
##
|
||||
## file: drivers/gpio/Kconfig
|
||||
##
|
||||
CONFIG_GPIOLIB=y
|
||||
|
||||
15
debian/config/powerpcspe/defines
vendored
15
debian/config/powerpcspe/defines
vendored
@@ -1,15 +0,0 @@
|
||||
[base]
|
||||
flavours:
|
||||
powerpcspe
|
||||
kernel-arch: powerpc
|
||||
|
||||
[build]
|
||||
image-file: vmlinux
|
||||
vdso: true
|
||||
|
||||
[image]
|
||||
suggests: mkvmlinuz
|
||||
install-stem: vmlinux
|
||||
|
||||
[description]
|
||||
hardware: 32-bit PowerPC with SPE (instead of AltiVec) with SMP support
|
||||
28
debian/config/riscv64/config
vendored
28
debian/config/riscv64/config
vendored
@@ -3,17 +3,16 @@
|
||||
##
|
||||
CONFIG_SMP=y
|
||||
|
||||
##
|
||||
## file: arch/riscv/Kconfig.socs
|
||||
##
|
||||
CONFIG_SOC_SIFIVE=y
|
||||
|
||||
##
|
||||
## file: drivers/ata/Kconfig
|
||||
##
|
||||
CONFIG_SATA_AHCI_PLATFORM=m
|
||||
|
||||
##
|
||||
## file: drivers/clk/sifive/Kconfig
|
||||
##
|
||||
CONFIG_CLK_SIFIVE=y
|
||||
CONFIG_CLK_SIFIVE_FU540_PRCI=y
|
||||
|
||||
##
|
||||
## file: drivers/gpu/drm/Kconfig
|
||||
##
|
||||
@@ -21,9 +20,14 @@ CONFIG_DRM=m
|
||||
CONFIG_DRM_RADEON=m
|
||||
|
||||
##
|
||||
## file: drivers/irqchip/Kconfig
|
||||
## file: drivers/mmc/Kconfig
|
||||
##
|
||||
CONFIG_SIFIVE_PLIC=y
|
||||
CONFIG_MMC=m
|
||||
|
||||
##
|
||||
## file: drivers/mmc/host/Kconfig
|
||||
##
|
||||
CONFIG_MMC_SPI=m
|
||||
|
||||
##
|
||||
## file: drivers/net/ethernet/cadence/Kconfig
|
||||
@@ -40,6 +44,11 @@ CONFIG_PCI=y
|
||||
##
|
||||
CONFIG_PCIE_XILINX=y
|
||||
|
||||
##
|
||||
## file: drivers/spi/Kconfig
|
||||
##
|
||||
CONFIG_SPI_SIFIVE=m
|
||||
|
||||
##
|
||||
## file: drivers/tty/hvc/Kconfig
|
||||
##
|
||||
@@ -48,8 +57,7 @@ CONFIG_HVC_RISCV_SBI=y
|
||||
##
|
||||
## file: drivers/tty/serial/Kconfig
|
||||
##
|
||||
CONFIG_SERIAL_SIFIVE=y
|
||||
CONFIG_SERIAL_SIFIVE_CONSOLE=y
|
||||
CONFIG_SERIAL_EARLYCON_RISCV_SBI=y
|
||||
|
||||
##
|
||||
## file: drivers/tty/serial/8250/Kconfig
|
||||
|
||||
3
debian/config/s390x/config
vendored
3
debian/config/s390x/config
vendored
@@ -8,9 +8,7 @@ CONFIG_MARCH_Z900=y
|
||||
# CONFIG_MARCH_Z10 is not set
|
||||
## end choice
|
||||
CONFIG_COMPAT=y
|
||||
CONFIG_SMP=y
|
||||
CONFIG_NR_CPUS=256
|
||||
CONFIG_HOTPLUG_CPU=y
|
||||
CONFIG_SCHED_TOPOLOGY=y
|
||||
CONFIG_RELOCATABLE=y
|
||||
CONFIG_RANDOMIZE_BASE=y
|
||||
@@ -134,7 +132,6 @@ CONFIG_SCLP_TTY=y
|
||||
CONFIG_SCLP_CONSOLE=y
|
||||
CONFIG_SCLP_VT220_TTY=y
|
||||
CONFIG_SCLP_VT220_CONSOLE=y
|
||||
CONFIG_SCLP_ASYNC=m
|
||||
CONFIG_S390_TAPE=m
|
||||
CONFIG_S390_TAPE_34XX=m
|
||||
CONFIG_S390_TAPE_3590=m
|
||||
|
||||
2
debian/config/s390x/defines
vendored
2
debian/config/s390x/defines
vendored
@@ -12,7 +12,7 @@ bootloaders: s390-tools
|
||||
install-stem: vmlinuz
|
||||
|
||||
[relations]
|
||||
headers%gcc-8: linux-compiler-gcc-8-s390
|
||||
headers%gcc-9: linux-compiler-gcc-9-s390
|
||||
|
||||
[s390x_build]
|
||||
debug-info: true
|
||||
|
||||
5
debian/config/sh4/config
vendored
5
debian/config/sh4/config
vendored
@@ -18,6 +18,11 @@ CONFIG_CPU_LITTLE_ENDIAN=y
|
||||
CONFIG_SH_FPU=y
|
||||
CONFIG_SH_STORE_QUEUES=y
|
||||
|
||||
##
|
||||
## file: crypto/Kconfig
|
||||
##
|
||||
CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
|
||||
|
||||
##
|
||||
## file: arch/sh/drivers/Kconfig
|
||||
##
|
||||
|
||||
3
debian/copyright
vendored
3
debian/copyright
vendored
@@ -2,7 +2,7 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
|
||||
Upstream-Name: Linux kernel
|
||||
Source: https://www.kernel.org/pub/linux/kernel/
|
||||
Files-Excluded: Documentation/netlabel/draft-ietf-cipso-ipsecurity-01.txt
|
||||
arch/powerpc/sysdev/micropatch.c
|
||||
arch/powerpc/platforms/8xx/micropatch.c
|
||||
drivers/media/usb/dvb-usb/af9005-script.h
|
||||
drivers/media/i2c/vs6624.c
|
||||
drivers/net/appletalk/cops*
|
||||
@@ -22,6 +22,7 @@ License: GPL-2
|
||||
Files: debian/*
|
||||
Copyright: 1996-2006 Manoj Srivastava
|
||||
2005-2012 Debian kernel team
|
||||
2006-2009 Bastian Blank <waldi@debian.org>
|
||||
License: GPL-2
|
||||
|
||||
Files: debian/rules.d/tools/hv/check-hyperv.c
|
||||
|
||||
1
debian/installer/modules/hppa/scsi-modules
vendored
1
debian/installer/modules/hppa/scsi-modules
vendored
@@ -6,7 +6,6 @@ sym53c8xx_2 ?
|
||||
53c700
|
||||
ch
|
||||
lasi700
|
||||
osst
|
||||
sg
|
||||
st
|
||||
zalon7xx
|
||||
|
||||
1
debian/installer/modules/input-modules
vendored
1
debian/installer/modules/input-modules
vendored
@@ -40,3 +40,4 @@ soc_button_array ?
|
||||
hyperv-keyboard ?
|
||||
virtio_console ?
|
||||
virtio_input ?
|
||||
olpc_apsp ?
|
||||
|
||||
1
debian/installer/modules/riscv64/mmc-core-modules
vendored
Normal file
1
debian/installer/modules/riscv64/mmc-core-modules
vendored
Normal file
@@ -0,0 +1 @@
|
||||
#include <mmc-core-modules>
|
||||
1
debian/installer/modules/riscv64/mmc-modules
vendored
Normal file
1
debian/installer/modules/riscv64/mmc-modules
vendored
Normal file
@@ -0,0 +1 @@
|
||||
#include <mmc-modules>
|
||||
@@ -17,7 +17,6 @@ megaraid_sas
|
||||
mpt3sas
|
||||
mptsas
|
||||
mptspi
|
||||
osst
|
||||
qla1280 ?
|
||||
qla2xxx ?
|
||||
qla4xxx ?
|
||||
|
||||
2
debian/installer/package-list
vendored
2
debian/installer/package-list
vendored
@@ -37,7 +37,7 @@ Description: NIC drivers
|
||||
for the kernel.
|
||||
|
||||
Package: nic-wireless-modules
|
||||
Depends: kernel-image, nic-shared-modules, usb-modules, mmc-core-modules, pcmcia-modules, crc-modules, rfkill-modules
|
||||
Depends: kernel-image, nic-shared-modules, usb-modules, mmc-core-modules, pcmcia-modules, crc-modules, rfkill-modules, crypto-modules
|
||||
Priority: standard
|
||||
Description: Wireless NIC drivers
|
||||
This package contains wireless NIC drivers for the kernel.
|
||||
|
||||
48
debian/linux-image.NEWS
vendored
Normal file
48
debian/linux-image.NEWS
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
linux-latest (86) unstable; urgency=medium
|
||||
|
||||
* From Linux 4.13.10-1, AppArmor is enabled by default. This allows
|
||||
defining a "profile" for each installed program that can mitigate
|
||||
security vulnerabilities in it. However, an incorrect profile might
|
||||
disable some functionality of the program.
|
||||
|
||||
In case you suspect that an AppArmor profile is incorrect, see
|
||||
<https://lists.debian.org/debian-devel/2017/11/msg00178.html> and
|
||||
consider reporting a bug in the package providing the profile. The
|
||||
profile may be part of the program's package or apparmor-profiles.
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Thu, 30 Nov 2017 20:08:25 +0000
|
||||
|
||||
linux-latest (81) unstable; urgency=medium
|
||||
|
||||
* From Linux 4.10, the old 'virtual syscall' interface on 64-bit PCs
|
||||
(amd64) is disabled. This breaks chroot environments and containers
|
||||
that use (e)glibc 2.13 and earlier, including those based on Debian 7
|
||||
or RHEL/CentOS 6. To re-enable it, set the kernel parameter:
|
||||
vsyscall=emulate
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Fri, 30 Jun 2017 23:50:03 +0100
|
||||
|
||||
linux-latest (76) unstable; urgency=medium
|
||||
|
||||
* From Linux 4.8, several changes have been made in the kernel
|
||||
configuration to 'harden' the system, i.e. to mitigate security bugs.
|
||||
Some changes may cause legitimate applications to fail, and can be
|
||||
reverted by run-time configuration:
|
||||
- On most architectures, the /dev/mem device can no longer be used to
|
||||
access devices that also have a kernel driver. This breaks dosemu
|
||||
and some old user-space graphics drivers. To allow this, set the
|
||||
kernel parameter: iomem=relaxed
|
||||
- The kernel log is no longer readable by unprivileged users. To
|
||||
allow this, set the sysctl: kernel.dmesg_restrict=0
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Oct 2016 02:05:32 +0100
|
||||
|
||||
linux-latest (75) unstable; urgency=medium
|
||||
|
||||
* From Linux 4.7, the iptables connection tracking system will no longer
|
||||
automatically load helper modules. If your firewall configuration
|
||||
depends on connection tracking helpers, you should explicitly load the
|
||||
required modules. For more information, see
|
||||
<https://home.regit.org/netfilter-en/secure-use-of-helpers/>.
|
||||
|
||||
-- Ben Hutchings <ben@decadent.org.uk> Sat, 29 Oct 2016 01:53:18 +0100
|
||||
105
debian/patches/bugfix/all/RDMA-cxgb4-Do-not-dma-memory-off-of-the-stack.patch
vendored
Normal file
105
debian/patches/bugfix/all/RDMA-cxgb4-Do-not-dma-memory-off-of-the-stack.patch
vendored
Normal file
@@ -0,0 +1,105 @@
|
||||
From: Greg KH <gregkh@linuxfoundation.org>
|
||||
Date: Tue, 1 Oct 2019 18:56:11 +0200
|
||||
Subject: RDMA/cxgb4: Do not dma memory off of the stack
|
||||
Origin: https://git.kernel.org/linus/3840c5b78803b2b6cc1ff820100a74a092c40cbb
|
||||
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2019-17075
|
||||
|
||||
Nicolas pointed out that the cxgb4 driver is doing dma off of the stack,
|
||||
which is generally considered a very bad thing. On some architectures it
|
||||
could be a security problem, but odds are none of them actually run this
|
||||
driver, so it's just a "normal" bug.
|
||||
|
||||
Resolve this by allocating the memory for a message off of the heap
|
||||
instead of the stack. kmalloc() always will give us a proper memory
|
||||
location that DMA will work correctly from.
|
||||
|
||||
Link: https://lore.kernel.org/r/20191001165611.GA3542072@kroah.com
|
||||
Reported-by: Nicolas Waisman <nico@semmle.com>
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Tested-by: Potnuri Bharat Teja <bharat@chelsio.com>
|
||||
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
|
||||
---
|
||||
drivers/infiniband/hw/cxgb4/mem.c | 28 +++++++++++++++++-----------
|
||||
1 file changed, 17 insertions(+), 11 deletions(-)
|
||||
|
||||
diff --git a/drivers/infiniband/hw/cxgb4/mem.c b/drivers/infiniband/hw/cxgb4/mem.c
|
||||
index aa772ee0706f..35c284af574d 100644
|
||||
--- a/drivers/infiniband/hw/cxgb4/mem.c
|
||||
+++ b/drivers/infiniband/hw/cxgb4/mem.c
|
||||
@@ -275,13 +275,17 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
|
||||
struct sk_buff *skb, struct c4iw_wr_wait *wr_waitp)
|
||||
{
|
||||
int err;
|
||||
- struct fw_ri_tpte tpt;
|
||||
+ struct fw_ri_tpte *tpt;
|
||||
u32 stag_idx;
|
||||
static atomic_t key;
|
||||
|
||||
if (c4iw_fatal_error(rdev))
|
||||
return -EIO;
|
||||
|
||||
+ tpt = kmalloc(sizeof(*tpt), GFP_KERNEL);
|
||||
+ if (!tpt)
|
||||
+ return -ENOMEM;
|
||||
+
|
||||
stag_state = stag_state > 0;
|
||||
stag_idx = (*stag) >> 8;
|
||||
|
||||
@@ -291,6 +295,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
|
||||
mutex_lock(&rdev->stats.lock);
|
||||
rdev->stats.stag.fail++;
|
||||
mutex_unlock(&rdev->stats.lock);
|
||||
+ kfree(tpt);
|
||||
return -ENOMEM;
|
||||
}
|
||||
mutex_lock(&rdev->stats.lock);
|
||||
@@ -305,28 +310,28 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
|
||||
|
||||
/* write TPT entry */
|
||||
if (reset_tpt_entry)
|
||||
- memset(&tpt, 0, sizeof(tpt));
|
||||
+ memset(tpt, 0, sizeof(*tpt));
|
||||
else {
|
||||
- tpt.valid_to_pdid = cpu_to_be32(FW_RI_TPTE_VALID_F |
|
||||
+ tpt->valid_to_pdid = cpu_to_be32(FW_RI_TPTE_VALID_F |
|
||||
FW_RI_TPTE_STAGKEY_V((*stag & FW_RI_TPTE_STAGKEY_M)) |
|
||||
FW_RI_TPTE_STAGSTATE_V(stag_state) |
|
||||
FW_RI_TPTE_STAGTYPE_V(type) | FW_RI_TPTE_PDID_V(pdid));
|
||||
- tpt.locread_to_qpid = cpu_to_be32(FW_RI_TPTE_PERM_V(perm) |
|
||||
+ tpt->locread_to_qpid = cpu_to_be32(FW_RI_TPTE_PERM_V(perm) |
|
||||
(bind_enabled ? FW_RI_TPTE_MWBINDEN_F : 0) |
|
||||
FW_RI_TPTE_ADDRTYPE_V((zbva ? FW_RI_ZERO_BASED_TO :
|
||||
FW_RI_VA_BASED_TO))|
|
||||
FW_RI_TPTE_PS_V(page_size));
|
||||
- tpt.nosnoop_pbladdr = !pbl_size ? 0 : cpu_to_be32(
|
||||
+ tpt->nosnoop_pbladdr = !pbl_size ? 0 : cpu_to_be32(
|
||||
FW_RI_TPTE_PBLADDR_V(PBL_OFF(rdev, pbl_addr)>>3));
|
||||
- tpt.len_lo = cpu_to_be32((u32)(len & 0xffffffffUL));
|
||||
- tpt.va_hi = cpu_to_be32((u32)(to >> 32));
|
||||
- tpt.va_lo_fbo = cpu_to_be32((u32)(to & 0xffffffffUL));
|
||||
- tpt.dca_mwbcnt_pstag = cpu_to_be32(0);
|
||||
- tpt.len_hi = cpu_to_be32((u32)(len >> 32));
|
||||
+ tpt->len_lo = cpu_to_be32((u32)(len & 0xffffffffUL));
|
||||
+ tpt->va_hi = cpu_to_be32((u32)(to >> 32));
|
||||
+ tpt->va_lo_fbo = cpu_to_be32((u32)(to & 0xffffffffUL));
|
||||
+ tpt->dca_mwbcnt_pstag = cpu_to_be32(0);
|
||||
+ tpt->len_hi = cpu_to_be32((u32)(len >> 32));
|
||||
}
|
||||
err = write_adapter_mem(rdev, stag_idx +
|
||||
(rdev->lldi.vr->stag.start >> 5),
|
||||
- sizeof(tpt), &tpt, skb, wr_waitp);
|
||||
+ sizeof(*tpt), tpt, skb, wr_waitp);
|
||||
|
||||
if (reset_tpt_entry) {
|
||||
c4iw_put_resource(&rdev->resource.tpt_table, stag_idx);
|
||||
@@ -334,6 +339,7 @@ static int write_tpt_entry(struct c4iw_rdev *rdev, u32 reset_tpt_entry,
|
||||
rdev->stats.stag.cur -= 32;
|
||||
mutex_unlock(&rdev->stats.lock);
|
||||
}
|
||||
+ kfree(tpt);
|
||||
return err;
|
||||
}
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
||||
73
debian/patches/bugfix/all/ath6kl-fix-a-NULL-ptr-deref-bug-in-ath6kl_usb_alloc_.patch
vendored
Normal file
73
debian/patches/bugfix/all/ath6kl-fix-a-NULL-ptr-deref-bug-in-ath6kl_usb_alloc_.patch
vendored
Normal file
@@ -0,0 +1,73 @@
|
||||
From: Hui Peng <benquike@gmail.com>
|
||||
Date: Sat, 3 Aug 2019 20:29:04 -0400
|
||||
Subject: ath6kl: fix a NULL-ptr-deref bug in ath6kl_usb_alloc_urb_from_pipe()
|
||||
Origin: https://git.kernel.org/linus/39d170b3cb62ba98567f5c4f40c27b5864b304e5
|
||||
Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2019-15098
|
||||
|
||||
The `ar_usb` field of `ath6kl_usb_pipe_usb_pipe` objects
|
||||
are initialized to point to the containing `ath6kl_usb` object
|
||||
according to endpoint descriptors read from the device side, as shown
|
||||
below in `ath6kl_usb_setup_pipe_resources`:
|
||||
|
||||
for (i = 0; i < iface_desc->desc.bNumEndpoints; ++i) {
|
||||
endpoint = &iface_desc->endpoint[i].desc;
|
||||
|
||||
// get the address from endpoint descriptor
|
||||
pipe_num = ath6kl_usb_get_logical_pipe_num(ar_usb,
|
||||
endpoint->bEndpointAddress,
|
||||
&urbcount);
|
||||
......
|
||||
// select the pipe object
|
||||
pipe = &ar_usb->pipes[pipe_num];
|
||||
|
||||
// initialize the ar_usb field
|
||||
pipe->ar_usb = ar_usb;
|
||||
}
|
||||
|
||||
The driver assumes that the addresses reported in endpoint
|
||||
descriptors from device side to be complete. If a device is
|
||||
malicious and does not report complete addresses, it may trigger
|
||||
NULL-ptr-deref `ath6kl_usb_alloc_urb_from_pipe` and
|
||||
`ath6kl_usb_free_urb_to_pipe`.
|
||||
|
||||
This patch fixes the bug by preventing potential NULL-ptr-deref
|
||||
(CVE-2019-15098).
|
||||
|
||||
Signed-off-by: Hui Peng <benquike@gmail.com>
|
||||
Reported-by: Hui Peng <benquike@gmail.com>
|
||||
Reported-by: Mathias Payer <mathias.payer@nebelwelt.net>
|
||||
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
drivers/net/wireless/ath/ath6kl/usb.c | 8 ++++++++
|
||||
1 file changed, 8 insertions(+)
|
||||
|
||||
diff --git a/drivers/net/wireless/ath/ath6kl/usb.c b/drivers/net/wireless/ath/ath6kl/usb.c
|
||||
index 4defb7a0330f..53b66e9434c9 100644
|
||||
--- a/drivers/net/wireless/ath/ath6kl/usb.c
|
||||
+++ b/drivers/net/wireless/ath/ath6kl/usb.c
|
||||
@@ -132,6 +132,10 @@ ath6kl_usb_alloc_urb_from_pipe(struct ath6kl_usb_pipe *pipe)
|
||||
struct ath6kl_urb_context *urb_context = NULL;
|
||||
unsigned long flags;
|
||||
|
||||
+ /* bail if this pipe is not initialized */
|
||||
+ if (!pipe->ar_usb)
|
||||
+ return NULL;
|
||||
+
|
||||
spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags);
|
||||
if (!list_empty(&pipe->urb_list_head)) {
|
||||
urb_context =
|
||||
@@ -150,6 +154,10 @@ static void ath6kl_usb_free_urb_to_pipe(struct ath6kl_usb_pipe *pipe,
|
||||
{
|
||||
unsigned long flags;
|
||||
|
||||
+ /* bail if this pipe is not initialized */
|
||||
+ if (!pipe->ar_usb)
|
||||
+ return;
|
||||
+
|
||||
spin_lock_irqsave(&pipe->ar_usb->cs_lock, flags);
|
||||
pipe->urb_cnt++;
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,11 +25,9 @@ format to detect missing firmware.
|
||||
drivers/base/firmware_loader/main.c | 15 ++++++++-------
|
||||
2 files changed, 9 insertions(+), 8 deletions(-)
|
||||
|
||||
diff --git a/drivers/base/firmware_loader/fallback.c b/drivers/base/firmware_loader/fallback.c
|
||||
index b5c865fe263b..366d37011cd8 100644
|
||||
--- a/drivers/base/firmware_loader/fallback.c
|
||||
+++ b/drivers/base/firmware_loader/fallback.c
|
||||
@@ -604,7 +604,7 @@ static int fw_load_from_user_helper(struct firmware *firmware,
|
||||
@@ -557,7 +557,7 @@ static int fw_load_from_user_helper(stru
|
||||
if (opt_flags & FW_OPT_NOWAIT) {
|
||||
timeout = usermodehelper_read_lock_wait(timeout);
|
||||
if (!timeout) {
|
||||
@@ -38,12 +36,10 @@ index b5c865fe263b..366d37011cd8 100644
|
||||
name);
|
||||
return -EBUSY;
|
||||
}
|
||||
diff --git a/drivers/base/firmware_loader/main.c b/drivers/base/firmware_loader/main.c
|
||||
index 7eaaf5ee5ba6..ad5a6f813175 100644
|
||||
--- a/drivers/base/firmware_loader/main.c
|
||||
+++ b/drivers/base/firmware_loader/main.c
|
||||
@@ -328,21 +328,22 @@ fw_get_filesystem_firmware(struct device *device, struct fw_priv *fw_priv)
|
||||
rc = kernel_read_file_from_path(path, &fw_priv->data, &size,
|
||||
@@ -496,14 +496,12 @@ fw_get_filesystem_firmware(struct device
|
||||
rc = kernel_read_file_from_path(path, &buffer, &size,
|
||||
msize, id);
|
||||
if (rc) {
|
||||
- if (rc != -ENOENT)
|
||||
@@ -56,12 +52,21 @@ index 7eaaf5ee5ba6..ad5a6f813175 100644
|
||||
+ path, rc);
|
||||
continue;
|
||||
}
|
||||
- dev_dbg(device, "direct-loading %s\n", fw_priv->fw_name);
|
||||
+ dev_info(device, "firmware: direct-loading firmware %s\n",
|
||||
+ fw_priv->fw_name);
|
||||
fw_priv->size = size;
|
||||
fw_state_done(fw_priv);
|
||||
break;
|
||||
if (decompress) {
|
||||
dev_dbg(device, "f/w decompressing %s\n",
|
||||
fw_priv->fw_name);
|
||||
@@ -516,8 +514,6 @@ fw_get_filesystem_firmware(struct device
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
- dev_dbg(device, "direct-loading %s\n",
|
||||
- fw_priv->fw_name);
|
||||
if (!fw_priv->data)
|
||||
fw_priv->data = buffer;
|
||||
fw_priv->size = size;
|
||||
@@ -527,6 +523,10 @@ fw_get_filesystem_firmware(struct device
|
||||
}
|
||||
__putname(path);
|
||||
|
||||
@@ -72,6 +77,3 @@ index 7eaaf5ee5ba6..ad5a6f813175 100644
|
||||
return rc;
|
||||
}
|
||||
|
||||
--
|
||||
2.20.1
|
||||
|
||||
|
||||
@@ -12,21 +12,22 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
--- a/fs/btrfs/super.c
|
||||
+++ b/fs/btrfs/super.c
|
||||
@@ -2500,3 +2500,4 @@ late_initcall(init_btrfs_fs);
|
||||
@@ -2463,4 +2463,4 @@ late_initcall(init_btrfs_fs);
|
||||
module_exit(exit_btrfs_fs)
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
-MODULE_SOFTDEP("pre: crc32c");
|
||||
+MODULE_SOFTDEP("pre: crypto-crc32c");
|
||||
--- a/fs/crypto/crypto.c
|
||||
+++ b/fs/crypto/crypto.c
|
||||
@@ -468,3 +468,4 @@ static void __exit fscrypt_exit(void)
|
||||
@@ -529,3 +529,4 @@ static void __exit fscrypt_exit(void)
|
||||
module_exit(fscrypt_exit);
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
+MODULE_SOFTDEP("pre: crypto-aes crypto-ecb");
|
||||
--- a/fs/ext4/super.c
|
||||
+++ b/fs/ext4/super.c
|
||||
@@ -5880,6 +5880,6 @@ static void __exit ext4_exit_fs(void)
|
||||
@@ -6160,6 +6160,6 @@ static void __exit ext4_exit_fs(void)
|
||||
MODULE_AUTHOR("Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others");
|
||||
MODULE_DESCRIPTION("Fourth Extended Filesystem");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -36,7 +37,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
module_exit(ext4_exit_fs)
|
||||
--- a/fs/f2fs/super.c
|
||||
+++ b/fs/f2fs/super.c
|
||||
@@ -3134,4 +3134,5 @@ module_exit(exit_f2fs_fs)
|
||||
@@ -3641,4 +3641,5 @@ module_exit(exit_f2fs_fs)
|
||||
MODULE_AUTHOR("Samsung Electronics's Praesto Team");
|
||||
MODULE_DESCRIPTION("Flash Friendly File System");
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -44,7 +45,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
|
||||
--- a/fs/jbd2/journal.c
|
||||
+++ b/fs/jbd2/journal.c
|
||||
@@ -2726,6 +2726,7 @@ static void __exit journal_exit(void)
|
||||
@@ -2728,6 +2728,7 @@ static void __exit journal_exit(void)
|
||||
}
|
||||
|
||||
MODULE_LICENSE("GPL");
|
||||
@@ -54,7 +55,7 @@ Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
|
||||
--- a/fs/nfsd/nfsctl.c
|
||||
+++ b/fs/nfsd/nfsctl.c
|
||||
@@ -1334,5 +1334,8 @@ static void __exit exit_nfsd(void)
|
||||
@@ -1575,5 +1575,8 @@ static void __exit exit_nfsd(void)
|
||||
|
||||
MODULE_AUTHOR("Olaf Kirch <okir@monad.swb.de>");
|
||||
MODULE_LICENSE("GPL");
|
||||
|
||||
@@ -28,11 +28,9 @@ is missing, except for the pre-R600 case.
|
||||
drivers/gpu/drm/radeon/radeon_drv.c | 30 +++++++++++++++++++++++++
|
||||
2 files changed, 59 insertions(+)
|
||||
|
||||
diff --git a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
||||
index 1e2cc9d68a05..5744014f28ac 100644
|
||||
--- a/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
||||
+++ b/drivers/gpu/drm/amd/amdgpu/amdgpu_drv.c
|
||||
@@ -33,6 +33,8 @@
|
||||
@@ -35,6 +35,8 @@
|
||||
#include <linux/pm_runtime.h>
|
||||
#include <linux/vga_switcheroo.h>
|
||||
#include <drm/drm_probe_helper.h>
|
||||
@@ -41,7 +39,7 @@ index 1e2cc9d68a05..5744014f28ac 100644
|
||||
|
||||
#include "amdgpu.h"
|
||||
#include "amdgpu_irq.h"
|
||||
@@ -929,6 +931,28 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
|
||||
@@ -1012,6 +1014,28 @@ MODULE_DEVICE_TABLE(pci, pciidlist);
|
||||
|
||||
static struct drm_driver kms_driver;
|
||||
|
||||
@@ -70,7 +68,7 @@ index 1e2cc9d68a05..5744014f28ac 100644
|
||||
static int amdgpu_pci_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *ent)
|
||||
{
|
||||
@@ -947,6 +971,11 @@ static int amdgpu_pci_probe(struct pci_dev *pdev,
|
||||
@@ -1030,6 +1054,11 @@ static int amdgpu_pci_probe(struct pci_d
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -82,20 +80,18 @@ index 1e2cc9d68a05..5744014f28ac 100644
|
||||
/* Get rid of things like offb */
|
||||
ret = drm_fb_helper_remove_conflicting_pci_framebuffers(pdev, 0, "amdgpudrmfb");
|
||||
if (ret)
|
||||
diff --git a/drivers/gpu/drm/radeon/radeon_drv.c b/drivers/gpu/drm/radeon/radeon_drv.c
|
||||
index 2e96c886392b..1d54b3e5f489 100644
|
||||
--- a/drivers/gpu/drm/radeon/radeon_drv.c
|
||||
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
|
||||
@@ -44,6 +44,8 @@
|
||||
|
||||
#include <drm/drm_crtc_helper.h>
|
||||
@@ -47,6 +47,8 @@
|
||||
#include <drm/drm_probe_helper.h>
|
||||
#include <drm/drm_vblank.h>
|
||||
#include <drm/radeon_drm.h>
|
||||
+#include <linux/namei.h>
|
||||
+#include <linux/path.h>
|
||||
|
||||
/*
|
||||
* KMS wrapper.
|
||||
@@ -317,6 +319,28 @@ static struct drm_driver kms_driver;
|
||||
#include "radeon_drv.h"
|
||||
|
||||
@@ -322,6 +324,28 @@ static struct drm_driver kms_driver;
|
||||
|
||||
bool radeon_device_is_virtual(void);
|
||||
|
||||
@@ -124,7 +120,7 @@ index 2e96c886392b..1d54b3e5f489 100644
|
||||
static int radeon_pci_probe(struct pci_dev *pdev,
|
||||
const struct pci_device_id *ent)
|
||||
{
|
||||
@@ -325,6 +349,12 @@ static int radeon_pci_probe(struct pci_dev *pdev,
|
||||
@@ -330,6 +354,12 @@ static int radeon_pci_probe(struct pci_d
|
||||
if (vga_switcheroo_client_probe_defer(pdev))
|
||||
return -EPROBE_DEFER;
|
||||
|
||||
|
||||
165
debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch
vendored
Normal file
165
debian/patches/bugfix/all/tools-perf-pmu-events-fix-reproducibility.patch
vendored
Normal file
@@ -0,0 +1,165 @@
|
||||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Sun, 25 Aug 2019 13:49:41 +0100
|
||||
Subject: tools/perf: pmu-events: Fix reproducibility
|
||||
Forwarded: https://lore.kernel.org/lkml/20190825131329.naqzd5kwg7mw5d3f@decadent.org.uk/T/#u
|
||||
|
||||
jevents.c uses nftw() to enumerate files and outputs the corresponding
|
||||
C structs in the order they are found. This makes it sensitive to
|
||||
directory ordering, so that the perf executable is not reproducible.
|
||||
|
||||
To avoid this, store all the files and directories found and then sort
|
||||
them by their (relative) path. (This maintains the parent-first
|
||||
ordering that nftw() promises.) Then apply the existing callbacks to
|
||||
them in the sorted order.
|
||||
|
||||
Don't both storing the stat buffers as we don't need them.
|
||||
|
||||
References: https://tests.reproducible-builds.org/debian/dbdtxt/bullseye/i386/linux_4.19.37-6.diffoscope.txt.gz
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
--- a/tools/perf/pmu-events/jevents.c
|
||||
+++ b/tools/perf/pmu-events/jevents.c
|
||||
@@ -50,6 +50,12 @@
|
||||
#include "json.h"
|
||||
#include "jevents.h"
|
||||
|
||||
+struct found_file {
|
||||
+ const char *fpath;
|
||||
+ int typeflag;
|
||||
+ struct FTW ftwbuf;
|
||||
+};
|
||||
+
|
||||
int verbose;
|
||||
char *prog;
|
||||
|
||||
@@ -865,6 +871,44 @@ static int get_maxfds(void)
|
||||
* nftw() doesn't let us pass an argument to the processing function,
|
||||
* so use a global variables.
|
||||
*/
|
||||
+static struct found_file *found_files;
|
||||
+static size_t n_found_files;
|
||||
+static size_t max_found_files;
|
||||
+
|
||||
+static int add_one_file(const char *fpath, const struct stat *sb,
|
||||
+ int typeflag, struct FTW *ftwbuf)
|
||||
+{
|
||||
+ struct found_file *file;
|
||||
+
|
||||
+ if (ftwbuf->level == 0 || ftwbuf->level > 3)
|
||||
+ return 0;
|
||||
+
|
||||
+ /* Grow array if necessary */
|
||||
+ if (n_found_files >= max_found_files) {
|
||||
+ if (max_found_files == 0)
|
||||
+ max_found_files = 16;
|
||||
+ else
|
||||
+ max_found_files *= 2;
|
||||
+ found_files = realloc(found_files,
|
||||
+ max_found_files * sizeof(*found_files));
|
||||
+ }
|
||||
+
|
||||
+ file = &found_files[n_found_files++];
|
||||
+ file->fpath = strdup(fpath);
|
||||
+ file->typeflag = typeflag;
|
||||
+ file->ftwbuf = *ftwbuf;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int compare_files(const void *left, const void *right)
|
||||
+{
|
||||
+ const struct found_file *left_file = left;
|
||||
+ const struct found_file *right_file = right;
|
||||
+
|
||||
+ return strcmp(left_file->fpath, right_file->fpath);
|
||||
+}
|
||||
+
|
||||
static FILE *eventsfp;
|
||||
static char *mapfile;
|
||||
|
||||
@@ -919,19 +963,19 @@ static int is_json_file(const char *name
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int preprocess_arch_std_files(const char *fpath, const struct stat *sb,
|
||||
+static int preprocess_arch_std_files(const char *fpath,
|
||||
int typeflag, struct FTW *ftwbuf)
|
||||
{
|
||||
int level = ftwbuf->level;
|
||||
int is_file = typeflag == FTW_F;
|
||||
|
||||
if (level == 1 && is_file && is_json_file(fpath))
|
||||
- return json_events(fpath, save_arch_std_events, (void *)sb);
|
||||
+ return json_events(fpath, save_arch_std_events, NULL);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static int process_one_file(const char *fpath, const struct stat *sb,
|
||||
+static int process_one_file(const char *fpath,
|
||||
int typeflag, struct FTW *ftwbuf)
|
||||
{
|
||||
char *tblname, *bname;
|
||||
@@ -956,9 +1000,9 @@ static int process_one_file(const char *
|
||||
} else
|
||||
bname = (char *) fpath + ftwbuf->base;
|
||||
|
||||
- pr_debug("%s %d %7jd %-20s %s\n",
|
||||
+ pr_debug("%s %d %-20s %s\n",
|
||||
is_file ? "f" : is_dir ? "d" : "x",
|
||||
- level, sb->st_size, bname, fpath);
|
||||
+ level, bname, fpath);
|
||||
|
||||
/* base dir or too deep */
|
||||
if (level == 0 || level > 3)
|
||||
@@ -1070,6 +1114,7 @@ int main(int argc, char *argv[])
|
||||
const char *output_file;
|
||||
const char *start_dirname;
|
||||
struct stat stbuf;
|
||||
+ size_t i;
|
||||
|
||||
prog = basename(argv[0]);
|
||||
if (argc < 4) {
|
||||
@@ -1113,8 +1158,26 @@ int main(int argc, char *argv[])
|
||||
*/
|
||||
|
||||
maxfds = get_maxfds();
|
||||
+ rc = nftw(ldirname, add_one_file, maxfds, 0);
|
||||
+ if (rc < 0) {
|
||||
+ /* Make build fail */
|
||||
+ free_arch_std_events();
|
||||
+ return 1;
|
||||
+ } else if (rc) {
|
||||
+ goto empty_map;
|
||||
+ }
|
||||
+
|
||||
+ /* Sort file names to ensure reproduciblity */
|
||||
+ qsort(found_files, n_found_files, sizeof(*found_files), compare_files);
|
||||
+
|
||||
mapfile = NULL;
|
||||
- rc = nftw(ldirname, preprocess_arch_std_files, maxfds, 0);
|
||||
+ for (i = 0; i < n_found_files; i++) {
|
||||
+ rc = preprocess_arch_std_files(found_files[i].fpath,
|
||||
+ found_files[i].typeflag,
|
||||
+ &found_files[i].ftwbuf);
|
||||
+ if (rc)
|
||||
+ break;
|
||||
+ }
|
||||
if (rc && verbose) {
|
||||
pr_info("%s: Error preprocessing arch standard files %s\n",
|
||||
prog, ldirname);
|
||||
@@ -1127,7 +1190,13 @@ int main(int argc, char *argv[])
|
||||
goto empty_map;
|
||||
}
|
||||
|
||||
- rc = nftw(ldirname, process_one_file, maxfds, 0);
|
||||
+ for (i = 0; i < n_found_files; i++) {
|
||||
+ rc = process_one_file(found_files[i].fpath,
|
||||
+ found_files[i].typeflag,
|
||||
+ &found_files[i].ftwbuf);
|
||||
+ if (rc)
|
||||
+ break;
|
||||
+ }
|
||||
if (rc && verbose) {
|
||||
pr_info("%s: Error walking file tree %s\n", prog, ldirname);
|
||||
goto empty_map;
|
||||
@@ -1,42 +0,0 @@
|
||||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Wed, 26 Dec 2018 00:00:40 +0000
|
||||
Subject: powerpc: Fix -mcpu= options for SPE-only compiler
|
||||
Forwarded: https://lists.debian.org/debian-kernel/2018/12/msg00295.html
|
||||
|
||||
GCC for Debian's "powerpcspe" architecture only supports 32-bit
|
||||
SPE targets, and using -mcpu=powerpc or -mcpu=powerpc64 is a fatal
|
||||
error.
|
||||
|
||||
* Change the test for a biarch compiler to pass both the -m32 and -m64
|
||||
options, so that it doesn't catch 32-bit-only compilers
|
||||
* Add an ifdef CONFIG_PPC64 around the 64-bit CPU option definitions
|
||||
|
||||
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
||||
---
|
||||
--- a/arch/powerpc/Makefile
|
||||
+++ b/arch/powerpc/Makefile
|
||||
@@ -12,7 +12,7 @@
|
||||
# Rewritten by Cort Dougan and Paul Mackerras
|
||||
#
|
||||
|
||||
-HAS_BIARCH := $(call cc-option-yn, -m32)
|
||||
+HAS_BIARCH := $(call cc-option-yn, -m32 -m64)
|
||||
|
||||
# Set default 32 bits cross compilers for vdso and boot wrapper
|
||||
CROSS32_COMPILE ?=
|
||||
@@ -166,6 +166,7 @@ CFLAGS-$(CONFIG_PPC32) += $(call cc-opti
|
||||
|
||||
CFLAGS-$(CONFIG_PPC32) += $(call cc-option,-mno-readonly-in-sdata)
|
||||
|
||||
+ifdef CONFIG_PPC64
|
||||
ifdef CONFIG_PPC_BOOK3S_64
|
||||
ifdef CONFIG_CPU_LITTLE_ENDIAN
|
||||
CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=power8
|
||||
@@ -177,6 +178,7 @@ endif
|
||||
else
|
||||
CFLAGS-$(CONFIG_GENERIC_CPU) += -mcpu=powerpc64
|
||||
endif
|
||||
+endif
|
||||
|
||||
ifdef CONFIG_FUNCTION_TRACER
|
||||
CC_FLAGS_FTRACE := -pg
|
||||
@@ -1,30 +0,0 @@
|
||||
From: James Clarke <jrtc27@jrtc27.com>
|
||||
Date: Sun, 18 Feb 2018 15:54:44 +0000
|
||||
Subject: powerpc/lib/Makefile: Don't pull in quad.o for 32-bit kernels
|
||||
Origin: https://people.debian.org/~jrtc27/linux-ppc32/0002-powerpc-lib-Makefile-Don-t-pull-in-quad.o-for-32-bit.patch
|
||||
|
||||
The functions exported by quad.o are only used when guarded by
|
||||
__powerpc64__ and so are unused on 32-bit kernels. Moreover, their
|
||||
implementations make use of instructions which will cause an illegal
|
||||
instruction error on 32-bit processors, and are not accepted by the
|
||||
assembler for SPE processors.
|
||||
|
||||
Fixes: 31bfdb036f12 ("powerpc: Use instruction emulation infrastructure to handle alignment faults")
|
||||
Signed-off-by: James Clarke <jrtc27@jrtc27.com>
|
||||
---
|
||||
arch/powerpc/lib/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
Index: debian-kernel/arch/powerpc/lib/Makefile
|
||||
===================================================================
|
||||
--- debian-kernel.orig/arch/powerpc/lib/Makefile
|
||||
+++ debian-kernel/arch/powerpc/lib/Makefile
|
||||
@@ -49,7 +49,7 @@ obj64-$(CONFIG_KPROBES_SANITY_TEST) += t
|
||||
obj-y += checksum_$(BITS).o checksum_wrappers.o \
|
||||
string_$(BITS).o
|
||||
|
||||
-obj-y += sstep.o ldstfp.o quad.o
|
||||
+obj-y += sstep.o ldstfp.o
|
||||
obj64-y += quad.o
|
||||
|
||||
obj-$(CONFIG_PPC_LIB_RHEAP) += rheap.o
|
||||
@@ -1,35 +0,0 @@
|
||||
From: James Clarke <jrtc27@jrtc27.com>
|
||||
Date: Thu, 7 Dec 2017 20:32:44 +0000
|
||||
Subject: powerpc/lib/sstep: Fix building for powerpcspe
|
||||
Origin: https://people.debian.org/~jrtc27/linux-ppc32/0001-powerpc-lib-sstep-Fix-building-for-powerpcspe.patch
|
||||
|
||||
On powerpcspe, ptesync is not a recognised instruction and so fails to
|
||||
assemble. We don't expect to have to emulate an lwsync or a ptesync on a
|
||||
32-bit kernel, so just ifdef them out, and catch any unexpected barrier
|
||||
types.
|
||||
|
||||
Fixes: 3cdfcbfd32b9 ("powerpc: Change analyse_instr so it doesn't modify *regs")
|
||||
Signed-off-by: James Clarke <jrtc27@jrtc27.com>
|
||||
---
|
||||
arch/powerpc/lib/sstep.c | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
--- a/arch/powerpc/lib/sstep.c
|
||||
+++ b/arch/powerpc/lib/sstep.c
|
||||
@@ -2671,12 +2671,16 @@ void emulate_update_regs(struct pt_regs
|
||||
case BARRIER_EIEIO:
|
||||
eieio();
|
||||
break;
|
||||
+#ifdef __powerpc64__
|
||||
case BARRIER_LWSYNC:
|
||||
asm volatile("lwsync" : : : "memory");
|
||||
break;
|
||||
case BARRIER_PTESYNC:
|
||||
asm volatile("ptesync" : : : "memory");
|
||||
break;
|
||||
+#endif
|
||||
+ default:
|
||||
+ WARN_ON_ONCE(1);
|
||||
}
|
||||
break;
|
||||
|
||||
64
debian/patches/bugfix/riscv64/RISC-V-Clear-load-reservations-while-restoring-hart-.patch
vendored
Normal file
64
debian/patches/bugfix/riscv64/RISC-V-Clear-load-reservations-while-restoring-hart-.patch
vendored
Normal file
@@ -0,0 +1,64 @@
|
||||
From: Palmer Dabbelt <palmer@sifive.com>
|
||||
Date: Tue, 24 Sep 2019 17:15:56 -0700
|
||||
Subject: RISC-V: Clear load reservations while restoring hart contexts
|
||||
Origin: https://git.kernel.org/linus/18856604b3e7090ce42d533995173ee70c24b1c9
|
||||
|
||||
This is almost entirely a comment. The bug is unlikely to manifest on
|
||||
existing hardware because there is a timeout on load reservations, but
|
||||
manifests on QEMU because there is no timeout.
|
||||
|
||||
Signed-off-by: Palmer Dabbelt <palmer@sifive.com>
|
||||
Reviewed-by: Christoph Hellwig <hch@lst.de>
|
||||
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
|
||||
---
|
||||
arch/riscv/include/asm/asm.h | 1 +
|
||||
arch/riscv/kernel/entry.S | 21 ++++++++++++++++++++-
|
||||
2 files changed, 21 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/riscv/include/asm/asm.h b/arch/riscv/include/asm/asm.h
|
||||
index 5a02b7d50940..9c992a88d858 100644
|
||||
--- a/arch/riscv/include/asm/asm.h
|
||||
+++ b/arch/riscv/include/asm/asm.h
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
#define REG_L __REG_SEL(ld, lw)
|
||||
#define REG_S __REG_SEL(sd, sw)
|
||||
+#define REG_SC __REG_SEL(sc.d, sc.w)
|
||||
#define SZREG __REG_SEL(8, 4)
|
||||
#define LGREG __REG_SEL(3, 2)
|
||||
|
||||
diff --git a/arch/riscv/kernel/entry.S b/arch/riscv/kernel/entry.S
|
||||
index da7aa88113c2..2d592da1e776 100644
|
||||
--- a/arch/riscv/kernel/entry.S
|
||||
+++ b/arch/riscv/kernel/entry.S
|
||||
@@ -98,7 +98,26 @@ _save_context:
|
||||
*/
|
||||
.macro RESTORE_ALL
|
||||
REG_L a0, PT_SSTATUS(sp)
|
||||
- REG_L a2, PT_SEPC(sp)
|
||||
+ /*
|
||||
+ * The current load reservation is effectively part of the processor's
|
||||
+ * state, in the sense that load reservations cannot be shared between
|
||||
+ * different hart contexts. We can't actually save and restore a load
|
||||
+ * reservation, so instead here we clear any existing reservation --
|
||||
+ * it's always legal for implementations to clear load reservations at
|
||||
+ * any point (as long as the forward progress guarantee is kept, but
|
||||
+ * we'll ignore that here).
|
||||
+ *
|
||||
+ * Dangling load reservations can be the result of taking a trap in the
|
||||
+ * middle of an LR/SC sequence, but can also be the result of a taken
|
||||
+ * forward branch around an SC -- which is how we implement CAS. As a
|
||||
+ * result we need to clear reservations between the last CAS and the
|
||||
+ * jump back to the new context. While it is unlikely the store
|
||||
+ * completes, implementations are allowed to expand reservations to be
|
||||
+ * arbitrarily large.
|
||||
+ */
|
||||
+ REG_L a2, PT_SEPC(sp)
|
||||
+ REG_SC x0, a2, PT_SEPC(sp)
|
||||
+
|
||||
csrw CSR_SSTATUS, a0
|
||||
csrw CSR_SEPC, a2
|
||||
|
||||
--
|
||||
2.23.0
|
||||
|
||||
97
debian/patches/bugfix/riscv64/riscv-Fix-memblock-reservation-for-device-tree-blob.patch
vendored
Normal file
97
debian/patches/bugfix/riscv64/riscv-Fix-memblock-reservation-for-device-tree-blob.patch
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
From: Albert Ou <aou@eecs.berkeley.edu>
|
||||
Date: Fri, 27 Sep 2019 16:14:18 -0700
|
||||
Subject: riscv: Fix memblock reservation for device tree blob
|
||||
Origin: https://git.kernel.org/linus/922b0375fc93fb1a20c5617e37c389c26bbccb70
|
||||
|
||||
This fixes an error with how the FDT blob is reserved in memblock.
|
||||
An incorrect physical address calculation exposed the FDT header to
|
||||
unintended corruption, which typically manifested with of_fdt_raw_init()
|
||||
faulting during late boot after fdt_totalsize() returned a wrong value.
|
||||
Systems with smaller physical memory sizes more frequently trigger this
|
||||
issue, as the kernel is more likely to allocate from the DMA32 zone
|
||||
where bbl places the DTB after the kernel image.
|
||||
|
||||
Commit 671f9a3e2e24 ("RISC-V: Setup initial page tables in two stages")
|
||||
changed the mapping of the DTB to reside in the fixmap area.
|
||||
Consequently, early_init_fdt_reserve_self() cannot be used anymore in
|
||||
setup_bootmem() since it relies on __pa() to derive a physical address,
|
||||
which does not work with dtb_early_va that is no longer a valid kernel
|
||||
logical address.
|
||||
|
||||
The reserved[0x1] region shows the effect of the pointer underflow
|
||||
resulting from the __pa(initial_boot_params) offset subtraction:
|
||||
|
||||
[ 0.000000] MEMBLOCK configuration:
|
||||
[ 0.000000] memory size = 0x000000001fe00000 reserved size = 0x0000000000a2e514
|
||||
[ 0.000000] memory.cnt = 0x1
|
||||
[ 0.000000] memory[0x0] [0x0000000080200000-0x000000009fffffff], 0x000000001fe00000 bytes flags: 0x0
|
||||
[ 0.000000] reserved.cnt = 0x2
|
||||
[ 0.000000] reserved[0x0] [0x0000000080200000-0x0000000080c2dfeb], 0x0000000000a2dfec bytes flags: 0x0
|
||||
[ 0.000000] reserved[0x1] [0xfffffff080100000-0xfffffff080100527], 0x0000000000000528 bytes flags: 0x0
|
||||
|
||||
With the fix applied:
|
||||
|
||||
[ 0.000000] MEMBLOCK configuration:
|
||||
[ 0.000000] memory size = 0x000000001fe00000 reserved size = 0x0000000000a2e514
|
||||
[ 0.000000] memory.cnt = 0x1
|
||||
[ 0.000000] memory[0x0] [0x0000000080200000-0x000000009fffffff], 0x000000001fe00000 bytes flags: 0x0
|
||||
[ 0.000000] reserved.cnt = 0x2
|
||||
[ 0.000000] reserved[0x0] [0x0000000080200000-0x0000000080c2dfeb], 0x0000000000a2dfec bytes flags: 0x0
|
||||
[ 0.000000] reserved[0x1] [0x0000000080e00000-0x0000000080e00527], 0x0000000000000528 bytes flags: 0x0
|
||||
|
||||
Fixes: 671f9a3e2e24 ("RISC-V: Setup initial page tables in two stages")
|
||||
Signed-off-by: Albert Ou <aou@eecs.berkeley.edu>
|
||||
Tested-by: Bin Meng <bmeng.cn@gmail.com>
|
||||
Reviewed-by: Anup Patel <anup@brainfault.org>
|
||||
Signed-off-by: Paul Walmsley <paul.walmsley@sifive.com>
|
||||
---
|
||||
arch/riscv/mm/init.c | 12 +++++++++++-
|
||||
1 file changed, 11 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/riscv/mm/init.c b/arch/riscv/mm/init.c
|
||||
index f0ba71304b6e..83f7d12042fb 100644
|
||||
--- a/arch/riscv/mm/init.c
|
||||
+++ b/arch/riscv/mm/init.c
|
||||
@@ -11,6 +11,7 @@
|
||||
#include <linux/swap.h>
|
||||
#include <linux/sizes.h>
|
||||
#include <linux/of_fdt.h>
|
||||
+#include <linux/libfdt.h>
|
||||
|
||||
#include <asm/fixmap.h>
|
||||
#include <asm/tlbflush.h>
|
||||
@@ -82,6 +83,8 @@ static void __init setup_initrd(void)
|
||||
}
|
||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||
|
||||
+static phys_addr_t dtb_early_pa __initdata;
|
||||
+
|
||||
void __init setup_bootmem(void)
|
||||
{
|
||||
struct memblock_region *reg;
|
||||
@@ -117,7 +120,12 @@ void __init setup_bootmem(void)
|
||||
setup_initrd();
|
||||
#endif /* CONFIG_BLK_DEV_INITRD */
|
||||
|
||||
- early_init_fdt_reserve_self();
|
||||
+ /*
|
||||
+ * Avoid using early_init_fdt_reserve_self() since __pa() does
|
||||
+ * not work for DTB pointers that are fixmap addresses
|
||||
+ */
|
||||
+ memblock_reserve(dtb_early_pa, fdt_totalsize(dtb_early_va));
|
||||
+
|
||||
early_init_fdt_scan_reserved_mem();
|
||||
memblock_allow_resize();
|
||||
memblock_dump_all();
|
||||
@@ -393,6 +401,8 @@ asmlinkage void __init setup_vm(uintptr_t dtb_pa)
|
||||
|
||||
/* Save pointer to DTB for early FDT parsing */
|
||||
dtb_early_va = (void *)fix_to_virt(FIX_FDT) + (dtb_pa & ~PAGE_MASK);
|
||||
+ /* Save physical address for memblock reservation */
|
||||
+ dtb_early_pa = dtb_pa;
|
||||
}
|
||||
|
||||
static void __init setup_vm_final(void)
|
||||
--
|
||||
2.23.0
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
From 6d7cc74d8aad33589c6cc6f38e33c4284abc07b8 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de>
|
||||
Date: Wed, 12 Jun 2019 15:08:37 +0200
|
||||
Subject: [PATCH 1/1] arch/sh: Check for kprobe trap number before trying to
|
||||
handle a kprobe trap
|
||||
Origin: https://marc.info/?l=linux-sh&m=156034655921917&w=2
|
||||
|
||||
The DIE_TRAP notifier chain is run both for kprobe traps and for BUG/WARN
|
||||
traps. The kprobe code assumes to be only called for
|
||||
BREAKPOINT_INSTRUCTION, and concludes to have hit a concurrently removed
|
||||
kprobe if it finds anything else at the faulting locations. This includes
|
||||
TRAPA_BUG_OPCODE used for BUG and WARN.
|
||||
|
||||
The consequence is that kprobe_handler returns 1. This makes
|
||||
kprobe_exceptions_notify return NOTIFY_STOP, and prevents handling the BUG
|
||||
statement. This also prevents moving $pc away from the trap instruction,
|
||||
so the system locks up in an endless loop
|
||||
|
||||
Signed-off-by: Michael Karcher <kernel@mkarcher.dialup.fu-berlin.de>
|
||||
---
|
||||
arch/sh/kernel/kprobes.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/sh/kernel/kprobes.c b/arch/sh/kernel/kprobes.c
|
||||
index 1f8c0d30567f..318296f48f1a 100644
|
||||
--- a/arch/sh/kernel/kprobes.c
|
||||
+++ b/arch/sh/kernel/kprobes.c
|
||||
@@ -485,7 +485,8 @@ int __kprobes kprobe_exceptions_notify(struct notifier_block *self,
|
||||
struct kprobe_ctlblk *kcb = get_kprobe_ctlblk();
|
||||
|
||||
addr = (kprobe_opcode_t *) (args->regs->pc);
|
||||
- if (val == DIE_TRAP) {
|
||||
+ if (val == DIE_TRAP &&
|
||||
+ args->trapnr == (BREAKPOINT_INSTRUCTION & 0xff)) {
|
||||
if (!kprobe_running()) {
|
||||
if (kprobe_handler(args->regs)) {
|
||||
ret = NOTIFY_STOP;
|
||||
--
|
||||
2.11.0
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
commit f5dbba9fee801f4678a50d92c785f7f24d4ee2c6
|
||||
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Date: Wed Jun 12 12:23:34 2019 -0500
|
||||
|
||||
ASoC: SOF: Intel: hda: add new macro hstream_to_sof_hda_stream()
|
||||
|
||||
Add a new macro to get sof_intel_hda_stream from hdac_ext_stream.
|
||||
|
||||
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h
|
||||
index 502b0a3c2e3c..376b1ca51e2b 100644
|
||||
--- a/sound/soc/sof/intel/hda.h
|
||||
+++ b/sound/soc/sof/intel/hda.h
|
||||
@@ -415,6 +415,9 @@ struct sof_intel_hda_stream {
|
||||
int hw_params_upon_resume; /* set up hw_params upon resume */
|
||||
};
|
||||
|
||||
+#define hstream_to_sof_hda_stream(hstream) \
|
||||
+ container_of(hstream, struct sof_intel_hda_stream, hda_stream)
|
||||
+
|
||||
#define bus_to_sof_hda(bus) \
|
||||
container_of(bus, struct sof_intel_hda_dev, hbus.core)
|
||||
|
||||
@@ -1,168 +0,0 @@
|
||||
commit 7077a07a72d38a78040873bbc13a77d1e45f8aa0
|
||||
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Date: Wed Jun 12 12:23:38 2019 -0500
|
||||
|
||||
ASoC: SOF: Intel: hda: release link DMA for paused streams during suspend
|
||||
|
||||
Paused streams do not get suspended when the system enters S3.
|
||||
So, clear and release link DMA channel for such streams in the
|
||||
hda_dsp_set_hw_params_upon_resume() callback. Also, invalidate
|
||||
the link DMA channel in the DAI config before restoring the
|
||||
dai config upon resume. Also, modify the signature for the
|
||||
set_hw_params_upon_resume() op to return an int.
|
||||
|
||||
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/intel/hda-dsp.c b/sound/soc/sof/intel/hda-dsp.c
|
||||
index 5b73115a0b78..c6eea3079ab7 100644
|
||||
--- a/sound/soc/sof/intel/hda-dsp.c
|
||||
+++ b/sound/soc/sof/intel/hda-dsp.c
|
||||
@@ -454,18 +454,45 @@ int hda_dsp_suspend(struct snd_sof_dev *sdev, int state)
|
||||
return 0;
|
||||
}
|
||||
|
||||
-void hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
+int hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
{
|
||||
struct hdac_bus *bus = sof_to_bus(sdev);
|
||||
struct sof_intel_hda_stream *hda_stream;
|
||||
struct hdac_ext_stream *stream;
|
||||
struct hdac_stream *s;
|
||||
|
||||
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
|
||||
+ struct snd_soc_pcm_runtime *rtd;
|
||||
+ struct hdac_ext_link *link;
|
||||
+ const char *name;
|
||||
+ int stream_tag;
|
||||
+#endif
|
||||
+
|
||||
/* set internal flag for BE */
|
||||
list_for_each_entry(s, &bus->stream_list, list) {
|
||||
stream = stream_to_hdac_ext_stream(s);
|
||||
hda_stream = container_of(stream, struct sof_intel_hda_stream,
|
||||
hda_stream);
|
||||
hda_stream->hw_params_upon_resume = 1;
|
||||
+#if IS_ENABLED(CONFIG_SND_SOC_SOF_HDA)
|
||||
+ /*
|
||||
+ * clear and release stream. This should already be taken care
|
||||
+ * for running streams when the SUSPEND trigger is called.
|
||||
+ * But paused streams do not get suspended, so this needs to be
|
||||
+ * done explicitly during suspend.
|
||||
+ */
|
||||
+ if (stream->link_substream) {
|
||||
+ rtd = snd_pcm_substream_chip(stream->link_substream);
|
||||
+ name = rtd->codec_dai->component->name;
|
||||
+ link = snd_hdac_ext_bus_get_link(bus, name);
|
||||
+ if (!link)
|
||||
+ return -EINVAL;
|
||||
+ stream_tag = hdac_stream(stream)->stream_tag;
|
||||
+ snd_hdac_ext_link_clear_stream_id(link, stream_tag);
|
||||
+ snd_hdac_ext_stream_release(stream,
|
||||
+ HDAC_EXT_STREAM_TYPE_LINK);
|
||||
+ }
|
||||
+#endif
|
||||
}
|
||||
+ return 0;
|
||||
}
|
||||
diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h
|
||||
index 2862b4b3b07c..327621ef5cf3 100644
|
||||
--- a/sound/soc/sof/intel/hda.h
|
||||
+++ b/sound/soc/sof/intel/hda.h
|
||||
@@ -451,7 +451,7 @@ int hda_dsp_suspend(struct snd_sof_dev *sdev, int state);
|
||||
int hda_dsp_resume(struct snd_sof_dev *sdev);
|
||||
int hda_dsp_runtime_suspend(struct snd_sof_dev *sdev, int state);
|
||||
int hda_dsp_runtime_resume(struct snd_sof_dev *sdev);
|
||||
-void hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev);
|
||||
+int hda_dsp_set_hw_params_upon_resume(struct snd_sof_dev *sdev);
|
||||
void hda_dsp_dump_skl(struct snd_sof_dev *sdev, u32 flags);
|
||||
void hda_dsp_dump(struct snd_sof_dev *sdev, u32 flags);
|
||||
void hda_ipc_dump(struct snd_sof_dev *sdev);
|
||||
diff --git a/sound/soc/sof/ops.h b/sound/soc/sof/ops.h
|
||||
index 80fc3b374c2b..a23297353750 100644
|
||||
--- a/sound/soc/sof/ops.h
|
||||
+++ b/sound/soc/sof/ops.h
|
||||
@@ -134,10 +134,11 @@ static inline int snd_sof_dsp_runtime_suspend(struct snd_sof_dev *sdev,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-static inline void snd_sof_dsp_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
+static inline int snd_sof_dsp_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
{
|
||||
if (sof_ops(sdev)->set_hw_params_upon_resume)
|
||||
- sof_ops(sdev)->set_hw_params_upon_resume(sdev);
|
||||
+ return sof_ops(sdev)->set_hw_params_upon_resume(sdev);
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
static inline int snd_sof_dsp_set_clk(struct snd_sof_dev *sdev, u32 freq)
|
||||
diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c
|
||||
index b7843f02ef67..8eeb3a1029f2 100644
|
||||
--- a/sound/soc/sof/pm.c
|
||||
+++ b/sound/soc/sof/pm.c
|
||||
@@ -153,6 +153,15 @@ static int sof_restore_pipelines(struct snd_sof_dev *sdev)
|
||||
continue;
|
||||
}
|
||||
|
||||
+ /*
|
||||
+ * The link DMA channel would be invalidated for running
|
||||
+ * streams but not for streams that were in the PAUSED
|
||||
+ * state during suspend. So invalidate it here before setting
|
||||
+ * the dai config in the DSP.
|
||||
+ */
|
||||
+ if (config->type == SOF_DAI_INTEL_HDA)
|
||||
+ config->hda.link_dma_ch = DMA_CHAN_INVALID;
|
||||
+
|
||||
ret = sof_ipc_tx_message(sdev->ipc,
|
||||
config->hdr.cmd, config,
|
||||
config->hdr.size,
|
||||
@@ -204,7 +213,7 @@ static int sof_send_pm_ipc(struct snd_sof_dev *sdev, int cmd)
|
||||
sizeof(pm_ctx), &reply, sizeof(reply));
|
||||
}
|
||||
|
||||
-static void sof_set_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
+static int sof_set_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
{
|
||||
struct snd_pcm_substream *substream;
|
||||
struct snd_sof_pcm *spcm;
|
||||
@@ -229,7 +238,7 @@ static void sof_set_hw_params_upon_resume(struct snd_sof_dev *sdev)
|
||||
}
|
||||
|
||||
/* set internal flag for BE */
|
||||
- snd_sof_dsp_hw_params_upon_resume(sdev);
|
||||
+ return snd_sof_dsp_hw_params_upon_resume(sdev);
|
||||
}
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE)
|
||||
@@ -333,8 +342,15 @@ static int sof_suspend(struct device *dev, bool runtime_suspend)
|
||||
snd_sof_release_trace(sdev);
|
||||
|
||||
/* set restore_stream for all streams during system suspend */
|
||||
- if (!runtime_suspend)
|
||||
- sof_set_hw_params_upon_resume(sdev);
|
||||
+ if (!runtime_suspend) {
|
||||
+ ret = sof_set_hw_params_upon_resume(sdev);
|
||||
+ if (ret < 0) {
|
||||
+ dev_err(sdev->dev,
|
||||
+ "error: setting hw_params flag during suspend %d\n",
|
||||
+ ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ }
|
||||
|
||||
#if IS_ENABLED(CONFIG_SND_SOC_SOF_DEBUG_ENABLE_DEBUGFS_CACHE)
|
||||
/* cache debugfs contents during runtime suspend */
|
||||
diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h
|
||||
index b80d93e5df2f..cf1b047f8cb6 100644
|
||||
--- a/sound/soc/sof/sof-priv.h
|
||||
+++ b/sound/soc/sof/sof-priv.h
|
||||
@@ -172,7 +172,7 @@ struct snd_sof_dsp_ops {
|
||||
int (*runtime_suspend)(struct snd_sof_dev *sof_dev,
|
||||
int state); /* optional */
|
||||
int (*runtime_resume)(struct snd_sof_dev *sof_dev); /* optional */
|
||||
- void (*set_hw_params_upon_resume)(struct snd_sof_dev *sdev); /* optional */
|
||||
+ int (*set_hw_params_upon_resume)(struct snd_sof_dev *sdev); /* optional */
|
||||
|
||||
/* DSP clocking */
|
||||
int (*set_clk)(struct snd_sof_dev *sof_dev, u32 freq); /* optional */
|
||||
@@ -1,47 +0,0 @@
|
||||
commit 7623ae793c28cc0928c5d1292542dbb92fc2e9e2
|
||||
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Date: Wed Jun 12 12:23:33 2019 -0500
|
||||
|
||||
ASoC: SOF: Intel: hda: save handle to sdev in sof_intel_hda_stream
|
||||
|
||||
Add a snd_sof_dev member to sof_intel_hda_stream. This will be
|
||||
used to access the snd_sof_dev during link hw_params callback.
|
||||
|
||||
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/intel/hda-stream.c b/sound/soc/sof/intel/hda-stream.c
|
||||
index c92006f89499..1cd94e7631a8 100644
|
||||
--- a/sound/soc/sof/intel/hda-stream.c
|
||||
+++ b/sound/soc/sof/intel/hda-stream.c
|
||||
@@ -564,6 +564,8 @@ int hda_dsp_stream_init(struct snd_sof_dev *sdev)
|
||||
if (!hda_stream)
|
||||
return -ENOMEM;
|
||||
|
||||
+ hda_stream->sdev = sdev;
|
||||
+
|
||||
stream = &hda_stream->hda_stream;
|
||||
|
||||
stream->pphc_addr = sdev->bar[HDA_DSP_PP_BAR] +
|
||||
@@ -617,6 +619,8 @@ int hda_dsp_stream_init(struct snd_sof_dev *sdev)
|
||||
if (!hda_stream)
|
||||
return -ENOMEM;
|
||||
|
||||
+ hda_stream->sdev = sdev;
|
||||
+
|
||||
stream = &hda_stream->hda_stream;
|
||||
|
||||
/* we always have DSP support */
|
||||
diff --git a/sound/soc/sof/intel/hda.h b/sound/soc/sof/intel/hda.h
|
||||
index 6c7dee2627d0..502b0a3c2e3c 100644
|
||||
--- a/sound/soc/sof/intel/hda.h
|
||||
+++ b/sound/soc/sof/intel/hda.h
|
||||
@@ -409,6 +409,7 @@ static inline struct hda_bus *sof_to_hbus(struct snd_sof_dev *s)
|
||||
}
|
||||
|
||||
struct sof_intel_hda_stream {
|
||||
+ struct snd_sof_dev *sdev;
|
||||
struct hdac_ext_stream hda_stream;
|
||||
struct sof_intel_stream stream;
|
||||
int hw_params_upon_resume; /* set up hw_params upon resume */
|
||||
@@ -1,516 +0,0 @@
|
||||
commit bdf4ad3fd01f5dc53c5d6d3b17afc98cd76d8988
|
||||
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Date: Wed Jun 12 12:23:36 2019 -0500
|
||||
|
||||
ASoC: SOF: Intel: hda: assign link DMA channel at run-time
|
||||
|
||||
The recommended HDA HW programming sequence for setting
|
||||
the DMA format requires that the link DMA and host DMA
|
||||
channels be coupled before setting the format. This
|
||||
change means that host DMA or link DMA channels be
|
||||
reserved even if only one is used.
|
||||
|
||||
Statically assigned link DMA channels would mean that
|
||||
all the corresponding host DMA channels will need to be
|
||||
reserved, leaving only a few channels available at run-time.
|
||||
So, the suggestion here is to switch to dynamically assigning
|
||||
both host DMA channels and link DMA channels are run-time.
|
||||
|
||||
The host DMA channel is assigned when the pcm
|
||||
is opened as before. While choosing the link DMA channel,
|
||||
if the host DMA channel corresponding to the link DMA channel
|
||||
is already taken, the proposed method checks to make
|
||||
sure that the BE is connected to the FE that has been assigned
|
||||
this host DMA channel. Once the link DMA channel is assigned,
|
||||
an IPC is sent to the DSP to set the link DMA channel.
|
||||
|
||||
The link DMA channel is freed during hw_free() and also in the
|
||||
SUSPEND trigger callback. It will be re-assigned when hw_params
|
||||
are set upon resume.
|
||||
|
||||
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/intel/hda-dai.c b/sound/soc/sof/intel/hda-dai.c
|
||||
index e1decf25aeac..c270fd7a0878 100644
|
||||
--- a/sound/soc/sof/intel/hda-dai.c
|
||||
+++ b/sound/soc/sof/intel/hda-dai.c
|
||||
@@ -30,62 +30,84 @@ struct hda_pipe_params {
|
||||
};
|
||||
|
||||
/*
|
||||
- * Unlike GP dma, there is a set of stream registers in hda controller
|
||||
- * to control the link dma channels. Each register controls one link
|
||||
- * dma channel and the relation is fixed. To make sure FW uses correct
|
||||
- * link dma channels, host allocates stream registers and sends the
|
||||
- * corresponding link dma channels to FW to allocate link dma channel
|
||||
- *
|
||||
- * FIXME: this API is abused in the sense that tx_num and rx_num are
|
||||
- * passed as arguments, not returned. We need to find a better way to
|
||||
- * retrieve the stream tag allocated for the link DMA
|
||||
+ * This function checks if the host dma channel corresponding
|
||||
+ * to the link DMA stream_tag argument is assigned to one
|
||||
+ * of the FEs connected to the BE DAI.
|
||||
*/
|
||||
-static int hda_link_dma_get_channels(struct snd_soc_dai *dai,
|
||||
- unsigned int *tx_num,
|
||||
- unsigned int *tx_slot,
|
||||
- unsigned int *rx_num,
|
||||
- unsigned int *rx_slot)
|
||||
+static bool hda_check_fes(struct snd_soc_pcm_runtime *rtd,
|
||||
+ int dir, int stream_tag)
|
||||
{
|
||||
- struct hdac_bus *bus;
|
||||
- struct hdac_ext_stream *stream;
|
||||
- struct snd_pcm_substream substream;
|
||||
- struct snd_sof_dev *sdev =
|
||||
- snd_soc_component_get_drvdata(dai->component);
|
||||
-
|
||||
- bus = sof_to_bus(sdev);
|
||||
-
|
||||
- memset(&substream, 0, sizeof(substream));
|
||||
- if (*tx_num == 1) {
|
||||
- substream.stream = SNDRV_PCM_STREAM_PLAYBACK;
|
||||
- stream = snd_hdac_ext_stream_assign(bus, &substream,
|
||||
- HDAC_EXT_STREAM_TYPE_LINK);
|
||||
- if (!stream) {
|
||||
- dev_err(bus->dev, "error: failed to find a free hda ext stream for playback");
|
||||
- return -EBUSY;
|
||||
- }
|
||||
+ struct snd_pcm_substream *fe_substream;
|
||||
+ struct hdac_stream *fe_hstream;
|
||||
+ struct snd_soc_dpcm *dpcm;
|
||||
+
|
||||
+ for_each_dpcm_fe(rtd, dir, dpcm) {
|
||||
+ fe_substream = snd_soc_dpcm_get_substream(dpcm->fe, dir);
|
||||
+ fe_hstream = fe_substream->runtime->private_data;
|
||||
+ if (fe_hstream->stream_tag == stream_tag)
|
||||
+ return true;
|
||||
+ }
|
||||
|
||||
- snd_soc_dai_set_dma_data(dai, &substream, stream);
|
||||
- *tx_slot = hdac_stream(stream)->stream_tag - 1;
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+static struct hdac_ext_stream *
|
||||
+ hda_link_stream_assign(struct hdac_bus *bus,
|
||||
+ struct snd_pcm_substream *substream)
|
||||
+{
|
||||
+ struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
+ struct sof_intel_hda_stream *hda_stream;
|
||||
+ struct hdac_ext_stream *res = NULL;
|
||||
+ struct hdac_stream *stream = NULL;
|
||||
|
||||
- dev_dbg(bus->dev, "link dma channel %d for playback", *tx_slot);
|
||||
+ int stream_dir = substream->stream;
|
||||
+
|
||||
+ if (!bus->ppcap) {
|
||||
+ dev_err(bus->dev, "stream type not supported\n");
|
||||
+ return NULL;
|
||||
}
|
||||
|
||||
- if (*rx_num == 1) {
|
||||
- substream.stream = SNDRV_PCM_STREAM_CAPTURE;
|
||||
- stream = snd_hdac_ext_stream_assign(bus, &substream,
|
||||
- HDAC_EXT_STREAM_TYPE_LINK);
|
||||
- if (!stream) {
|
||||
- dev_err(bus->dev, "error: failed to find a free hda ext stream for capture");
|
||||
- return -EBUSY;
|
||||
+ list_for_each_entry(stream, &bus->stream_list, list) {
|
||||
+ struct hdac_ext_stream *hstream =
|
||||
+ stream_to_hdac_ext_stream(stream);
|
||||
+ if (stream->direction != substream->stream)
|
||||
+ continue;
|
||||
+
|
||||
+ hda_stream = hstream_to_sof_hda_stream(hstream);
|
||||
+
|
||||
+ /* check if available */
|
||||
+ if (!hstream->link_locked) {
|
||||
+ if (stream->opened) {
|
||||
+ /*
|
||||
+ * check if the stream tag matches the stream
|
||||
+ * tag of one of the connected FEs
|
||||
+ */
|
||||
+ if (hda_check_fes(rtd, stream_dir,
|
||||
+ stream->stream_tag)) {
|
||||
+ res = hstream;
|
||||
+ break;
|
||||
+ }
|
||||
+ } else {
|
||||
+ res = hstream;
|
||||
+ break;
|
||||
+ }
|
||||
}
|
||||
+ }
|
||||
|
||||
- snd_soc_dai_set_dma_data(dai, &substream, stream);
|
||||
- *rx_slot = hdac_stream(stream)->stream_tag - 1;
|
||||
-
|
||||
- dev_dbg(bus->dev, "link dma channel %d for capture", *rx_slot);
|
||||
+ if (res) {
|
||||
+ /*
|
||||
+ * Decouple host and link DMA. The decoupled flag
|
||||
+ * is updated in snd_hdac_ext_stream_decouple().
|
||||
+ */
|
||||
+ if (!res->decoupled)
|
||||
+ snd_hdac_ext_stream_decouple(bus, res, true);
|
||||
+ spin_lock_irq(&bus->reg_lock);
|
||||
+ res->link_locked = 1;
|
||||
+ res->link_substream = substream;
|
||||
+ spin_unlock_irq(&bus->reg_lock);
|
||||
}
|
||||
|
||||
- return 0;
|
||||
+ return res;
|
||||
}
|
||||
|
||||
static int hda_link_dma_params(struct hdac_ext_stream *stream,
|
||||
@@ -122,6 +144,51 @@ static int hda_link_dma_params(struct hdac_ext_stream *stream,
|
||||
return 0;
|
||||
}
|
||||
|
||||
+/* Send DAI_CONFIG IPC to the DAI that matches the dai_name and direction */
|
||||
+static int hda_link_config_ipc(struct sof_intel_hda_stream *hda_stream,
|
||||
+ const char *dai_name, int channel, int dir)
|
||||
+{
|
||||
+ struct sof_ipc_dai_config *config;
|
||||
+ struct snd_sof_dai *sof_dai;
|
||||
+ struct sof_ipc_reply reply;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ list_for_each_entry(sof_dai, &hda_stream->sdev->dai_list, list) {
|
||||
+ if (!sof_dai->cpu_dai_name)
|
||||
+ continue;
|
||||
+
|
||||
+ if (!strcmp(dai_name, sof_dai->cpu_dai_name) &&
|
||||
+ dir == sof_dai->comp_dai.direction) {
|
||||
+ config = sof_dai->dai_config;
|
||||
+
|
||||
+ if (!config) {
|
||||
+ dev_err(hda_stream->sdev->dev,
|
||||
+ "error: no config for DAI %s\n",
|
||||
+ sof_dai->name);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+
|
||||
+ /* update config with stream tag */
|
||||
+ config->hda.link_dma_ch = channel;
|
||||
+
|
||||
+ /* send IPC */
|
||||
+ ret = sof_ipc_tx_message(hda_stream->sdev->ipc,
|
||||
+ config->hdr.cmd,
|
||||
+ config,
|
||||
+ config->hdr.size,
|
||||
+ &reply, sizeof(reply));
|
||||
+
|
||||
+ if (ret < 0)
|
||||
+ dev_err(hda_stream->sdev->dev,
|
||||
+ "error: failed to set dai config for %s\n",
|
||||
+ sof_dai->name);
|
||||
+ return ret;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return -EINVAL;
|
||||
+}
|
||||
+
|
||||
static int hda_link_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params,
|
||||
struct snd_soc_dai *dai)
|
||||
@@ -135,20 +202,31 @@ static int hda_link_hw_params(struct snd_pcm_substream *substream,
|
||||
struct hda_pipe_params p_params = {0};
|
||||
struct hdac_ext_link *link;
|
||||
int stream_tag;
|
||||
+ int ret;
|
||||
|
||||
- link_dev = snd_soc_dai_get_dma_data(dai, substream);
|
||||
+ link_dev = hda_link_stream_assign(bus, substream);
|
||||
+ if (!link_dev)
|
||||
+ return -EBUSY;
|
||||
+
|
||||
+ stream_tag = hdac_stream(link_dev)->stream_tag;
|
||||
+
|
||||
+ hda_stream = hstream_to_sof_hda_stream(link_dev);
|
||||
+
|
||||
+ /* update the DSP with the new tag */
|
||||
+ ret = hda_link_config_ipc(hda_stream, dai->name, stream_tag - 1,
|
||||
+ substream->stream);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ snd_soc_dai_set_dma_data(dai, substream, (void *)link_dev);
|
||||
|
||||
- hda_stream = container_of(link_dev, struct sof_intel_hda_stream,
|
||||
- hda_stream);
|
||||
hda_stream->hw_params_upon_resume = 0;
|
||||
|
||||
link = snd_hdac_ext_bus_get_link(bus, codec_dai->component->name);
|
||||
if (!link)
|
||||
return -EINVAL;
|
||||
|
||||
- stream_tag = hdac_stream(link_dev)->stream_tag;
|
||||
-
|
||||
- /* set the stream tag in the codec dai dma params */
|
||||
+ /* set the stream tag in the codec dai dma params */
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
snd_soc_dai_set_tdm_slot(codec_dai, stream_tag, 0, 0, 0);
|
||||
else
|
||||
@@ -181,8 +259,7 @@ static int hda_link_pcm_prepare(struct snd_pcm_substream *substream,
|
||||
struct snd_soc_pcm_runtime *rtd = snd_pcm_substream_chip(substream);
|
||||
int stream = substream->stream;
|
||||
|
||||
- hda_stream = container_of(link_dev, struct sof_intel_hda_stream,
|
||||
- hda_stream);
|
||||
+ hda_stream = hstream_to_sof_hda_stream(link_dev);
|
||||
|
||||
/* setup hw_params again only if resuming from system suspend */
|
||||
if (!hda_stream->hw_params_upon_resume)
|
||||
@@ -199,8 +276,24 @@ static int hda_link_pcm_trigger(struct snd_pcm_substream *substream,
|
||||
{
|
||||
struct hdac_ext_stream *link_dev =
|
||||
snd_soc_dai_get_dma_data(dai, substream);
|
||||
+ struct sof_intel_hda_stream *hda_stream;
|
||||
+ struct snd_soc_pcm_runtime *rtd;
|
||||
+ struct hdac_ext_link *link;
|
||||
+ struct hdac_stream *hstream;
|
||||
+ struct hdac_bus *bus;
|
||||
+ int stream_tag;
|
||||
int ret;
|
||||
|
||||
+ hstream = substream->runtime->private_data;
|
||||
+ bus = hstream->bus;
|
||||
+ rtd = snd_pcm_substream_chip(substream);
|
||||
+
|
||||
+ link = snd_hdac_ext_bus_get_link(bus, rtd->codec_dai->component->name);
|
||||
+ if (!link)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ hda_stream = hstream_to_sof_hda_stream(link_dev);
|
||||
+
|
||||
dev_dbg(dai->dev, "In %s cmd=%d\n", __func__, cmd);
|
||||
switch (cmd) {
|
||||
case SNDRV_PCM_TRIGGER_RESUME:
|
||||
@@ -217,8 +310,22 @@ static int hda_link_pcm_trigger(struct snd_pcm_substream *substream,
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
snd_hdac_ext_link_stream_start(link_dev);
|
||||
break;
|
||||
- case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
case SNDRV_PCM_TRIGGER_SUSPEND:
|
||||
+ /*
|
||||
+ * clear and release link DMA channel. It will be assigned when
|
||||
+ * hw_params is set up again after resume.
|
||||
+ */
|
||||
+ ret = hda_link_config_ipc(hda_stream, dai->name,
|
||||
+ DMA_CHAN_INVALID, substream->stream);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+ stream_tag = hdac_stream(link_dev)->stream_tag;
|
||||
+ snd_hdac_ext_link_clear_stream_id(link, stream_tag);
|
||||
+ snd_hdac_ext_stream_release(link_dev,
|
||||
+ HDAC_EXT_STREAM_TYPE_LINK);
|
||||
+
|
||||
+ /* fallthrough */
|
||||
+ case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
snd_hdac_ext_link_stream_clear(link_dev);
|
||||
break;
|
||||
@@ -228,62 +335,38 @@ static int hda_link_pcm_trigger(struct snd_pcm_substream *substream,
|
||||
return 0;
|
||||
}
|
||||
|
||||
-/*
|
||||
- * FIXME: This API is also abused since it's used for two purposes.
|
||||
- * when the substream argument is NULL this function is used for cleanups
|
||||
- * that aren't necessarily required, and called explicitly by handling
|
||||
- * ASoC core structures, which is not recommended.
|
||||
- * This part will be reworked in follow-up patches.
|
||||
- */
|
||||
static int hda_link_hw_free(struct snd_pcm_substream *substream,
|
||||
struct snd_soc_dai *dai)
|
||||
{
|
||||
- const char *name;
|
||||
unsigned int stream_tag;
|
||||
+ struct sof_intel_hda_stream *hda_stream;
|
||||
struct hdac_bus *bus;
|
||||
struct hdac_ext_link *link;
|
||||
struct hdac_stream *hstream;
|
||||
- struct hdac_ext_stream *stream;
|
||||
struct snd_soc_pcm_runtime *rtd;
|
||||
struct hdac_ext_stream *link_dev;
|
||||
- struct snd_pcm_substream pcm_substream;
|
||||
-
|
||||
- memset(&pcm_substream, 0, sizeof(pcm_substream));
|
||||
- if (substream) {
|
||||
- hstream = substream->runtime->private_data;
|
||||
- bus = hstream->bus;
|
||||
- rtd = snd_pcm_substream_chip(substream);
|
||||
- link_dev = snd_soc_dai_get_dma_data(dai, substream);
|
||||
- snd_hdac_ext_stream_decouple(bus, link_dev, false);
|
||||
- name = rtd->codec_dai->component->name;
|
||||
- link = snd_hdac_ext_bus_get_link(bus, name);
|
||||
- if (!link)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
- stream_tag = hdac_stream(link_dev)->stream_tag;
|
||||
- snd_hdac_ext_link_clear_stream_id(link, stream_tag);
|
||||
- }
|
||||
+ int ret;
|
||||
|
||||
- link_dev->link_prepared = 0;
|
||||
- } else {
|
||||
- /* release all hda streams when dai link is unloaded */
|
||||
- pcm_substream.stream = SNDRV_PCM_STREAM_PLAYBACK;
|
||||
- stream = snd_soc_dai_get_dma_data(dai, &pcm_substream);
|
||||
- if (stream) {
|
||||
- snd_soc_dai_set_dma_data(dai, &pcm_substream, NULL);
|
||||
- snd_hdac_ext_stream_release(stream,
|
||||
- HDAC_EXT_STREAM_TYPE_LINK);
|
||||
- }
|
||||
+ hstream = substream->runtime->private_data;
|
||||
+ bus = hstream->bus;
|
||||
+ rtd = snd_pcm_substream_chip(substream);
|
||||
+ link_dev = snd_soc_dai_get_dma_data(dai, substream);
|
||||
+ hda_stream = hstream_to_sof_hda_stream(link_dev);
|
||||
|
||||
- pcm_substream.stream = SNDRV_PCM_STREAM_CAPTURE;
|
||||
- stream = snd_soc_dai_get_dma_data(dai, &pcm_substream);
|
||||
- if (stream) {
|
||||
- snd_soc_dai_set_dma_data(dai, &pcm_substream, NULL);
|
||||
- snd_hdac_ext_stream_release(stream,
|
||||
- HDAC_EXT_STREAM_TYPE_LINK);
|
||||
- }
|
||||
- }
|
||||
+ /* free the link DMA channel in the FW */
|
||||
+ ret = hda_link_config_ipc(hda_stream, dai->name, DMA_CHAN_INVALID,
|
||||
+ substream->stream);
|
||||
+ if (ret < 0)
|
||||
+ return ret;
|
||||
+
|
||||
+ link = snd_hdac_ext_bus_get_link(bus, rtd->codec_dai->component->name);
|
||||
+ if (!link)
|
||||
+ return -EINVAL;
|
||||
+
|
||||
+ stream_tag = hdac_stream(link_dev)->stream_tag;
|
||||
+ snd_hdac_ext_link_clear_stream_id(link, stream_tag);
|
||||
+ snd_hdac_ext_stream_release(link_dev, HDAC_EXT_STREAM_TYPE_LINK);
|
||||
+ link_dev->link_prepared = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -293,7 +376,6 @@ static const struct snd_soc_dai_ops hda_link_dai_ops = {
|
||||
.hw_free = hda_link_hw_free,
|
||||
.trigger = hda_link_pcm_trigger,
|
||||
.prepare = hda_link_pcm_prepare,
|
||||
- .get_channel_map = hda_link_dma_get_channels,
|
||||
};
|
||||
#endif
|
||||
|
||||
diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h
|
||||
index 8c3ac149bbb9..b80d93e5df2f 100644
|
||||
--- a/sound/soc/sof/sof-priv.h
|
||||
+++ b/sound/soc/sof/sof-priv.h
|
||||
@@ -56,6 +56,8 @@
|
||||
#define SOF_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE | \
|
||||
SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_FLOAT)
|
||||
|
||||
+#define DMA_CHAN_INVALID 0xFFFFFFFF
|
||||
+
|
||||
struct snd_sof_dev;
|
||||
struct snd_sof_ipc_msg;
|
||||
struct snd_sof_ipc;
|
||||
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
|
||||
index 178256e338b1..432ae343f960 100644
|
||||
--- a/sound/soc/sof/topology.c
|
||||
+++ b/sound/soc/sof/topology.c
|
||||
@@ -2571,9 +2571,7 @@ static int sof_link_dmic_load(struct snd_soc_component *scomp, int index,
|
||||
*/
|
||||
static int sof_link_hda_process(struct snd_sof_dev *sdev,
|
||||
struct snd_soc_dai_link *link,
|
||||
- struct sof_ipc_dai_config *config,
|
||||
- int tx_slot,
|
||||
- int rx_slot)
|
||||
+ struct sof_ipc_dai_config *config)
|
||||
{
|
||||
struct sof_ipc_reply reply;
|
||||
u32 size = sizeof(*config);
|
||||
@@ -2586,22 +2584,11 @@ static int sof_link_hda_process(struct snd_sof_dev *sdev,
|
||||
continue;
|
||||
|
||||
if (strcmp(link->name, sof_dai->name) == 0) {
|
||||
- if (sof_dai->comp_dai.direction ==
|
||||
- SNDRV_PCM_STREAM_PLAYBACK) {
|
||||
- if (!link->dpcm_playback)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- config->hda.link_dma_ch = tx_slot;
|
||||
- } else {
|
||||
- if (!link->dpcm_capture)
|
||||
- return -EINVAL;
|
||||
-
|
||||
- config->hda.link_dma_ch = rx_slot;
|
||||
- }
|
||||
-
|
||||
config->dai_index = sof_dai->comp_dai.dai_index;
|
||||
found = 1;
|
||||
|
||||
+ config->hda.link_dma_ch = DMA_CHAN_INVALID;
|
||||
+
|
||||
/* save config in dai component */
|
||||
sof_dai->dai_config = kmemdup(config, size, GFP_KERNEL);
|
||||
if (!sof_dai->dai_config)
|
||||
@@ -2648,10 +2635,6 @@ static int sof_link_hda_load(struct snd_soc_component *scomp, int index,
|
||||
struct snd_soc_tplg_private *private = &cfg->priv;
|
||||
struct snd_soc_dai *dai;
|
||||
u32 size = sizeof(*config);
|
||||
- u32 tx_num = 0;
|
||||
- u32 tx_slot = 0;
|
||||
- u32 rx_num = 0;
|
||||
- u32 rx_slot = 0;
|
||||
int ret;
|
||||
|
||||
/* init IPC */
|
||||
@@ -2677,22 +2660,7 @@ static int sof_link_hda_load(struct snd_soc_component *scomp, int index,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- if (link->dpcm_playback)
|
||||
- tx_num = 1;
|
||||
-
|
||||
- if (link->dpcm_capture)
|
||||
- rx_num = 1;
|
||||
-
|
||||
- ret = snd_soc_dai_get_channel_map(dai, &tx_num, &tx_slot,
|
||||
- &rx_num, &rx_slot);
|
||||
- if (ret < 0) {
|
||||
- dev_err(sdev->dev, "error: failed to get dma channel for HDA%d\n",
|
||||
- config->dai_index);
|
||||
-
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- ret = sof_link_hda_process(sdev, link, config, tx_slot, rx_slot);
|
||||
+ ret = sof_link_hda_process(sdev, link, config);
|
||||
if (ret < 0)
|
||||
dev_err(sdev->dev, "error: failed to process hda dai link %s",
|
||||
link->name);
|
||||
@@ -2819,17 +2787,6 @@ static int sof_link_hda_unload(struct snd_sof_dev *sdev,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- /*
|
||||
- * FIXME: this call to hw_free is mainly to release the link DMA ID.
|
||||
- * This is abusing the API and handling SOC internals is not
|
||||
- * recommended. This part will be reworked.
|
||||
- */
|
||||
- if (dai->driver->ops->hw_free)
|
||||
- ret = dai->driver->ops->hw_free(NULL, dai);
|
||||
- if (ret < 0)
|
||||
- dev_err(sdev->dev, "error: failed to free hda resource for %s\n",
|
||||
- link->name);
|
||||
-
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -1,516 +0,0 @@
|
||||
commit 0c888baba8e041c92c5c1882f25b8df5c29bff9f
|
||||
Author: Bard Liao <yung-chuan.liao@linux.intel.com>
|
||||
Date: Wed Jun 12 12:01:48 2019 -0500
|
||||
|
||||
ASoC: SOF: dont wake dsp up in kcontrol IO
|
||||
|
||||
Always get kcontrol value from cache, set kcontrol value to DSP
|
||||
when DSP is active. Kcontrol values will be restored when DSP boot up.
|
||||
We will set the default value of kcontrol in sof_complete to make sure
|
||||
the value is align with firmware.
|
||||
|
||||
Signed-off-by: Bard Liao <yung-chuan.liao@linux.intel.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/control.c b/sound/soc/sof/control.c
|
||||
index 84e2cbfbbcbb..a4983f90ff5b 100644
|
||||
--- a/sound/soc/sof/control.c
|
||||
+++ b/sound/soc/sof/control.c
|
||||
@@ -39,26 +39,8 @@ int snd_sof_volume_get(struct snd_kcontrol *kcontrol,
|
||||
struct soc_mixer_control *sm =
|
||||
(struct soc_mixer_control *)kcontrol->private_value;
|
||||
struct snd_sof_control *scontrol = sm->dobj.private;
|
||||
- struct snd_sof_dev *sdev = scontrol->sdev;
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
unsigned int i, channels = scontrol->num_channels;
|
||||
- int err, ret;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: volume get failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- /* get all the mixer data from DSP */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_GET_VALUE,
|
||||
- SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
- SOF_CTRL_CMD_VOLUME,
|
||||
- false);
|
||||
|
||||
/* read back each channel */
|
||||
for (i = 0; i < channels; i++)
|
||||
@@ -66,12 +48,6 @@ int snd_sof_volume_get(struct snd_kcontrol *kcontrol,
|
||||
ipc_to_mixer(cdata->chanv[i].value,
|
||||
scontrol->volume_table, sm->max + 1);
|
||||
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: volume get failed to idle %d\n",
|
||||
- err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -84,16 +60,6 @@ int snd_sof_volume_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_sof_dev *sdev = scontrol->sdev;
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
unsigned int i, channels = scontrol->num_channels;
|
||||
- int ret, err;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: volume put failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
|
||||
/* update each channel */
|
||||
for (i = 0; i < channels; i++) {
|
||||
@@ -104,18 +70,13 @@ int snd_sof_volume_put(struct snd_kcontrol *kcontrol,
|
||||
}
|
||||
|
||||
/* notify DSP of mixer updates */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_SET_VALUE,
|
||||
- SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
- SOF_CTRL_CMD_VOLUME,
|
||||
- true);
|
||||
-
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: volume put failed to idle %d\n",
|
||||
- err);
|
||||
+ if (pm_runtime_active(sdev->dev))
|
||||
+ snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
+ SOF_IPC_COMP_SET_VALUE,
|
||||
+ SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
+ SOF_CTRL_CMD_VOLUME,
|
||||
+ true);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -125,37 +86,13 @@ int snd_sof_switch_get(struct snd_kcontrol *kcontrol,
|
||||
struct soc_mixer_control *sm =
|
||||
(struct soc_mixer_control *)kcontrol->private_value;
|
||||
struct snd_sof_control *scontrol = sm->dobj.private;
|
||||
- struct snd_sof_dev *sdev = scontrol->sdev;
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
unsigned int i, channels = scontrol->num_channels;
|
||||
- int err, ret;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: switch get failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- /* get all the mixer data from DSP */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_GET_VALUE,
|
||||
- SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
- SOF_CTRL_CMD_SWITCH,
|
||||
- false);
|
||||
|
||||
/* read back each channel */
|
||||
for (i = 0; i < channels; i++)
|
||||
ucontrol->value.integer.value[i] = cdata->chanv[i].value;
|
||||
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: switch get failed to idle %d\n",
|
||||
- err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -168,16 +105,6 @@ int snd_sof_switch_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_sof_dev *sdev = scontrol->sdev;
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
unsigned int i, channels = scontrol->num_channels;
|
||||
- int ret, err;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: switch put failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
|
||||
/* update each channel */
|
||||
for (i = 0; i < channels; i++) {
|
||||
@@ -186,18 +113,13 @@ int snd_sof_switch_put(struct snd_kcontrol *kcontrol,
|
||||
}
|
||||
|
||||
/* notify DSP of mixer updates */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_SET_VALUE,
|
||||
- SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
- SOF_CTRL_CMD_SWITCH,
|
||||
- true);
|
||||
-
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: switch put failed to idle %d\n",
|
||||
- err);
|
||||
+ if (pm_runtime_active(sdev->dev))
|
||||
+ snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
+ SOF_IPC_COMP_SET_VALUE,
|
||||
+ SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
+ SOF_CTRL_CMD_SWITCH,
|
||||
+ true);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -207,37 +129,13 @@ int snd_sof_enum_get(struct snd_kcontrol *kcontrol,
|
||||
struct soc_enum *se =
|
||||
(struct soc_enum *)kcontrol->private_value;
|
||||
struct snd_sof_control *scontrol = se->dobj.private;
|
||||
- struct snd_sof_dev *sdev = scontrol->sdev;
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
unsigned int i, channels = scontrol->num_channels;
|
||||
- int err, ret;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: enum get failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- /* get all the enum data from DSP */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_GET_VALUE,
|
||||
- SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
- SOF_CTRL_CMD_ENUM,
|
||||
- false);
|
||||
|
||||
/* read back each channel */
|
||||
for (i = 0; i < channels; i++)
|
||||
ucontrol->value.enumerated.item[i] = cdata->chanv[i].value;
|
||||
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: enum get failed to idle %d\n",
|
||||
- err);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -250,16 +148,6 @@ int snd_sof_enum_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_sof_dev *sdev = scontrol->sdev;
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
unsigned int i, channels = scontrol->num_channels;
|
||||
- int ret, err;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: enum put failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
|
||||
/* update each channel */
|
||||
for (i = 0; i < channels; i++) {
|
||||
@@ -268,18 +156,13 @@ int snd_sof_enum_put(struct snd_kcontrol *kcontrol,
|
||||
}
|
||||
|
||||
/* notify DSP of enum updates */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_SET_VALUE,
|
||||
- SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
- SOF_CTRL_CMD_ENUM,
|
||||
- true);
|
||||
-
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: enum put failed to idle %d\n",
|
||||
- err);
|
||||
+ if (pm_runtime_active(sdev->dev))
|
||||
+ snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
+ SOF_IPC_COMP_SET_VALUE,
|
||||
+ SOF_CTRL_TYPE_VALUE_CHAN_GET,
|
||||
+ SOF_CTRL_CMD_ENUM,
|
||||
+ true);
|
||||
+
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -293,7 +176,7 @@ int snd_sof_bytes_get(struct snd_kcontrol *kcontrol,
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
struct sof_abi_hdr *data = cdata->data;
|
||||
size_t size;
|
||||
- int ret, err;
|
||||
+ int ret = 0;
|
||||
|
||||
if (be->max > sizeof(ucontrol->value.bytes.data)) {
|
||||
dev_err_ratelimited(sdev->dev,
|
||||
@@ -302,22 +185,6 @@ int snd_sof_bytes_get(struct snd_kcontrol *kcontrol,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes get failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
- /* get all the binary data from DSP */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_GET_DATA,
|
||||
- SOF_CTRL_TYPE_DATA_GET,
|
||||
- scontrol->cmd,
|
||||
- false);
|
||||
-
|
||||
size = data->size + sizeof(*data);
|
||||
if (size > be->max) {
|
||||
dev_err_ratelimited(sdev->dev,
|
||||
@@ -331,12 +198,6 @@ int snd_sof_bytes_get(struct snd_kcontrol *kcontrol,
|
||||
memcpy(ucontrol->value.bytes.data, data, size);
|
||||
|
||||
out:
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes get failed to idle %d\n",
|
||||
- err);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -350,7 +211,6 @@ int snd_sof_bytes_put(struct snd_kcontrol *kcontrol,
|
||||
struct sof_ipc_ctrl_data *cdata = scontrol->control_data;
|
||||
struct sof_abi_hdr *data = cdata->data;
|
||||
size_t size = data->size + sizeof(*data);
|
||||
- int ret, err;
|
||||
|
||||
if (be->max > sizeof(ucontrol->value.bytes.data)) {
|
||||
dev_err_ratelimited(sdev->dev,
|
||||
@@ -366,32 +226,18 @@ int snd_sof_bytes_put(struct snd_kcontrol *kcontrol,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes put failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
/* copy from kcontrol */
|
||||
memcpy(data, ucontrol->value.bytes.data, size);
|
||||
|
||||
/* notify DSP of byte control updates */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_SET_DATA,
|
||||
- SOF_CTRL_TYPE_DATA_SET,
|
||||
- scontrol->cmd,
|
||||
- true);
|
||||
-
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes put failed to idle %d\n",
|
||||
- err);
|
||||
- return ret;
|
||||
+ if (pm_runtime_active(sdev->dev))
|
||||
+ snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
+ SOF_IPC_COMP_SET_DATA,
|
||||
+ SOF_CTRL_TYPE_DATA_SET,
|
||||
+ scontrol->cmd,
|
||||
+ true);
|
||||
+
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
int snd_sof_bytes_ext_put(struct snd_kcontrol *kcontrol,
|
||||
@@ -406,8 +252,6 @@ int snd_sof_bytes_ext_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_tlv header;
|
||||
const struct snd_ctl_tlv __user *tlvd =
|
||||
(const struct snd_ctl_tlv __user *)binary_data;
|
||||
- int ret;
|
||||
- int err;
|
||||
|
||||
/*
|
||||
* The beginning of bytes data contains a header from where
|
||||
@@ -453,30 +297,15 @@ int snd_sof_bytes_ext_put(struct snd_kcontrol *kcontrol,
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes_ext put failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
-
|
||||
/* notify DSP of byte control updates */
|
||||
- snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_SET_DATA,
|
||||
- SOF_CTRL_TYPE_DATA_SET,
|
||||
- scontrol->cmd,
|
||||
- true);
|
||||
-
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes_ext put failed to idle %d\n",
|
||||
- err);
|
||||
+ if (pm_runtime_active(sdev->dev))
|
||||
+ snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
+ SOF_IPC_COMP_SET_DATA,
|
||||
+ SOF_CTRL_TYPE_DATA_SET,
|
||||
+ scontrol->cmd,
|
||||
+ true);
|
||||
|
||||
- return ret;
|
||||
+ return 0;
|
||||
}
|
||||
|
||||
int snd_sof_bytes_ext_get(struct snd_kcontrol *kcontrol,
|
||||
@@ -492,17 +321,7 @@ int snd_sof_bytes_ext_get(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_tlv __user *tlvd =
|
||||
(struct snd_ctl_tlv __user *)binary_data;
|
||||
int data_size;
|
||||
- int err;
|
||||
- int ret;
|
||||
-
|
||||
- ret = pm_runtime_get_sync(sdev->dev);
|
||||
- if (ret < 0) {
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes_ext get failed to resume %d\n",
|
||||
- ret);
|
||||
- pm_runtime_put_noidle(sdev->dev);
|
||||
- return ret;
|
||||
- }
|
||||
+ int ret = 0;
|
||||
|
||||
/*
|
||||
* Decrement the limit by ext bytes header size to
|
||||
@@ -514,13 +333,6 @@ int snd_sof_bytes_ext_get(struct snd_kcontrol *kcontrol,
|
||||
cdata->data->magic = SOF_ABI_MAGIC;
|
||||
cdata->data->abi = SOF_ABI_VERSION;
|
||||
|
||||
- /* get all the component data from DSP */
|
||||
- ret = snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
- SOF_IPC_COMP_GET_DATA,
|
||||
- SOF_CTRL_TYPE_DATA_GET,
|
||||
- scontrol->cmd,
|
||||
- false);
|
||||
-
|
||||
/* Prevent read of other kernel data or possibly corrupt response */
|
||||
data_size = cdata->data->size + sizeof(const struct sof_abi_hdr);
|
||||
|
||||
@@ -543,11 +355,5 @@ int snd_sof_bytes_ext_get(struct snd_kcontrol *kcontrol,
|
||||
ret = -EFAULT;
|
||||
|
||||
out:
|
||||
- pm_runtime_mark_last_busy(sdev->dev);
|
||||
- err = pm_runtime_put_autosuspend(sdev->dev);
|
||||
- if (err < 0)
|
||||
- dev_err_ratelimited(sdev->dev,
|
||||
- "error: bytes_ext get failed to idle %d\n",
|
||||
- err);
|
||||
return ret;
|
||||
}
|
||||
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
|
||||
index 8e00f829bfdb..aaf459af89d0 100644
|
||||
--- a/sound/soc/sof/topology.c
|
||||
+++ b/sound/soc/sof/topology.c
|
||||
@@ -3016,6 +3016,49 @@ static int sof_route_load(struct snd_soc_component *scomp, int index,
|
||||
return ret;
|
||||
}
|
||||
|
||||
+/* Function to set the initial value of SOF kcontrols.
|
||||
+ * The value will be stored in scontrol->control_data
|
||||
+ */
|
||||
+static int snd_sof_cache_kcontrol_val(struct snd_sof_dev *sdev)
|
||||
+{
|
||||
+ struct snd_sof_control *scontrol = NULL;
|
||||
+ int ipc_cmd, ctrl_type;
|
||||
+ int ret = 0;
|
||||
+
|
||||
+ list_for_each_entry(scontrol, &sdev->kcontrol_list, list) {
|
||||
+
|
||||
+ /* notify DSP of kcontrol values */
|
||||
+ switch (scontrol->cmd) {
|
||||
+ case SOF_CTRL_CMD_VOLUME:
|
||||
+ case SOF_CTRL_CMD_ENUM:
|
||||
+ case SOF_CTRL_CMD_SWITCH:
|
||||
+ ipc_cmd = SOF_IPC_COMP_GET_VALUE;
|
||||
+ ctrl_type = SOF_CTRL_TYPE_VALUE_CHAN_GET;
|
||||
+ break;
|
||||
+ case SOF_CTRL_CMD_BINARY:
|
||||
+ ipc_cmd = SOF_IPC_COMP_GET_DATA;
|
||||
+ ctrl_type = SOF_CTRL_TYPE_DATA_GET;
|
||||
+ break;
|
||||
+ default:
|
||||
+ dev_err(sdev->dev,
|
||||
+ "error: Invalid scontrol->cmd: %d\n",
|
||||
+ scontrol->cmd);
|
||||
+ return -EINVAL;
|
||||
+ }
|
||||
+ ret = snd_sof_ipc_set_get_comp_data(sdev->ipc, scontrol,
|
||||
+ ipc_cmd, ctrl_type,
|
||||
+ scontrol->cmd,
|
||||
+ false);
|
||||
+ if (ret < 0) {
|
||||
+ dev_warn(sdev->dev,
|
||||
+ "error: kcontrol value get for widget: %d\n",
|
||||
+ scontrol->comp_id);
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
int snd_sof_complete_pipeline(struct snd_sof_dev *sdev,
|
||||
struct snd_sof_widget *swidget)
|
||||
{
|
||||
@@ -3059,6 +3102,11 @@ static void sof_complete(struct snd_soc_component *scomp)
|
||||
break;
|
||||
}
|
||||
}
|
||||
+ /*
|
||||
+ * cache initial values of SOF kcontrols by reading DSP value over
|
||||
+ * IPC. It may be overwritten by alsa-mixer after booting up
|
||||
+ */
|
||||
+ snd_sof_cache_kcontrol_val(sdev);
|
||||
}
|
||||
|
||||
/* manifest - optional to inform component of manifest */
|
||||
@@ -1,50 +0,0 @@
|
||||
commit e2eba551d2f4226400a6bb7871fef439ad1318dd
|
||||
Author: Kai Vehmanen <kai.vehmanen@linux.intel.com>
|
||||
Date: Wed Jun 12 11:57:04 2019 -0500
|
||||
|
||||
ASoC: SOF: ignore unrecoverable CTX_SAVE IPC errors at suspend
|
||||
|
||||
As part of the suspend flow, a context save IPC message is
|
||||
sent to the firmware before powering down the DSP. If errors
|
||||
are met, the suspend flow is aborted with current code.
|
||||
|
||||
Change the behaviour such that if firmware returns -EBUSY or
|
||||
-EAGAIN, return the error codes to PM core as before. The device
|
||||
is left in active state in this case.
|
||||
|
||||
If other errors are reported, print a warning but do not block the
|
||||
suspend flow. As per interface specification, no valid error can be
|
||||
returned in this scenario. If the hardware has hit a fatal error and
|
||||
is not able to respond successfully, best recovery method is to
|
||||
proceed with suspend and power off the DSP.
|
||||
|
||||
Signed-off-by: Kai Vehmanen <kai.vehmanen@linux.intel.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/pm.c b/sound/soc/sof/pm.c
|
||||
index 8ef1d51025d8..b7843f02ef67 100644
|
||||
--- a/sound/soc/sof/pm.c
|
||||
+++ b/sound/soc/sof/pm.c
|
||||
@@ -343,11 +343,20 @@ static int sof_suspend(struct device *dev, bool runtime_suspend)
|
||||
#endif
|
||||
/* notify DSP of upcoming power down */
|
||||
ret = sof_send_pm_ipc(sdev, SOF_IPC_PM_CTX_SAVE);
|
||||
- if (ret < 0) {
|
||||
+ if (ret == -EBUSY || ret == -EAGAIN) {
|
||||
+ /*
|
||||
+ * runtime PM has logic to handle -EBUSY/-EAGAIN so
|
||||
+ * pass these errors up
|
||||
+ */
|
||||
dev_err(sdev->dev,
|
||||
"error: ctx_save ipc error during suspend %d\n",
|
||||
ret);
|
||||
return ret;
|
||||
+ } else if (ret < 0) {
|
||||
+ /* FW in unexpected state, continue to power down */
|
||||
+ dev_warn(sdev->dev,
|
||||
+ "ctx_save ipc error %d, proceeding with suspend\n",
|
||||
+ ret);
|
||||
}
|
||||
|
||||
/* power down all DSP cores */
|
||||
@@ -1,51 +0,0 @@
|
||||
commit 1b7e1956860d7566325502651c6bf14f115cd91d
|
||||
Author: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Date: Wed Jun 12 12:23:35 2019 -0500
|
||||
|
||||
ASoC: SOF: topology: add cpu_dai_name for DAIs
|
||||
|
||||
Add the cpu_dai_name member to snd_sof_dai and save the
|
||||
cpu_dai_name while setting the DAI config.
|
||||
|
||||
The internal SOF representation will have to change at a later point
|
||||
as well when we have multiple CPU dais.
|
||||
|
||||
Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
|
||||
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
|
||||
Signed-off-by: Mark Brown <broonie@kernel.org>
|
||||
|
||||
diff --git a/sound/soc/sof/sof-priv.h b/sound/soc/sof/sof-priv.h
|
||||
index 8760a4694d8f..8c3ac149bbb9 100644
|
||||
--- a/sound/soc/sof/sof-priv.h
|
||||
+++ b/sound/soc/sof/sof-priv.h
|
||||
@@ -337,6 +337,7 @@ struct snd_sof_route {
|
||||
struct snd_sof_dai {
|
||||
struct snd_sof_dev *sdev;
|
||||
const char *name;
|
||||
+ const char *cpu_dai_name;
|
||||
|
||||
struct sof_ipc_comp_dai comp_dai;
|
||||
struct sof_ipc_dai_config *dai_config;
|
||||
diff --git a/sound/soc/sof/topology.c b/sound/soc/sof/topology.c
|
||||
index aaf459af89d0..178256e338b1 100644
|
||||
--- a/sound/soc/sof/topology.c
|
||||
+++ b/sound/soc/sof/topology.c
|
||||
@@ -2360,6 +2360,9 @@ static int sof_set_dai_config(struct snd_sof_dev *sdev, u32 size,
|
||||
if (!dai->dai_config)
|
||||
return -ENOMEM;
|
||||
|
||||
+ /* set cpu_dai_name */
|
||||
+ dai->cpu_dai_name = link->cpu_dai_name;
|
||||
+
|
||||
found = 1;
|
||||
}
|
||||
}
|
||||
@@ -2624,6 +2627,8 @@ static int sof_link_hda_process(struct snd_sof_dev *sdev,
|
||||
if (!sof_dai->dai_config)
|
||||
return -ENOMEM;
|
||||
|
||||
+ sof_dai->cpu_dai_name = link->cpu_dai_name;
|
||||
+
|
||||
/* send message to DSP */
|
||||
ret = sof_ipc_tx_message(sdev->ipc,
|
||||
config->hdr.cmd, config, size,
|
||||
@@ -3,8 +3,8 @@ Subject: [sh4] Fix uImage build
|
||||
Bug-Debian: https://bugs.debian.org/569034
|
||||
Forwarded: not-needed
|
||||
|
||||
[bwh: This was added without a description, but I think it is dealing
|
||||
with a similar issue to powerpcspe-omit-uimage.patch]
|
||||
[bwh: This was added without a description, but I think it is done
|
||||
only to avoid a build-dependency on u-boot-tools.]
|
||||
|
||||
--- a/arch/sh/Makefile
|
||||
+++ b/arch/sh/Makefile
|
||||
|
||||
18
debian/patches/debian/dfsg/documentation-fix-broken-link-to-cipso-draft.patch
vendored
Normal file
18
debian/patches/debian/dfsg/documentation-fix-broken-link-to-cipso-draft.patch
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
From: Ben Hutchings <ben@decadent.org.uk>
|
||||
Date: Sat, 24 Aug 2019 19:00:41 +0100
|
||||
Subject: Documentation: Fix broken link to CIPSO draft
|
||||
Forwarded: not-needed
|
||||
|
||||
We exclude the CIPSO draft text as its licence is not DFSG compliant.
|
||||
Link to the IETF's online version instead.
|
||||
|
||||
---
|
||||
--- a/Documentation/netlabel/draft_ietf.rst
|
||||
+++ b/Documentation/netlabel/draft_ietf.rst
|
||||
@@ -1,5 +1,4 @@
|
||||
Draft IETF CIPSO IP Security
|
||||
----------------------------
|
||||
|
||||
- .. include:: draft-ietf-cipso-ipsecurity-01.txt
|
||||
- :literal:
|
||||
+https://tools.ietf.org/html/draft-ietf-cipso-ipsecurity-01
|
||||
22
debian/patches/debian/gitignore.patch
vendored
22
debian/patches/debian/gitignore.patch
vendored
@@ -7,23 +7,22 @@ Forwarded: not-needed
|
||||
|
||||
--- a/.gitignore
|
||||
+++ b/.gitignore
|
||||
@@ -65,11 +65,6 @@ modules.builtin
|
||||
#
|
||||
@@ -67,11 +67,6 @@ modules.builtin
|
||||
/*.spec
|
||||
|
||||
-#
|
||||
#
|
||||
-# Debian directory (make deb-pkg)
|
||||
-#
|
||||
-/debian/
|
||||
-
|
||||
#
|
||||
-#
|
||||
# Snap directory (make snap-pkg)
|
||||
#
|
||||
@@ -80,16 +75,6 @@ modules.builtin
|
||||
#
|
||||
/snap/
|
||||
@@ -82,16 +77,6 @@ modules.builtin
|
||||
/tar-install/
|
||||
|
||||
-#
|
||||
#
|
||||
-# We don't want to ignore the following even if they are dot-files
|
||||
-#
|
||||
-!.clang-format
|
||||
@@ -33,13 +32,14 @@ Forwarded: not-needed
|
||||
-!.gitignore
|
||||
-!.mailmap
|
||||
-
|
||||
#
|
||||
-#
|
||||
# Generated include files
|
||||
#
|
||||
@@ -141,3 +126,10 @@ x509.genkey
|
||||
/include/config/
|
||||
@@ -145,3 +130,10 @@ x509.genkey
|
||||
|
||||
# Kdevelop4
|
||||
*.kdev4
|
||||
# Clang's compilation database file
|
||||
/compile_commands.json
|
||||
+
|
||||
+#
|
||||
+# Debian packaging: ignore everything at the top level, since it isn't
|
||||
|
||||
11
debian/patches/debian/kernelvariables.patch
vendored
11
debian/patches/debian/kernelvariables.patch
vendored
@@ -7,14 +7,17 @@ Allow make variables to be overridden for each flavour by a file in
|
||||
the build tree, .kernelvariables.
|
||||
|
||||
We currently use this for ARCH, KERNELRELEASE, CC, and in some cases
|
||||
also CROSS_COMPILE, CFLAGS_KERNEL and CFLAGS_MODULE.
|
||||
also CROSS_COMPILE, KCFLAGS.
|
||||
|
||||
This file can only be read after we establish the build tree, and all
|
||||
use of $(ARCH) needs to be moved after this.
|
||||
|
||||
[bwh: Updated for 5.3: include .kernelvariables from current directory
|
||||
rather than using undefined $(obj).]
|
||||
---
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -320,31 +320,6 @@ SUBARCH := $(shell uname -m | sed -e s/i
|
||||
@@ -363,31 +363,6 @@ include scripts/subarch.include
|
||||
# Note: Some architectures assign CROSS_COMPILE in their arch/*/Makefile
|
||||
ARCH ?= $(SUBARCH)
|
||||
|
||||
@@ -46,11 +49,11 @@ use of $(ARCH) needs to be moved after this.
|
||||
KCONFIG_CONFIG ?= .config
|
||||
export KCONFIG_CONFIG
|
||||
|
||||
@@ -397,6 +372,30 @@ CFLAGS_KERNEL =
|
||||
@@ -442,6 +417,30 @@ CFLAGS_KERNEL =
|
||||
AFLAGS_KERNEL =
|
||||
LDFLAGS_vmlinux =
|
||||
|
||||
+-include $(obj)/.kernelvariables
|
||||
+-include .kernelvariables
|
||||
+
|
||||
+# Architecture as present in compile.h
|
||||
+UTS_MACHINE := $(ARCH)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user