* RFC: EAL legacy memory fixed address translations @ 2022-07-26 18:18 Don Wallwork 2022-07-26 18:33 ` [RFC] EAL: " Don Wallwork 0 siblings, 1 reply; 13+ messages in thread From: Don Wallwork @ 2022-07-26 18:18 UTC (permalink / raw) To: dev This proposal describes a method for translating any huge page address from virtual to physical or vice versa using simple addition or subtraction of a single fixed value. This allows devices to efficiently access arbitrary huge page memory, even stack data when worker stacks are in huge pages. When legacy memory mode is used, it is possible to map a single virtual memory region large enough to cover all huge pages. During legacy hugepage init, each hugepage is mapped into that region. Once all pages have been mapped, any unused holes in that memory region are unmapped. This feature is applicable when rte_eal_iova_mode() == RTE_IOVA_PA and could be enabled either by default when the legacy memory EAL option is given, or a new EAL option could be added to specifically enable this feature. It may be desirable to set a capability bit when this feature is enabled to allow drivers to behave differently depending on the state of that flag. We have been working for some time with an internal patch that implements this functionality. While this patch works for us, it is not ready to be submitted upstream and we are open to suggested improvements. We would like to know whether this feature may be of interest to the wider DPDK community. ^ permalink raw reply [flat|nested] 13+ messages in thread
* [RFC] EAL: legacy memory fixed address translations 2022-07-26 18:18 RFC: EAL legacy memory fixed address translations Don Wallwork @ 2022-07-26 18:33 ` Don Wallwork 2022-07-26 19:59 ` Dmitry Kozlyuk 0 siblings, 1 reply; 13+ messages in thread From: Don Wallwork @ 2022-07-26 18:33 UTC (permalink / raw) To: dev This proposal describes a method for translating any huge page address from virtual to physical or vice versa using simple addition or subtraction of a single fixed value. This allows devices to efficiently access arbitrary huge page memory, even stack data when worker stacks are in huge pages. When legacy memory mode is used, it is possible to map a single virtual memory region large enough to cover all huge pages. During legacy hugepage init, each hugepage is mapped into that region. Once all pages have been mapped, any unused holes in that memory region are unmapped. This feature is applicable when rte_eal_iova_mode() == RTE_IOVA_PA and could be enabled either by default when the legacy memory EAL option is given, or a new EAL option could be added to specifically enable this feature. It may be desirable to set a capability bit when this feature is enabled to allow drivers to behave differently depending on the state of that flag. We have been working for some time with an internal patch that implements this functionality. While this patch works for us, it is not ready to be submitted upstream and we are open to suggested improvements. We would like to know whether this feature may be of interest to the wider DPDK community. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-26 18:33 ` [RFC] EAL: " Don Wallwork @ 2022-07-26 19:59 ` Dmitry Kozlyuk 2022-07-27 17:20 ` Don Wallwork 0 siblings, 1 reply; 13+ messages in thread From: Dmitry Kozlyuk @ 2022-07-26 19:59 UTC (permalink / raw) To: Don Wallwork; +Cc: dev Hi Don, 2022-07-26 14:33 (UTC-0400), Don Wallwork: > This proposal describes a method for translating any huge page > address from virtual to physical or vice versa using simple > addition or subtraction of a single fixed value. This allows > devices to efficiently access arbitrary huge page memory, even > stack data when worker stacks are in huge pages. What is the use case and how much is the benefit? When drivers need to process a large number of memory blocks, these are typically packets in the form of mbufs, which already have IOVA attached, so there is no translation. Does translation of mbuf VA to PA with the proposed method show significant improvement over reading mbuf->iova? When drivers need to process a few IOVA-contiguous memory blocks, they can calculate VA-to-PA offsets in advance, amortizing translation cost. Hugepage stack falls within this category. > When legacy memory mode is used, it is possible to map a single > virtual memory region large enough to cover all huge pages. During > legacy hugepage init, each hugepage is mapped into that region. Legacy mode is called "legacy" with an intent to be deprecated :) There is initial allocation (-m) and --socket-limit in dynamic mode. When initial allocation is equal to the socket limit, it should be the same behavior as in legacy mode: the number of hugepages mapped is constant and cannot grow, so the feature seems applicable as well. > Once all pages have been mapped, any unused holes in that memory > region are unmapped. Who tracks these holes and prevents translation from their VA? Why the holes appear? > This feature is applicable when rte_eal_iova_mode() == RTE_IOVA_PA One can say it always works for RTE_IOVA_VA with VA-to-PA offset of 0. > and could be enabled either by default when the legacy memory EAL > option is given, or a new EAL option could be added to specifically > enable this feature. > > It may be desirable to set a capability bit when this feature is > enabled to allow drivers to behave differently depending on the > state of that flag. The feature requires, in IOVA-as-PA mode: 1) that hugepage mapping is static (legacy mode or "-m" == "--socket-limit"); 2) that EAL has succeeded to map all hugepages in one PA-continuous block. As userspace code, DPDK cannot guarantee 2). Because this mode breaks nothing and just makes translation more efficient, DPDK can always try to implement it and then report whether it has succeeded. Applications and drivers can decide what to do by querying this API. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-26 19:59 ` Dmitry Kozlyuk @ 2022-07-27 17:20 ` Don Wallwork 2022-07-27 19:12 ` Stephen Hemminger 2022-07-27 20:36 ` Dmitry Kozlyuk 0 siblings, 2 replies; 13+ messages in thread From: Don Wallwork @ 2022-07-27 17:20 UTC (permalink / raw) To: Dmitry Kozlyuk; +Cc: dev On 7/26/2022 3:59 PM, Dmitry Kozlyuk wrote: > Hi Don, > > 2022-07-26 14:33 (UTC-0400), Don Wallwork: >> This proposal describes a method for translating any huge page >> address from virtual to physical or vice versa using simple >> addition or subtraction of a single fixed value. This allows >> devices to efficiently access arbitrary huge page memory, even >> stack data when worker stacks are in huge pages. > What is the use case and how much is the benefit? Several examples where this could help include: 1. A device could return flow lookup results containing the physical address of a matching entry that needs to be translated to a virtual address. 2. Hardware can perform offloads on dynamically allocted heap memory objects and would need PA to avoid requiring IOMMU. 3. It may be useful to prepare data such as descriptors in stack variables, then pass the PA to hardware which can DMA directly from stack memory. 4. The CPU instruction set provides memory operations such as prefetch, atomics, ALU and so on which operate on virtual addresses with no software requirement to provide physical addresses. A device may be able to provide a more optimized implementation of such features that could avoid performance degradation associated with using a hardware IOMMU if provided virtual addresses. Having the ability to offload such operations without requiring data structure modifications to store an IOVA for every virtual address is desirable. All of these cases can run at packet rate and are not operating on mbuf data. These would all benefit from efficient address translation in the same way that mbufs already do. Unlike mbuf translation that only covers VA to PA, this translation can perform both VA to PA and PA to VA with equal efficiency. > > When drivers need to process a large number of memory blocks, > these are typically packets in the form of mbufs, > which already have IOVA attached, so there is no translation. > Does translation of mbuf VA to PA with the proposed method > show significant improvement over reading mbuf->iova? This proposal does not relate to mbufs. As you say, there is already an efficient VA to PA mechanism in place for those. > > When drivers need to process a few IOVA-contiguous memory blocks, > they can calculate VA-to-PA offsets in advance, > amortizing translation cost. > Hugepage stack falls within this category. As the cases listed above hopefully show, there are cases where it is not practical or desirable to precalculate the offsets. > >> When legacy memory mode is used, it is possible to map a single >> virtual memory region large enough to cover all huge pages. During >> legacy hugepage init, each hugepage is mapped into that region. > Legacy mode is called "legacy" with an intent to be deprecated :) Understood. For our initial implementation, we were okay with that limitation given that supporting in legacy mode was simpler. > There is initial allocation (-m) and --socket-limit in dynamic mode. > When initial allocation is equal to the socket limit, > it should be the same behavior as in legacy mode: > the number of hugepages mapped is constant and cannot grow, > so the feature seems applicable as well. It seems feasible to implement this feature in non-legacy mode as well. The approach would be similar; reserve a region of virtual address space large enough to cover all huge pages before they are allocated. As huge pages are allocated, they are mapped into the appropriate location within that virtual address space. > >> Once all pages have been mapped, any unused holes in that memory >> region are unmapped. > Who tracks these holes and prevents translation from their VA? Since the holes are unmapped, references to locations in unused regions will result in seg faults. > Why the holes appear? Memory layout for different NUMA nodes may cause holes. Also, there is no guarantee that all huge pages are physically contiguous. > >> This feature is applicable when rte_eal_iova_mode() == RTE_IOVA_PA > One can say it always works for RTE_IOVA_VA with VA-to-PA offset of 0. This is true, but requires the use of a hardware IOMMU which degrades performance. > >> and could be enabled either by default when the legacy memory EAL >> option is given, or a new EAL option could be added to specifically >> enable this feature. >> >> It may be desirable to set a capability bit when this feature is >> enabled to allow drivers to behave differently depending on the >> state of that flag. > The feature requires, in IOVA-as-PA mode: > 1) that hugepage mapping is static (legacy mode or "-m" == "--socket-limit"); > 2) that EAL has succeeded to map all hugepages in one PA-continuous block. It does not require huge pages to be physically contiguous. Theoretically the mapping a giant VA region could fail, but we have not seen this in practice even when running on x86_64 servers with multiple NUMA nodes, many cores and huge pages that span TBs of physical address space. > As userspace code, DPDK cannot guarantee 2). > Because this mode breaks nothing and just makes translation more efficient, > DPDK can always try to implement it and then report whether it has succeeded. > Applications and drivers can decide what to do by querying this API. Yes, providing an API to check this capability would definitely work. Thanks for all the good feedback. -Don ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-27 17:20 ` Don Wallwork @ 2022-07-27 19:12 ` Stephen Hemminger 2022-07-27 19:27 ` Don Wallwork 2022-07-27 20:36 ` Dmitry Kozlyuk 1 sibling, 1 reply; 13+ messages in thread From: Stephen Hemminger @ 2022-07-27 19:12 UTC (permalink / raw) To: Don Wallwork; +Cc: Dmitry Kozlyuk, dev On Wed, 27 Jul 2022 13:20:22 -0400 Don Wallwork <donw@xsightlabs.com> wrote: > > > > When drivers need to process a large number of memory blocks, > > these are typically packets in the form of mbufs, > > which already have IOVA attached, so there is no translation. > > Does translation of mbuf VA to PA with the proposed method > > show significant improvement over reading mbuf->iova? > > This proposal does not relate to mbufs. As you say, there is > already an efficient VA to PA mechanism in place for those. If the only user of this would be your out of tree code, then it would never get tested by normal process. Therefore it would be regularly broken by other changes. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-27 19:12 ` Stephen Hemminger @ 2022-07-27 19:27 ` Don Wallwork 0 siblings, 0 replies; 13+ messages in thread From: Don Wallwork @ 2022-07-27 19:27 UTC (permalink / raw) To: Stephen Hemminger; +Cc: Dmitry Kozlyuk, dev On 7/27/2022 3:12 PM, Stephen Hemminger wrote: > On Wed, 27 Jul 2022 13:20:22 -0400 > Don Wallwork <donw@xsightlabs.com> wrote: > >>> When drivers need to process a large number of memory blocks, >>> these are typically packets in the form of mbufs, >>> which already have IOVA attached, so there is no translation. >>> Does translation of mbuf VA to PA with the proposed method >>> show significant improvement over reading mbuf->iova? >> This proposal does not relate to mbufs. As you say, there is >> already an efficient VA to PA mechanism in place for those. > > If the only user of this would be your out of tree code, > then it would never get tested by normal process. > Therefore it would be regularly broken by other changes. While we're not yet ready to upstream our drivers, we are actively working to get our code ready for that. It is expected that other devices may be able to take advantage of this capability. In the meantime, tests could be added to prevent such breakage. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-27 17:20 ` Don Wallwork 2022-07-27 19:12 ` Stephen Hemminger @ 2022-07-27 20:36 ` Dmitry Kozlyuk 2022-07-27 21:43 ` Don Wallwork 1 sibling, 1 reply; 13+ messages in thread From: Dmitry Kozlyuk @ 2022-07-27 20:36 UTC (permalink / raw) To: Don Wallwork; +Cc: dev I now understand more about _why_ you want this feature but became less confident _what_ do you're proposing specifically. >> 2022-07-26 14:33 (UTC-0400), Don Wallwork: >>> This proposal describes a method for translating any huge page >>> address from virtual to physical or vice versa using simple >>> addition or subtraction of a single fixed value. This works for one region with continuous PA and VA. At first I assumed you want all DPDK memory to be such a region and legacy mode was needed for the mapping to be static. However, you say that all the memory does not need to be PA-continuous. Hence, address translation requires a more complex data structure, something like a tree to lookup the region, the do the translation. This means the lookup is still not a trivial operation. Effectively you want fast rte_mem_virt2iova() and rte_mem_iova2virt() and point to an optimization opportunity. Do I miss anything? Static mapping would also allow to cache offsets for regions, e.g. device knows it works with some area and looks up the offset once. There is no API to detect that the memory layout is static. Is this the missing piece? Because the proposed data structure can be build with existing API: EAL memory callbacks to track all DPDK memory. [...] > Several examples where this could help include: > > 1. A device could return flow lookup results containing the physical > address of a matching entry that needs to be translated to a virtual > address. See above, rte_mem_iova2virt(). > 2. Hardware can perform offloads on dynamically allocted heap > memory objects and would need PA to avoid requiring IOMMU. I wonder where these objects come from and how they are given to the HW. If there are many similar objects, why not use mempools? If there are few objects, why not use memzones? > 3. It may be useful to prepare data such as descriptors in stack > variables, then pass the PA to hardware which can DMA directly > from stack memory. pthread_attr_getstack() can give the base address which can be translated once and then used for VA-to-PA conversions. The missing bit is PA-continuity of the stack memory. That can be done transparently when allocating worker stacks (probably try to allocate a continuous chunk, fallback to non-contiguous). > 4. The CPU instruction set provides memory operations such as > prefetch, atomics, ALU and so on which operate on virtual > addresses with no software requirement to provide physical > addresses. A device may be able to provide a more optimized > implementation of such features that could avoid performance > degradation associated with using a hardware IOMMU if provided > virtual addresses. Having the ability to offload such operations > without requiring data structure modifications to store an IOVA for > every virtual address is desirable. Either it's me lacking experience with such accelerators or this item needs clarification. > All of these cases can run at packet rate and are not operating on > mbuf data. These would all benefit from efficient address translation > in the same way that mbufs already do. Unlike mbuf translation > that only covers VA to PA, this translation can perform both VA to PA > and PA to VA with equal efficiency. > > > > > When drivers need to process a large number of memory blocks, > > these are typically packets in the form of mbufs, > > which already have IOVA attached, so there is no translation. > > Does translation of mbuf VA to PA with the proposed method > > show significant improvement over reading mbuf->iova? > > This proposal does not relate to mbufs. As you say, there is > already an efficient VA to PA mechanism in place for those. Are you aware of externally-attached mbufs? Those carry a pointer to arbitrary IOVA-continuous memory and its IOVA. They can be used to convey any object in memory to the API consuming mbufs. > > When drivers need to process a few IOVA-contiguous memory blocks, > > they can calculate VA-to-PA offsets in advance, > > amortizing translation cost. > > Hugepage stack falls within this category. > > As the cases listed above hopefully show, there are cases where > it is not practical or desirable to precalculate the offsets. Arguably only PA-to-VA tasks. > >> When legacy memory mode is used, it is possible to map a single > >> virtual memory region large enough to cover all huge pages. During > >> legacy hugepage init, each hugepage is mapped into that region. > > Legacy mode is called "legacy" with an intent to be deprecated :) > > Understood. For our initial implementation, we were okay with > that limitation given that supporting in legacy mode was simpler. > > > There is initial allocation (-m) and --socket-limit in dynamic mode. > > When initial allocation is equal to the socket limit, > > it should be the same behavior as in legacy mode: > > the number of hugepages mapped is constant and cannot grow, > > so the feature seems applicable as well. > > It seems feasible to implement this feature in non-legacy mode as > well. The approach would be similar; reserve a region of virtual > address space large enough to cover all huge pages before they are > allocated. As huge pages are allocated, they are mapped into the > appropriate location within that virtual address space. This is what EAL is trying to do. [...] > >> This feature is applicable when rte_eal_iova_mode() == RTE_IOVA_PA > > One can say it always works for RTE_IOVA_VA with VA-to-PA offset of 0. > > This is true, but requires the use of a hardware IOMMU which > degrades performance. What I meant is this: if there was an API to ask EAL whether the fast translation is available, in RTE_IOVA_VA mode it would always return true; and if asked for an offset, it would always return 0. Bottom line: optimization is not limited to RTE_IOVA_PA, it's just trivial in that mode. > >> and could be enabled either by default when the legacy memory EAL > >> option is given, or a new EAL option could be added to specifically > >> enable this feature. > >> > >> It may be desirable to set a capability bit when this feature is > >> enabled to allow drivers to behave differently depending on the > >> state of that flag. > > The feature requires, in IOVA-as-PA mode: > > 1) that hugepage mapping is static (legacy mode or "-m" == "--socket-limit"); > > 2) that EAL has succeeded to map all hugepages in one PA-continuous block. > > It does not require huge pages to be physically contiguous. > Theoretically the mapping a giant VA region could fail, but > we have not seen this in practice even when running on x86_64 > servers with multiple NUMA nodes, many cores and huge pages > that span TBs of physical address space. Size does not matter as long as there are free hugepages. Physical continuity does, it's unpredictable. But it's best-effort for DPDK anyway. My point: no need for a command-line argument to request this optimized mode, DPDK can always try and report via API whether it has succeeded. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-27 20:36 ` Dmitry Kozlyuk @ 2022-07-27 21:43 ` Don Wallwork 2022-07-28 7:25 ` Dmitry Kozlyuk 0 siblings, 1 reply; 13+ messages in thread From: Don Wallwork @ 2022-07-27 21:43 UTC (permalink / raw) To: Dmitry Kozlyuk; +Cc: dev On 7/27/2022 4:36 PM, Dmitry Kozlyuk wrote: > I now understand more about_why_ you want this feature > but became less confident_what_ do you're proposing specifically. Let me try to give a trivial example of how it would work to make sure we're on the same page and then we can get back to details.. Say you have a system with 4 huge pages that are 1G each and the physical addresses are 10, 11, 17 and 22G. If we map 13G of virtual address space, that will be enough to cover all of the huge page physical addresses. If the VA region starts at 1G, all of the hugepage PAs can be mapped into that region as shown below under Proposed heading. For comparison, existing mapping that would be done in legacy mode is shown under the Current heading. Proposed Current (Legacy) VA | PA VA | PA ----+---- ----+---- 1G | 10G 1G | 10G 2G | 11G 2G | 11G 3G | - 3G | - 4G | - 4G | 17G 5G | - 5G | - 6G | - 6G | 22G 7G | - 8G | 17G 9G | - 10G | - 11G | - 12G | - 13G | 22G So in this example, we have a fixed offset of 9G to translate between VA to PA or vice versa.This works whether the huge pages happen to be allocated statically (legacy mode) or dynamically. The unused VA address space from 3G-7G and 9G-12G can be unmapped in just two unmap calls. This is a very nice property in that it makes address translations trivial without requiring costly searches. This property also makes debugging easier. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-27 21:43 ` Don Wallwork @ 2022-07-28 7:25 ` Dmitry Kozlyuk 2022-07-28 11:29 ` Morten Brørup 0 siblings, 1 reply; 13+ messages in thread From: Dmitry Kozlyuk @ 2022-07-28 7:25 UTC (permalink / raw) To: Don Wallwork; +Cc: dev 2022-07-27 17:43 (UTC-0400), Don Wallwork: > On 7/27/2022 4:36 PM, Dmitry Kozlyuk wrote: > > I now understand more about_why_ you want this feature > > but became less confident_what_ do you're proposing specifically. > > Let me try to give a trivial example of how it would work > to make sure we're on the same page and then we can get > back to details.. Thanks you, Don. Now it's perfectly clear what EAL should do and we can discuss API. [...] > So in this example, we have a fixed offset of 9G to translate > between VA to PA or vice versa.This works whether the huge > pages happen to be allocated statically (legacy mode) or > dynamically. True! One special case is external memory (rte_extmem_*) which has user-controlled VA and IOVA. If all non-external memory is mapped within one VA region, it is possible to detect that an address is in external memory, although it's an extra check. ^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [RFC] EAL: legacy memory fixed address translations 2022-07-28 7:25 ` Dmitry Kozlyuk @ 2022-07-28 11:29 ` Morten Brørup 2022-07-28 14:46 ` Don Wallwork 0 siblings, 1 reply; 13+ messages in thread From: Morten Brørup @ 2022-07-28 11:29 UTC (permalink / raw) To: Dmitry Kozlyuk, Don Wallwork; +Cc: dev, Bruce Richardson > From: Dmitry Kozlyuk [mailto:dmitry.kozliuk@gmail.com] > Sent: Thursday, 28 July 2022 09.26 > > 2022-07-27 17:43 (UTC-0400), Don Wallwork: > > On 7/27/2022 4:36 PM, Dmitry Kozlyuk wrote: > > > I now understand more about_why_ you want this feature > > > but became less confident_what_ do you're proposing specifically. > > > > Let me try to give a trivial example of how it would work > > to make sure we're on the same page and then we can get > > back to details.. > > Thanks you, Don. > Now it's perfectly clear what EAL should do and we can discuss API. I think this RFC is an excellent proposal! Long term, I also hope that it can lead to the removal of the mbuf->buf_iova field, making it available for other purposes - e.g. moving the mbuf->next field up here, so rte_pktmbuf_free(), rte_pktmbuf_prefree_seg() and other functions don't have to touch the mbuf's second cache line anymore. > > [...] > > So in this example, we have a fixed offset of 9G to translate > > between VA to PA or vice versa.This works whether the huge > > pages happen to be allocated statically (legacy mode) or > > dynamically. > > True! > > One special case is external memory (rte_extmem_*) > which has user-controlled VA and IOVA. > If all non-external memory is mapped within one VA region, > it is possible to detect that an address is in external memory, > although it's an extra check. I wish the support for external memory and other semi-exotic features (incl. segmented mbufs) could be removed at build time! The decision to change DPDK from a development kit to a library is making DPDK unnecessarily bloated for development of embedded applications. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-28 11:29 ` Morten Brørup @ 2022-07-28 14:46 ` Don Wallwork 2022-07-28 15:41 ` Don Wallwork 0 siblings, 1 reply; 13+ messages in thread From: Don Wallwork @ 2022-07-28 14:46 UTC (permalink / raw) To: Morten Brørup, Dmitry Kozlyuk; +Cc: dev, Bruce Richardson On 7/28/2022 7:29 AM, Morten Brørup wrote: >>> Let me try to give a trivial example of how it would work >>> to make sure we're on the same page and then we can get >>> back to details.. >> Thanks you, Don. >> Now it's perfectly clear what EAL should do and we can discuss API. > I think this RFC is an excellent proposal! Thanks Morten and Dmitry. Great to hear that. When we have a patch ready, will post on the list. > > Long term, I also hope that it can lead to the removal of the mbuf->buf_iova field, making it available for other purposes - e.g. moving the mbuf->next field up here, so rte_pktmbuf_free(), rte_pktmbuf_prefree_seg() and other functions don't have to touch the mbuf's second cache line anymore. > Yes, it does seem possible that this could be done once the fixed translation logic is in place. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-28 14:46 ` Don Wallwork @ 2022-07-28 15:41 ` Don Wallwork 2022-07-28 16:33 ` Dmitry Kozlyuk 0 siblings, 1 reply; 13+ messages in thread From: Don Wallwork @ 2022-07-28 15:41 UTC (permalink / raw) To: Morten Brørup, Dmitry Kozlyuk; +Cc: dev, Bruce Richardson [-- Attachment #1: Type: text/plain, Size: 719 bytes --] On 7/28/2022 10:46 AM, Don Wallwork wrote: >>>> Let me try to give a trivial example of how it would work >>>> to make sure we're on the same page and then we can get >>>> back to details.. >>> Thanks you, Don. >>> Now it's perfectly clear what EAL should do and we can discuss API. >> I think this RFC is an excellent proposal! > > Thanks Morten and Dmitry. Great to hear that. When we have a > patch ready, will post on the list. One question I'd like to ask before diving into the code is: if there is general application for this feature, is this something the memory system maintainers would prefer to implement or is it preferred that we provide a patch and get guidance from maintainers? Either way is fine. [-- Attachment #2: Type: text/html, Size: 1439 bytes --] ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC] EAL: legacy memory fixed address translations 2022-07-28 15:41 ` Don Wallwork @ 2022-07-28 16:33 ` Dmitry Kozlyuk 0 siblings, 0 replies; 13+ messages in thread From: Dmitry Kozlyuk @ 2022-07-28 16:33 UTC (permalink / raw) To: Don Wallwork; +Cc: Morten Brørup, dev, Bruce Richardson, Burakov, Anatoly 2022-07-28 11:41 (UTC-0400), Don Wallwork: > On 7/28/2022 10:46 AM, Don Wallwork wrote: > >>>> Let me try to give a trivial example of how it would work > >>>> to make sure we're on the same page and then we can get > >>>> back to details.. > >>> Thanks you, Don. > >>> Now it's perfectly clear what EAL should do and we can discuss API. > >> I think this RFC is an excellent proposal! > > > > Thanks Morten and Dmitry. Great to hear that. When we have a > > patch ready, will post on the list. > > One question I'd like to ask before diving into the code is: if there > is general application for this feature, is this something the memory > system maintainers would prefer to implement or is it preferred that > we provide a patch and get guidance from maintainers? Either way > is fine. Please send patches and we'll review. Feel free to ask me and Anatoly questions during the process, e.g. you can send RFC v2 with a draft implementation if feeling unsure. ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2022-07-28 16:33 UTC | newest] Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-07-26 18:18 RFC: EAL legacy memory fixed address translations Don Wallwork 2022-07-26 18:33 ` [RFC] EAL: " Don Wallwork 2022-07-26 19:59 ` Dmitry Kozlyuk 2022-07-27 17:20 ` Don Wallwork 2022-07-27 19:12 ` Stephen Hemminger 2022-07-27 19:27 ` Don Wallwork 2022-07-27 20:36 ` Dmitry Kozlyuk 2022-07-27 21:43 ` Don Wallwork 2022-07-28 7:25 ` Dmitry Kozlyuk 2022-07-28 11:29 ` Morten Brørup 2022-07-28 14:46 ` Don Wallwork 2022-07-28 15:41 ` Don Wallwork 2022-07-28 16:33 ` Dmitry Kozlyuk
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).