Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix a randconfig build for alpha #126

Closed
wants to merge 129 commits into from

Conversation

lyakh
Copy link

@lyakh lyakh commented Sep 11, 2018

Include a header explicitly to define PAGE_SIZE and PAGE_SHIFT

kmarinushkin and others added 30 commits June 4, 2018 10:58
The values of bclk and fsync are inverted WRT the codec. But the existing
solution already works for Broadwell, see the alsa-lib config:

`alsa-lib/src/conf/topology/broadwell/broadwell.conf`

This commit provides the backwards-compatible solution to fix this misuse.

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Tested-by: Pan Xiuli <xiuli.pan@linux.intel.com>
Tested-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit a941e2f)
…nfigs

Clock gating parameter is a part of `dai_fmt`. It is supported by
`alsa-lib` when creating a topology binary file, but ignored by kernel
when loading this topology file.

After applying this commit, the clock gating parameter is not ignored any
more. This solution is backwards compatible. The existing behaviour is
not broken, because by default the parameter value is 0 and is ignored.

snd_soc_tplg_hw_config.clock_gated = 0 => no effect
snd_soc_tplg_hw_config.clock_gated = 1 => SND_SOC_DAIFMT_GATED
snd_soc_tplg_hw_config.clock_gated = 2 => SND_SOC_DAIFMT_CONT

For example, the following config, based on
alsa-lib/src/conf/topology/broadwell/broadwell.conf, is now supported:

~~~~
SectionHWConfig."CodecHWConfig" {
        id "1"
        format "I2S"            # physical audio format.
        pm_gate_clocks "true"   # clock can be gated
}

SectionLink."Codec" {

        # used for binding to the physical link
        id "0"

        hw_configs [
                "CodecHWConfig"
        ]

        default_hw_conf_id "1"
}
~~~~

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Reviewed-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pan Xiuli <xiuli.pan@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 933e1c4)
Current comment makes not clear the direction of mclk. Previously, similar
description caused a misunderstanding for bclk_master and fsync_master.

This commit solves the potential confusion the same way it is solved for
bclk_master and fsync_master.

Signed-off-by: Kirill Marinushkin <k.marinushkin@gmail.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Cc: Jaroslav Kysela <perex@perex.cz>
Cc: Takashi Iwai <tiwai@suse.de>
Cc: Mark Brown <broonie@kernel.org>
Cc: Pan Xiuli <xiuli.pan@linux.intel.com>
Cc: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Cc: linux-kernel@vger.kernel.org
Cc: alsa-devel@alsa-project.org
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit e590522)
Register a compressed PCM if topology defines one.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 5db6aab)
All conditionally-defined routines in include/sound/soc.h expose a
static inline fallback to avoid 0-day warnings and compilation issues,
except snd_soc_new_compress().

Fixes: 5db6aab ('ASoC: topology: Add support for compressed PCMs')
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 0b014d7)
Hard-coded setups conflict with topology defined ones. Move this code to
codec_fixup so that SOF can override codec dai settings, e.g. to only use
2 channels.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Acked-by: Vinod Koul <vkoul@kernel.org>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit bf14adc)
Currently, there are no pre-defined accessors for the elements
in topology TLV data. In the absence of such offsets, the
tlv data will have to be decoded using hardwired offset
numbers 0-N depending on the type of TLV. This patch defines
accessor offsets for the type, length, min and mute/step items
in TLV data for DB_SCALE type tlv's. These will be used by drivers to
decode the TLV data while loading topology thereby improving
code readability. The type and len offsets are common for all TLV
types. The min and step/mute offsets are specific to DB_SCALE tlv type.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Reviewed-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
(cherry picked from commit 08f9f44)
HID is assumed to be made of TI PCI ID (0x104C) + part number, so all
four 104C5121, 104C5122, 104C5141 104C5142 are valid.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit b84f48d)
…LATFORM is enabled

The sound/soc/intel/common/sst-acpi.c code only tries to load the
"baytrail-pcm-audio" driver (and supporting board drivers) when
SND_SST_ATOM_HIFI2_PLATFORM is not enabled, since otherwise these
are handled by snd-soc-sst-atom-hifi2-platform.ko.

Since these thus will never be used when SND_SST_ATOM_HIFI2_PLATFORM is
enabled, building these drivers when it is enabled is useless.

Add a Kconfig dependency to reflect this, so that SND_SOC_INTEL_BAYTRAIL
cannot be enabled when SND_SST_ATOM_HIFI2_PLATFORM is also enabled.

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Acked-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit ed55fe2)
Give topology clients more access to the topology data by passing index,
pcm, link_config and dai_driver to clients. This allows clients to fully
instantiate and track topology objects.

The SOF driver is the first user of these new APIs and needs them to build
component topology driver and FW objects.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit c60b613)
Add a callback fro clients for notification about DAPM route loading and
unloading.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 503e79b)
Sometime a component or topology may configure a DAI widget with no
private data leading to a dev_dbg() dereferencne of this data.

Fix this to check for non NULL private data and let users know if widget
is missing DAI.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit e01b4f6)
Use truncated names in bxt id table and bxt_da7219_max98357a machine
as platform device id table expects names to be less then 20chars.

Signed-off-by: Naveen Manohar <naveen.m@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 95555f5)
There is no need to deal with DMICs if the DSP is not present and
there is no ACPI machine ID found.

Simplify before moving these ACPI tables to sound/soc/intel/common

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 5f15f26)
No functionality change, just move to common tables to make it easier
to deal with SOF and share the same machine drivers - as done
previously for BYT/CHT/HSW/BDW.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit cbaa7f0)
This patch adds da7219_max98357a machine driver entry into
machine table

Signed-off-by: Naveen Manohar <naveen.m@intel.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit 65a3388)
No functionality change for Skylake driver, add relevant names needed
by SOF for BXT/APL, GLK and CNL.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit e6d298f)
While we are at it, add entries for machine drivers that are used on
SOF-based platforms. The drivers will be submitted upstream after the
core SOF patches, but there's no harm in adding these references now.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit b453501)
… file

There are two commercially-available Broadwell platforms based on I2S
(Dell XPS13 and 'Samus' Pixel 2015 Chromebook).

Fix a copy/paste issue to allow each platform to enable different
features if needed when SOF is enabled

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
(cherry picked from commit f0d9034)
Align with firmware tools, no functionality change

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
…fig.

Machine drivers statically define a number of DAI links that currently
cannot be changed or removed by topology. This means PCMs and platform
components cannot be changed by topology at runtime AND machine drivers
are tightly coupled to topology.

This patch allows topology to override the machine driver DAI link config
in order to reuse machine drivers with different topologies and platform
components. The patch supports :-

1) create new FE PCMs with a topology defined PCM ID.
2) destroy existing static FE PCMs
3) change the platform component driver.
4) assign any new HW params fixups.

The patch requires no changes to the machine drivers, but does add some
platform component flags that the platform component driver can assign
before loading topologies.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
…writes

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Currently ALSA core blocks userspace for about 10 seconds for PCM R/W IO.
This needs to be configurable for modern hardware like DSPs where no
pointer update in milliseconds can indicate terminal DSP errors.

Add a substream variable to set the wait time in ms. This allows userspace
and drivers to recover more quickly from terminal DSP errors.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
The Sound Open Firmware driver core is a generic architecture
independent layer that allows SOF to be used on many different different
architectures and platforms. It abstracts DSP operations and IO methods
so that the target DSP can be an internal memory mapped or external SPI
or I2C based device. This abstraction also allows SOF to be run on
many different VMs on the same physical HW.

SOF also requires some data in ASoC PCM runtime data for looking up
SOF data during ASoC PCM operations.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
SOF exposes regular ALSA Kcontrols that are defined by topology. This
patch converts the Kcontrol IO to DSP IPC.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Add debugFS files that can be used to expose DSP memories and
and peripherals to userspace to assist with firmware debugging.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Define an IPC ABI for all host <--> DSP communication. This ABI should
be transport agnostic. i.e. it should work on MMIO and SPI/I2C style
interfaces.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Add support for exposing PCMs to userspace. PCMs are defined by topology
and the operations in this patch map to SOF IPC calls.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
SOF uses topology to define the DAPM graphs and widgets, DAIs, PCMs and set
parameters for init and run time usage. This patch loads topology and
maps it to IPC commands that are build the topology on the DSP.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
Add a trace event buffer that can be used by userspace to read DSP runtime
trace events alongside bespoke trace data in realtime for firmware debug.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
keyonjie and others added 22 commits July 2, 2018 09:07
This patch create nocodec BE DAI links based on platform dai drivers,
with it, we can support multiple SSP/BEs for nocodec mode.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
1. Don't override cpu_dai_name, we will reuse those defined in machine
driver.
2. We should keep dpcm_playback and dpcm_capture defined for BEs, not
both of them are supported by BEs sometimes.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
…dynamic

We should use .dynamic for all FE dai_links, so change probe and trace
buffer ones here to align to that.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Clean-up before re-adding latest code

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This is a basic driver to register the codec, expose the
codec DAI and control the power mode of the amplifier.

Change-Id: Ie6ab037cd4d6c87e8e139b6d8af6cd4295445bf2
Signed-off-by: Mohit Sinha <mohit.sinha@intel.com>
Signed-off-by: Steffen Wagner <steffen.wagner@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/15296
Reviewed-by: B, Jayachandran <jayachandran.b@intel.com>
Reviewed-by: Shaik, Kareem M <kareem.m.shaik@intel.com>
Reviewed-by: Koul, Vinod <vinod.koul@intel.com>
Tested-by: Sm, Bhadur A <bhadur.a.sm@intel.com>
Initialized the reported variables, listed below

warning: 'ret' may be used uninitialized in this
function
warning: 'status_repl' may be used uninitialized in this
function

Change-Id: I6ca5a6e017402a582239d75959c122ffaa9f7298
Signed-off-by: Gogineni, GiribabuX <giribabux.gogineni@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/17572
Reviewed-by: Singh, Guneshwor O <guneshwor.o.singh@intel.com>
Reviewed-by: Sinha, Mohit <mohit.sinha@intel.com>
Reviewed-by: Shaik, Kareem M <kareem.m.shaik@intel.com>
Reviewed-by: Koul, Vinod <vinod.koul@intel.com>
Tested-by: Sm, Bhadur A <bhadur.a.sm@intel.com>
While doing the continuous play and stop, the codec
may not be ready for I2C reading after successive writes.
This triggers BE failure, because I2C reading value is incorrect.
Fix this by adding 10ms delay to ensure the smooth I2C read and write.

Change-Id: If918e263bc799fecc2c807229f5b4b165e011fa6
Signed-off-by: Gogineni, GiribabuX <giribabux.gogineni@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/20404
Reviewed-by: Shaik, Kareem M <kareem.m.shaik@intel.com>
Reviewed-by: Sinha, Mohit <mohit.sinha@intel.com>
Reviewed-by: Nc, Shreyas <shreyas.nc@intel.com>
Reviewed-by: Periyasamy, SriramX <sriramx.periyasamy@intel.com>
Reviewed-by: Kale, Sanyog R <sanyog.r.kale@intel.com>
Tested-by: Sm, Bhadur A <bhadur.a.sm@intel.com>
Fix kmemleak issue in tdf8532_wait_state function by releasing
the memory getting allocated continuosly in instance of get_dev_status_repl
i.e. status_repl  before exiting the function.

kernel memory leakage in audio stack/kmemleak backtrace:

unreferenced object 0xffff88006227cc20 (size 32):
  comm "irq/25-snd_soc_", pid 2302, jiffies 4294679082 (age 5506.010s)
  hex dump (first 32 bytes):
    02 00 03 80 80 02 00 00 00 00 00 00 00 00 00 00  ................
    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
  backtrace:
    [<ffffffff81afb06a>] kmemleak_alloc+0x4a/0xa0
    [<ffffffff81201108>] __kmalloc+0x128/0x210
    [<ffffffffa01b3426>] tdf8532_wait_state.constprop.5+0x116/0x260 [snd_soc_tdf8532]
    [<ffffffffa01b361b>] tdf8532_dai_trigger+0xab/0x15a [snd_soc_tdf8532]
    [<ffffffff819181e5>] soc_pcm_trigger+0x75/0x130
    [<ffffffff81919339>] dpcm_do_trigger.isra.6+0x29/0x90
    [<ffffffff8191952d>] dpcm_be_dai_trigger+0x18d/0x350

Change-Id: I550897d6b1efbd5ebbe15ab47038adf99581a82f
Tracked-On: https://jira01.devtools.intel.com/browse/OAM-62665
Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/23270
Reviewed-by: Shaik, ShahinaX <shahinax.shaik@intel.com>
Reviewed-by: Singh, Guneshwor O <guneshwor.o.singh@intel.com>
Reviewed-by: Gogineni, GiribabuX <giribabux.gogineni@intel.com>
Reviewed-by: Tewani, Pradeep D <pradeep.d.tewani@intel.com>
Reviewed-by: Kesapragada, Pardha Saradhi <pardha.saradhi.kesapragada@intel.com>
Reviewed-by: Kp, Jeeja <jeeja.kp@intel.com>
Tested-by: Madiwalar, MadiwalappaX <madiwalappax.madiwalar@intel.com>
1. Check allocated space before using it.
2. The repl_buff parameter in tdf8523_single_read is used to store
the read data from i2c interface. When the data isn't right read,
the pre-allocate space should be freed and the content of repl_buff
should be set as NULL in case of being wrong used by the caller.
3. In the wrong case i.e. ret != len, return -EINVAL

Change-Id: I3d0e12a9fcb6516716efc92eb734a0248ab3fb28
Tracked-On: https://jira01.devtools.intel.com/browse/OAM-62665
Signed-off-by: Liu Changcheng <changcheng.liu@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/23266
Reviewed-by: Shaik, ShahinaX <shahinax.shaik@intel.com>
Reviewed-by: Kesapragada, Pardha Saradhi <pardha.saradhi.kesapragada@intel.com>
Reviewed-by: Gogineni, GiribabuX <giribabux.gogineni@intel.com>
Reviewed-by: Singh, Guneshwor O <guneshwor.o.singh@intel.com>
Reviewed-by: Tewani, Pradeep D <pradeep.d.tewani@intel.com>
Reviewed-by: Kp, Jeeja <jeeja.kp@intel.com>
Tested-by: Madiwalar, MadiwalappaX <madiwalappax.madiwalar@intel.com>
Based on the TDF8532 manual:
If the wait_state result is ok, we should send CLK_DISCONNECT
command to force codec from STANDBY(2) to IDLE(1).
If the wait_state result is timeout, the codec state should be
at Clockfail(7), we still should send CLK_DISCONNECT command
force the codec from Clockfail(7) to Idle(1).

Signed-off-by: Wu Zhigang <zhigang.wu@linux.intel.com>
Reviewed-by: Keyon Jie <yang.jie@linux.intel.com>
Needs to be squashed for 4.18+

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
This is the machine driver for NXP TDF8532

Change-Id: Ieee7ba1fc2dab6fbe43836b65def88c81360d48f
Signed-off-by: Mohit Sinha <mohit.sinha@intel.com>
Signed-off-by: Markus Schweikhardt <markus.schweikhardt@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/15375
Reviewed-by: Shaik, Kareem M <kareem.m.shaik@intel.com>
Reviewed-by: B, Jayachandran <jayachandran.b@intel.com>
Reviewed-by: Koul, Vinod <vinod.koul@intel.com>
Tested-by: Sm, Bhadur A <bhadur.a.sm@intel.com>
Added two DAI links for probe playback and capture

Change-Id: I0bf364eba3b6a2b779625a6fd1b664c2530a1ab2
Signed-off-by: Sinha, Mohit <mohit.sinha@intel.com>
Add two FW logging DAI for each DSP core

Change-Id: Ic825ecb4afbbcacabda6b74e2e5f2969fc722a1f
Signed-off-by: Sinha, Mohit <mohit.sinha@intel.com>
Audio playback not resumed after it is suspended. Add snd_soc_pm_ops to
execute power management operation.

Change-Id: I84ccf6a0ac7e35c1f79971ee59555f24024d4309
Signed-off-by: Mohit Sinha <mohit.sinha@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/17914
Reviewed-by: Shaik, Kareem M <kareem.m.shaik@intel.com>
Reviewed-by: Prusty, Subhransu S <subhransu.s.prusty@intel.com>
Reviewed-by: H S, Vijay <vijay.h.s@intel.com>
Reviewed-by: Kp, Jeeja <jeeja.kp@intel.com>
Reviewed-by: audio_build <audio_build@intel.com>
Reviewed-by: Koul, Vinod <vinod.koul@intel.com>
Tested-by: Avati, Santosh Kumar <santosh.kumar.avati@intel.com>
Fixup function does the masking of the format to set the
SSP2 to 32 bit

Change-Id: I1c5f20ce1244f9c3a47a47342d46184fdd718290
Signed-off-by: Mohit Sinha <mohit.sinha@intel.com>
Reviewed-on: https://git-gar-1.devtools.intel.com/gerrit/18076
Reviewed-by: Gogineni, GiribabuX <giribabux.gogineni@intel.com>
Reviewed-by: Shaik, Kareem M <kareem.m.shaik@intel.com>
Reviewed-by: Koul, Vinod <vinod.koul@intel.com>
Tested-by: Sm, Bhadur A <bhadur.a.sm@intel.com>
Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
We set ignore_machine for SOF soc platform driver, which will trigger
overriding FEs in soc_check_tplg_fes(), but this overriding may be
overidden again by add_dai_link() in bxt_tdf8532, e.g. platform_name
will be modified to be "0000:00:0e.0", which is not exist in SOF.

Here add #ifdef to bypass add_dai_link() for using the machine driver
with SOF to fix the overridden again issue.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
…dynamic

We should use .dynamic for all FE dai_links, so change probe and trace
buffer ones here to align to that.

Signed-off-by: Keyon Jie <yang.jie@linux.intel.com>
Make checkpatch happy, no functionality change

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Make checkpatch happy, no functionality change

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
A randconfig test managed to find a configuration, which breaks with
undefined PAGE_SIZE and PAGE_SHIFT. Include a header to guarantee,
that they are defined in all configurations.

Signed-off-by: Guennadi Liakhovetski <guennadi.liakhovetski@intel.com>
@lyakh
Copy link
Author

lyakh commented Sep 26, 2018

@lrgirdwo this is the PR that I was talking about, it now contains hundreds of commits, but actually it's just this one patch:
a8db59e

@lgirdwood
Copy link
Member

@lyakh can you reabse and force push so it's only 1 patch.

@lyakh lyakh closed this Sep 26, 2018
@lyakh lyakh deleted the fix-20180911 branch September 26, 2018 14:37
paulstelian97 pushed a commit to paulstelian97/linux that referenced this pull request May 4, 2020
teaching: labs: Review lab09: Filesystems (part 2)
aiChaoSONG pushed a commit to aiChaoSONG/linux that referenced this pull request May 6, 2021
Allow drivers to implement ioctls.
vijendarmukunda pushed a commit to vijendarmukunda/linux that referenced this pull request Feb 13, 2024
Like commit 1cf3bfc ("bpf: Support 64-bit pointers to kfuncs")
for s390x, add support for 64-bit pointers to kfuncs for LoongArch.
Since the infrastructure is already implemented in BPF core, the only
thing need to be done is to override bpf_jit_supports_far_kfunc_call().

Before this change, several test_verifier tests failed:

  # ./test_verifier | grep # | grep FAIL
  thesofproject#119/p calls: invalid kfunc call: ptr_to_mem to struct with non-scalar FAIL
  thesofproject#120/p calls: invalid kfunc call: ptr_to_mem to struct with nesting depth > 4 FAIL
  thesofproject#121/p calls: invalid kfunc call: ptr_to_mem to struct with FAM FAIL
  thesofproject#122/p calls: invalid kfunc call: reg->type != PTR_TO_CTX FAIL
  thesofproject#123/p calls: invalid kfunc call: void * not allowed in func proto without mem size arg FAIL
  thesofproject#124/p calls: trigger reg2btf_ids[reg->type] for reg->type > __BPF_REG_TYPE_MAX FAIL
  thesofproject#125/p calls: invalid kfunc call: reg->off must be zero when passed to release kfunc FAIL
  thesofproject#126/p calls: invalid kfunc call: don't match first member type when passed to release kfunc FAIL
  thesofproject#127/p calls: invalid kfunc call: PTR_TO_BTF_ID with negative offset FAIL
  thesofproject#128/p calls: invalid kfunc call: PTR_TO_BTF_ID with variable offset FAIL
  thesofproject#129/p calls: invalid kfunc call: referenced arg needs refcounted PTR_TO_BTF_ID FAIL
  thesofproject#130/p calls: valid kfunc call: referenced arg needs refcounted PTR_TO_BTF_ID FAIL
  thesofproject#486/p map_kptr: ref: reference state created and released on xchg FAIL

This is because the kfuncs in the loaded module are far away from
__bpf_call_base:

  ffff800002009440 t bpf_kfunc_call_test_fail1    [bpf_testmod]
  9000000002e128d8 T __bpf_call_base

The offset relative to __bpf_call_base does NOT fit in s32, which breaks
the assumption in BPF core. Enable bpf_jit_supports_far_kfunc_call() lifts
this limit.

Note that to reproduce the above result, tools/testing/selftests/bpf/config
should be applied, and run the test with JIT enabled, unpriv BPF enabled.

With this change, the test_verifier tests now all passed:

  # ./test_verifier
  ...
  Summary: 777 PASSED, 0 SKIPPED, 0 FAILED

Tested-by: Tiezhu Yang <yangtiezhu@loongson.cn>
Signed-off-by: Hengqi Chen <hengqi.chen@gmail.com>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.