20 октября 2015 г., 19:34, "Mitchel Humpherys" <mitchelh@xxxxxxxxxxxxxx> написал: > On Tue, Oct 13 2015 at 11:14:23 AM, Andrew <andrew@xxxxxxxxxx> wrote: > >> On 2015-10-12 21:39, Mitchel Humpherys wrote: >>> On Tue, Oct 06 2015 at 05:35:41 PM, Rob Herring <robherring2@xxxxxxxxx> >>> wrote: >>>> On Tue, Oct 6, 2015 at 3:47 PM, Laura Abbott <labbott@xxxxxxxxxxxxxxxxx> >>>> wrote: >>> >>> [...] >>> >>>>> +Example: >>>>> + >>>>> + ion { >>>>> + compatbile = "linux,ion"; >>>>> + #address-cells = <1>; >>>>> + #size-cells = <0>; >>>>> + >>>>> + ion-system-heap { >>>>> + linux,ion-heap-id = <0>; >>>>> + linux,ion-heap-type = <ION_SYSTEM_HEAP_TYPE>; >>>>> + linux,ion-heap-name = "system"; >>>> >>>> How does this vary across platforms? Is all of this being pushed down >>>> to DT, because there is no coordination of this at the kernel ABI >>>> level across platforms. In other words, why can't heap 0 be hardcoded >>>> as system heap in the driver. It seems to me any 1 of these 3 >>>> properties could be used to derive the other 2. >>> >>> The heap-id<->heap-type mapping isn't necessarily 1:1. As Laura >>> indicated elsewhere on this thread, a given heap might need to be >>> contiguous on one platform but not on another. In that case you just >>> swap out the heap-type here and there's no need for userspace to change. >>> >>> The heap-name, OTOH, could be derived from the heap-id, which is what we >>> hackishly do here [1] and here[2]. >> >> By the way, since we agreed that heap id and heap type mappings >> are not 1:1 - we have a problem with the current API. >> >> In userspace we currently have this: >> >> int ion_alloc(int fd, size_t len, size_t align, unsigned int heap_mask, >> unsigned int flags, ion_user_handle_t *handle); >> >> We do not specify here what TYPE of heap we want the allocation to come >> from. >> This may lead to very unpleasant stuff when porting from one platfrom to >> another. Okay, I may be totally missing some point here then. > What "unpleasant stuff" are you referring to, exactly? It's not really clear for me how (and at where - kernel or userspace) we should properly sort out cases when the next device the pipeline introduces some constraints on the buffer it can use. For instance: camera can save data into a non-contiguous buffer, but the image processing hardware (that may or may not be involved) expects the buffer to be contiguous. > Abstracting the > heap type away from userspace has actually made our lives easier since > userspace doesn't need to know anything about the properties of the > underlying platform. It just asks for a buffer from the "camera" heap, > for example. On some platforms that's contiguous, on others it's not. > > -Mitch > > -- > Qualcomm Innovation Center, Inc. > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project Regards, Andrew _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel