@@ -52,10 +52,10 @@ impl Madt {
5252 #[ cfg( feature = "allocator_api" ) ]
5353 pub fn parse_interrupt_model_in < ' a , A > (
5454 & self ,
55- allocator : & ' a A ,
55+ allocator : A ,
5656 ) -> AcpiResult < ( InterruptModel < ' a , A > , Option < ProcessorInfo < ' a , A > > ) >
5757 where
58- A : core:: alloc:: Allocator ,
58+ A : core:: alloc:: Allocator + Clone ,
5959 {
6060 /*
6161 * We first do a pass through the MADT to determine which interrupt model is being used.
@@ -97,10 +97,10 @@ impl Madt {
9797 #[ cfg( feature = "allocator_api" ) ]
9898 fn parse_apic_model_in < ' a , A > (
9999 & self ,
100- allocator : & ' a A ,
100+ allocator : A ,
101101 ) -> AcpiResult < ( InterruptModel < ' a , A > , Option < ProcessorInfo < ' a , A > > ) >
102102 where
103- A : core:: alloc:: Allocator ,
103+ A : core:: alloc:: Allocator + Clone ,
104104 {
105105 use crate :: {
106106 platform:: {
@@ -138,10 +138,10 @@ impl Madt {
138138 }
139139 }
140140
141- let mut io_apics = crate :: ManagedSlice :: new_in ( io_apic_count, allocator) ?;
142- let mut interrupt_source_overrides = crate :: ManagedSlice :: new_in ( iso_count, allocator) ?;
143- let mut nmi_sources = crate :: ManagedSlice :: new_in ( nmi_source_count, allocator) ?;
144- let mut local_apic_nmi_lines = crate :: ManagedSlice :: new_in ( local_nmi_line_count, allocator) ?;
141+ let mut io_apics = crate :: ManagedSlice :: new_in ( io_apic_count, allocator. clone ( ) ) ?;
142+ let mut interrupt_source_overrides = crate :: ManagedSlice :: new_in ( iso_count, allocator. clone ( ) ) ?;
143+ let mut nmi_sources = crate :: ManagedSlice :: new_in ( nmi_source_count, allocator. clone ( ) ) ?;
144+ let mut local_apic_nmi_lines = crate :: ManagedSlice :: new_in ( local_nmi_line_count, allocator. clone ( ) ) ?;
145145 let mut application_processors =
146146 crate :: ManagedSlice :: new_in ( processor_count. saturating_sub ( 1 ) , allocator) ?; // Subtract one for the BSP
147147 let mut boot_processor = None ;
0 commit comments