Skip to content

Commit a14c991

Browse files
committed
drm/asahi: queue::mod: Port to init!()
Signed-off-by: Asahi Lina <[email protected]>
1 parent ecdc19e commit a14c991

1 file changed

Lines changed: 25 additions & 31 deletions

File tree

  • drivers/gpu/drm/asahi/queue

drivers/gpu/drm/asahi/queue/mod.rs

Lines changed: 25 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,9 @@ use crate::debug::*;
2121
use crate::driver::AsahiDevice;
2222
use crate::fw::types::*;
2323
use crate::gpu::GpuManager;
24+
use crate::inner_weak_ptr;
2425
use crate::{alloc, buffer, channel, event, file, fw, gem, gpu, mmu, workqueue};
25-
use crate::{inner_weak_ptr, place};
2626

27-
use core::mem::MaybeUninit;
2827
use core::sync::atomic::{AtomicU64, Ordering};
2928

3029
const DEBUG_CLASS: DebugFlags = DebugFlags::Queue;
@@ -374,19 +373,16 @@ impl Queue::ver {
374373
let threshold = alloc.shared.new_default::<fw::event::Threshold>()?;
375374

376375
let notifier: Arc<GpuObject<fw::event::Notifier::ver>> =
377-
Arc::try_new(alloc.private.new_inplace(
378-
fw::event::Notifier::ver { threshold },
379-
|inner, ptr: &mut MaybeUninit<fw::event::raw::Notifier::ver<'_>>| {
380-
Ok(place!(
381-
ptr,
382-
fw::event::raw::Notifier::ver {
383-
threshold: inner.threshold.gpu_pointer(),
384-
generation: AtomicU32::new(id as u32),
385-
cur_count: AtomicU32::new(0),
386-
unk_10: AtomicU32::new(0x50),
387-
state: Default::default()
388-
}
389-
))
376+
Arc::try_new(alloc.private.new_init(
377+
try_init!(fw::event::Notifier::ver { threshold }),
378+
|inner, _p| {
379+
try_init!(fw::event::raw::Notifier::ver {
380+
threshold: inner.threshold.gpu_pointer(),
381+
generation: AtomicU32::new(id as u32),
382+
cur_count: AtomicU32::new(0),
383+
unk_10: AtomicU32::new(0x50),
384+
state: Default::default()
385+
})
390386
},
391387
)?)?;
392388

@@ -621,22 +617,20 @@ impl Queue for Queue::ver {
621617
_ => return Err(EINVAL),
622618
};
623619
mod_dev_dbg!(self.dev, "[Submission {}] Create Explicit Barrier\n", id);
624-
let barrier: GpuObject<fw::workqueue::Barrier> = alloc.private.new_inplace(
625-
Default::default(),
626-
|_inner, ptr: &mut MaybeUninit<fw::workqueue::raw::Barrier>| {
627-
Ok(place!(
628-
ptr,
629-
fw::workqueue::raw::Barrier {
630-
tag: fw::workqueue::CommandType::Barrier,
631-
wait_stamp: event.fw_stamp_pointer,
632-
wait_value: event.value,
633-
wait_slot: event.slot,
634-
stamp_self: queue_job.event_info().value.next(),
635-
uuid: 0xffffbbbb,
636-
barrier_type: 0,
637-
padding: Default::default(),
638-
}
639-
))
620+
let barrier = alloc.private.new_init(
621+
kernel::init::zeroed::<fw::workqueue::Barrier>(),
622+
|_inner, _p| {
623+
let queue_job = &queue_job;
624+
try_init!(fw::workqueue::raw::Barrier {
625+
tag: fw::workqueue::CommandType::Barrier,
626+
wait_stamp: event.fw_stamp_pointer,
627+
wait_value: event.value,
628+
wait_slot: event.slot,
629+
stamp_self: queue_job.event_info().value.next(),
630+
uuid: 0xffffbbbb,
631+
barrier_type: 0,
632+
padding: Default::default(),
633+
})
640634
},
641635
)?;
642636
mod_dev_dbg!(self.dev, "[Submission {}] Add Explicit Barrier\n", id);

0 commit comments

Comments
 (0)