12 Feb, 2019
40 commits
-
The original commit e9a823fb34a8b (block: fix warning when I/O elevator
is changed as request_queue is being removed) is pretty conflated.
"conflated" because the resource being protected by q->sysfs_lock isn't
the queue_flags (it is the 'queue' kobj).q->sysfs_lock serializes __elevator_change() (via elv_iosched_store)
from racing with blk_unregister_queue():
1) By holding q->sysfs_lock first, __elevator_change() can complete
before a racing blk_unregister_queue().
2) Conversely, __elevator_change() is testing for QUEUE_FLAG_REGISTERED
in case elv_iosched_store() loses the race with blk_unregister_queue(),
it needs a way to know the 'queue' kobj isn't there.Expand the scope of blk_unregister_queue()'s q->sysfs_lock use so it is
held until after the 'queue' kobj is removed.To do so blk_mq_unregister_dev() must not also take q->sysfs_lock. So
rename __blk_mq_unregister_dev() to blk_mq_unregister_dev().Also, blk_unregister_queue() should use q->queue_lock to protect against
any concurrent writes to q->queue_flags -- even though chances are the
queue is being cleaned up so no concurrent writes are likely.Fixes: e9a823fb34a8b ("block: fix warning when I/O elevator is changed as request_queue is being removed")
Signed-off-by: Mike Snitzer
Reviewed-by: Ming Lei
Signed-off-by: Jens Axboe
(cherry picked from commit 667257e8b2988c0183ba23e2bcd6900e87961606) -
device_add_disk() will only call bdi_register_owner() if
!GENHD_FL_HIDDEN, so it follows that del_gendisk() should only call
bdi_unregister() if !GENHD_FL_HIDDEN.Found with code inspection. bdi_unregister() won't do any harm if
bdi_register_owner() wasn't used but best to avoid the unnecessary
call to bdi_unregister().Fixes: 8ddcd65325 ("block: introduce GENHD_FL_HIDDEN")
Signed-off-by: Mike Snitzer
Reviewed-by: Ming Lei
Reviewed-by: Hannes Reinecke
Signed-off-by: Jens Axboe
(cherry picked from commit bc8d062c36e3525e81ea8237ff0ab3264c2317b6) -
That we we can also poll non blk-mq queues. Mostly needed for
the NVMe multipath code, but could also be useful elsewhere.Signed-off-by: Christoph Hellwig
Reviewed-by: Hannes Reinecke
Signed-off-by: Jens Axboe
(cherry picked from commit ea435e1b9392a33deceaea2a16ebaa3397bead93) -
With this flag a driver can create a gendisk that can be used for I/O
submission inside the kernel, but which is not registered as user
facing block device. This will be useful for the NVMe multipath
implementation.Signed-off-by: Christoph Hellwig
Signed-off-by: Jens Axboe
(cherry picked from commit 8ddcd653257c18a669fcb75ee42c37054908e0d6) -
The hidden gendisks introduced in the next patch need to keep the dev
field in their struct device empty so that udev won't try to create
block device nodes for them. To support that rewrite disk_devt to
look at the major and first_minor fields in the gendisk itself instead
of looking into the struct device.Signed-off-by: Christoph Hellwig
Reviewed-by: Johannes Thumshirn
Reviewed-by: Hannes Reinecke
Signed-off-by: Jens Axboe
(cherry picked from commit 517bf3c306bad4fe0da631f90ae2ec40924dee2b) -
This helpers allows to bounce steal the uncompleted bios from a request so
that they can be reissued on another path.Signed-off-by: Christoph Hellwig
Reviewed-by: Sagi Grimberg
Reviewed-by: Hannes Reinecke
Signed-off-by: Jens Axboe
(cherry picked from commit ef71de8b15d891b27b8c983a9a8972b11cb4576a) -
This helper allows reinserting a bio into a new queue without much
overhead, but requires all queue limits to be the same for the upper
and lower queues, and it does not provide any recursion preventions.Signed-off-by: Christoph Hellwig
Reviewed-by: Sagi Grimberg
Reviewed-by: Javier González
Reviewed-by: Hannes Reinecke
Signed-off-by: Jens Axboe
(cherry picked from commit f421e1d9ade4e1b88183e54425cf50e390d16a7f) -
Set aside a bit in the request/bio flags for driver use.
Signed-off-by: Christoph Hellwig
Reviewed-by: Sagi Grimberg
Reviewed-by: Hannes Reinecke
Reviewed-by: Johannes Thumshirn
Signed-off-by: Jens Axboe
(cherry picked from commit 96222bcc732d0504363dc772637c50e53b4bd41e) -
This flag should be before the operation-specific REQ_NOUNMAP bit.
Signed-off-by: Christoph Hellwig
Reviewed-by: Sagi Grimberg
Reviewed-by: Hannes Reinecke
Reviewed-by: Johannes Thumshirn
Signed-off-by: Jens Axboe
(cherry picked from commit 8977f563845bdd61fc61c4dfb399270b7d5667c6) -
This patch does not change any functionality.
Reviewed-by: Christoph Hellwig
Signed-off-by: Bart Van Assche
Signed-off-by: Jens Axboe
(cherry picked from commit 14a23498ba97683c6790b1bcd8b2cdfe9ad99797) -
These two functions are only called from inside the block layer so
unexport them.Reviewed-by: Christoph Hellwig
Signed-off-by: Bart Van Assche
Signed-off-by: Jens Axboe
(cherry picked from commit 83d016ac86428dbca8a62d3e4fdc29e3ea39e535) -
Fix bug of commit 74d46992e0d9 ("block: replace bi_bdev with a gendisk
pointer and partitions index").bio_dev(bio) is used to find the dev state in function
__btrfsic_submit_bio. But when dev_state is added to the hashtable, it
is using dev_t of block_device.bio_dev(bio) returns a dev_t of part0 which is different from dev_t in
block_device(bd_dev). bd_dev in block_device represents the exact
partition.block_device.bd_dev =
bio->bi_partno (same as block_device.bd_partno) + bio_dev(bio).When adding a dev_state into hashtable, we use the exact partition dev_t.
So when looking it up, it should also use the exact partition dev_t.Reproducer of this bug:
Use MOUNT_OPTIONS="-o check_int" and run btrfs/001 in fstests.
Then there will be WARNING like below.WARNING:
btrfs: attempt to write superblock which references block M @29523968 (sda7 /1111654400/2) which is never written!Signed-off-by: Gu JinXiang
Reviewed-by: David Sterba
Signed-off-by: David Sterba
(cherry picked from commit d28e649a5c58b779b303c252c66ee84a0f2c3b32) -
Fix a typo in pkt_start_recovery.
Fixes: 74d46992e0d9 ("block: replace bi_bdev with a gendisk pointer and partitions index")
Reviewed-by: Christoph Hellwig
Signed-off-by: Jiufei Xue
Signed-off-by: Jens Axboe
(cherry picked from commit 158e61865a31ef7abf39629c37285810504d60b5) -
According to ADD, the audio ahb and ipg clock should be in 1:1 mode
and the frequency is 400MHzSigned-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit ee175a8cea1a7d27954a73c3447bb16edd71f4c8) -
add new dts for m4 audio playback
Signed-off-by: Shengjiu Wang
(cherry picked from commit 7343c0bd256d7ade1152f83bd0eb395d29e03620) -
support codec over rpmsg
Signed-off-by: Shengjiu Wang
(cherry picked from commit 0b2238d0b88b19a1134aee54706b64a322c6e51b) -
update the rpmsg codec name
Signed-off-by: Shengjiu Wang
(cherry picked from commit 6130b919df97b127fafe319f0c2ff601ebc6bed2) -
support codec through rpmsg
Signed-off-by: Shengjiu Wang
(cherry picked from commit 8585d67e54c4c3607990a792718992de8be8fe58) -
support more codecs, codec is specified by compatible string
Signed-off-by: Shengjiu Wang
(cherry picked from commit 7c92a75fcf83ec0aa3fe6773e4cb5f5e88a1ff09) -
register rpmsg wm8960 and cs42xx8 codec
Signed-off-by: Shengjiu Wang
(cherry picked from commit c49f8d20c6fd4479ad45d76290bb5c57d4800d9e) -
The difference of rpmsg_cs42xx8 and cs42xx8 driver is previous one
will send command through rpmsg, others are same.Signed-off-by: Shengjiu Wang
(cherry picked from commit dda40ff395bb1d86fc75920bb2bc2ea99099ed4b) -
The difference of rpmsg_wm8960 and wm8960 driver is previous one
will send command through rpmsg, others are same.Signed-off-by: Shengjiu Wang
(cherry picked from commit 094521755ae806a572fd841455371b23408c36d1) -
The format send to M4 through rpmsg is wrong, that make the
driver treat the data as S32_LE, it looks like data is right
shift 8 bit.Signed-off-by: Shengjiu Wang
(cherry picked from commit 508550b70e80339d3d49594ffc23946dd80b0c82) -
With the 800M clock source, there is noise on SAI5 (PDM, or AK5558)
recording with some chips, but it may be ok for other chips.
The reason is not clear.
This patch is to switch the clock source to 500M.Signed-off-by: Shengjiu Wang
(cherry picked from commit 3f4e34d26ceb8569eeb6cbb2e5a410d0332a9e62) -
There is a change in imx8mm evk revb board, which is to add a i2c
control for power enablement of audio board, that software can
control the power of audio board, which can resolve the issue that
with audio board the cpu board can't reboot issue.In this patch add power supply for each AK series codecs
Signed-off-by: Shengjiu Wang
(cherry picked from commit 1d3d7e6d6ecd0ab62fb9bb568a5afeb2fbeda1ca) -
add regulators for ak5558
Signed-off-by: Shengjiu Wang
(cherry picked from commit 914f117ffb4233ba630515d8426d30006a82794f) -
add regulators for ak4497
Signed-off-by: Shengjiu Wang
(cherry picked from commit c33df8b3f4a05ff9a6f12bb66ac9b5f6fcaaaf3e) -
add regulator for ak4458
Signed-off-by: Shengjiu Wang
(cherry picked from commit 6b9f1e42e6d4f59ad2c66c0d327fc6d63572147f) -
support playback and record for rpmsg device
Signed-off-by: Shengjiu Wang
(cherry picked from commit b06f0122c6c280eff3bb83b0dfa284ce93526ef3) -
only support playback for rpmsg device on imx8mm evk.
Signed-off-by: Shengjiu Wang
(cherry picked from commit a6e9ff5efc814fa08f7e4664f584861b4a4d5792) -
Some platform the rpmsg device only support playback or record. So
Add a property to differentiate them.Signed-off-by: Shengjiu Wang
(cherry picked from commit aa8b9304d207e5f00cca8a41772c130dd4c6944b) -
enable sound-rpmsg in fsl-imx8mm-evk-m4
Signed-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit 195a79896f105e5537ae4dfde97e87a9e198cbbd) -
enable i2s over rpmsg
Signed-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit 0ee32296ec540e5c11c627012656f0373317eaac) -
In imx8mm, there is no controls for wm8524, so we use the
dummy codec instead.Signed-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit 43bcd3a8e9f4c1b2af9974f2082a34beacfba4a1) -
Update the read and write function for the send_message function
changesSigned-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit 4610826f39ee4124588b818e5589c25448aa3dba) -
Add ack function, which is to info M4 side how many data
has been writen to buffer.Add timer, which is to get the position of hw pointer in m4.
Signed-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit 0fd349fbab28d97f8c5501ec635bff053e3b1470) -
Add two new message command I2S_TX_POINTER and I2S_RX_POINTER,
which are used to get the hw pointer in m4 side. For in low
power audio mode, m4 won't send notification every period, the
notification only be sent when hw pointer reach end of buffer,
so we need these command to get the position of hw pointer,
user can use it to calculate the timestamp.Restructure send message and recv message together for i2s_rpmsg,
that every send message has a recv message. so the
i2s_send_message can store the recv message indepedently. one
reason is that the receive message is async withe send message.The low power audio is disabled in default, user need to enabled
it by add "fsl,enable-lpa" in dts.Signed-off-by: Shengjiu Wang
Reviewed-by: Viorel Suman
(cherry picked from commit 753e7b819609ad4791e32069a124d4411c720947) -
Fix PDM input select options, add missing daisy chain
select option for routing PDM bitsream inputs from
SAI1_RXDx pads.Signed-off-by: Adrian Alonso
(cherry picked from commit 8a6f7ddd5ba852fbc4511415506453ba1c575d6a) -
The FSL_SAI_VERID and FSL_SAI_PARAM only available
when reg_offset is 8Signed-off-by: Shengjiu Wang
(cherry picked from commit 0a0695672dc7ecf07a7642ff6f99f0b9d3a26b32) -
In some platform, the low power audio playback should be
supported, which need the audio buffer allocated from
OCRAM/IRAM. So move the buffer allocation to .open
function at that time the dma chan is allocated.Signed-off-by: Shengjiu Wang
(cherry picked from commit 85c59acfc5c8d17aa0f369dbe30e4a5fb128c25f)