Message ID | 1598557731-1566-1-git-send-email-rishabhb@codeaurora.org (mailing list archive) |
---|---|
Headers | show |
Series | Expose recovery/coredump configuration from sysfs | expand |
Hi Rishabh, On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: > From Android R onwards Google has restricted access to debugfs in user > and user-debug builds. This restricts access to most of the features > exposed through debugfs. This patch series adds a configurable option > to move the recovery/coredump interfaces to sysfs. If the feature > flag is selected it would move these interfaces to sysfs and remove > the equivalent debugfs interface. What I meant wast to move the coredump entry from debugfs to sysfs and from there make it available to user space using a kernel config. But thinking further on this it may be better to simply provide an API to set the coredump mode from the platform driver, the same way rproc_coredump_set_elf_info() works. That will prevent breaking a fair amount of user space code... Let me know if that can work for you. Thanks, Mathieu > 'Coredump' and 'Recovery' are critical > interfaces that are required for remoteproc to work on Qualcomm Chipsets. > Coredump configuration needs to be set to "inline" in debug/test build > and "disabled" in production builds. Whereas recovery needs to be > "disabled" for debugging purposes and "enabled" on production builds. > > Changelog: > > v1 -> v2: > - Correct the contact name in the sysfs documentation. > - Remove the redundant write documentation for coredump/recovery sysfs > - Add a feature flag to make this interface switch configurable. > > Rishabh Bhatnagar (3): > remoteproc: Expose remoteproc configuration through sysfs > remoteproc: Add coredump configuration to sysfs > remoteproc: Add recovery configuration to sysfs > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > drivers/remoteproc/Kconfig | 12 +++ > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > 4 files changed, 190 insertions(+), 2 deletions(-) > > -- > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > a Linux Foundation Collaborative Project >
On 2020-09-01 15:05, Mathieu Poirier wrote: > Hi Rishabh, > > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: >> From Android R onwards Google has restricted access to debugfs in user >> and user-debug builds. This restricts access to most of the features >> exposed through debugfs. This patch series adds a configurable option >> to move the recovery/coredump interfaces to sysfs. If the feature >> flag is selected it would move these interfaces to sysfs and remove >> the equivalent debugfs interface. > > What I meant wast to move the coredump entry from debugfs to sysfs and > from > there make it available to user space using a kernel config. But > thinking > further on this it may be better to simply provide an API to set the > coredump > mode from the platform driver, the same way > rproc_coredump_set_elf_info() works. > That will prevent breaking a fair amount of user space code... > > Let me know if that can work for you. > > Thanks, > Mathieu > Hi Mathieu, That works for product configuration but that would still limit internal testing. Since there is also restriction on accessing debugfs through userspace code, automation won't be able to run recovery/coredump tests. Only other way for us would be to provide these sysfs entries through the platform drivers locally but that would create a lot of mess/redundancy. >> 'Coredump' and 'Recovery' are critical >> interfaces that are required for remoteproc to work on Qualcomm >> Chipsets. >> Coredump configuration needs to be set to "inline" in debug/test build >> and "disabled" in production builds. Whereas recovery needs to be >> "disabled" for debugging purposes and "enabled" on production builds. >> >> Changelog: >> >> v1 -> v2: >> - Correct the contact name in the sysfs documentation. >> - Remove the redundant write documentation for coredump/recovery sysfs >> - Add a feature flag to make this interface switch configurable. >> >> Rishabh Bhatnagar (3): >> remoteproc: Expose remoteproc configuration through sysfs >> remoteproc: Add coredump configuration to sysfs >> remoteproc: Add recovery configuration to sysfs >> >> Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ >> drivers/remoteproc/Kconfig | 12 +++ >> drivers/remoteproc/remoteproc_debugfs.c | 10 +- >> drivers/remoteproc/remoteproc_sysfs.c | 126 >> +++++++++++++++++++++++ >> 4 files changed, 190 insertions(+), 2 deletions(-) >> >> -- >> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora >> Forum, >> a Linux Foundation Collaborative Project >>
On Wed, Sep 02, 2020 at 04:14:19PM -0700, rishabhb@codeaurora.org wrote: > On 2020-09-01 15:05, Mathieu Poirier wrote: > > Hi Rishabh, > > > > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: > > > From Android R onwards Google has restricted access to debugfs in user > > > and user-debug builds. This restricts access to most of the features > > > exposed through debugfs. This patch series adds a configurable option > > > to move the recovery/coredump interfaces to sysfs. If the feature > > > flag is selected it would move these interfaces to sysfs and remove > > > the equivalent debugfs interface. > > > > What I meant wast to move the coredump entry from debugfs to sysfs and > > from > > there make it available to user space using a kernel config. But > > thinking > > further on this it may be better to simply provide an API to set the > > coredump > > mode from the platform driver, the same way > > rproc_coredump_set_elf_info() works. > > That will prevent breaking a fair amount of user space code... > > > > Let me know if that can work for you. > > > > Thanks, > > Mathieu > > > Hi Mathieu, > That works for product configuration but that would still limit internal > testing. Since there is also restriction on accessing debugfs through > userspace code, automation won't be able to run recovery/coredump tests. Ok, please spinoff a new version that follows the guidelines above and we can restart the conversation from there. > Only other way for us would be to provide these sysfs entries through the > platform drivers locally but that would create a lot of mess/redundancy. > Right, this is definitely not the right way to proceed. > > > 'Coredump' and 'Recovery' are critical > > > interfaces that are required for remoteproc to work on Qualcomm > > > Chipsets. > > > Coredump configuration needs to be set to "inline" in debug/test build > > > and "disabled" in production builds. Whereas recovery needs to be > > > "disabled" for debugging purposes and "enabled" on production builds. > > > > > > Changelog: > > > > > > v1 -> v2: > > > - Correct the contact name in the sysfs documentation. > > > - Remove the redundant write documentation for coredump/recovery sysfs > > > - Add a feature flag to make this interface switch configurable. > > > > > > Rishabh Bhatnagar (3): > > > remoteproc: Expose remoteproc configuration through sysfs > > > remoteproc: Add coredump configuration to sysfs > > > remoteproc: Add recovery configuration to sysfs > > > > > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > > > drivers/remoteproc/Kconfig | 12 +++ > > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > > > drivers/remoteproc/remoteproc_sysfs.c | 126 > > > +++++++++++++++++++++++ > > > 4 files changed, 190 insertions(+), 2 deletions(-) > > > > > > -- > > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora > > > Forum, > > > a Linux Foundation Collaborative Project > > >
On Tue 01 Sep 17:05 CDT 2020, Mathieu Poirier wrote: > Hi Rishabh, > > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: > > From Android R onwards Google has restricted access to debugfs in user > > and user-debug builds. This restricts access to most of the features > > exposed through debugfs. This patch series adds a configurable option > > to move the recovery/coredump interfaces to sysfs. If the feature > > flag is selected it would move these interfaces to sysfs and remove > > the equivalent debugfs interface. > > What I meant wast to move the coredump entry from debugfs to sysfs and from > there make it available to user space using a kernel config. Why would we not always make this available in sysfs? > But thinking further on this it may be better to simply provide an API > to set the coredump mode from the platform driver, the same way > rproc_coredump_set_elf_info() works. Being able to invoke these from the platform drivers sounds like a new feature. What would trigger the platform drivers to call this? Or are you perhaps asking for the means of the drivers to be able to select the default mode? Regarding the default mode, I think it would make sense to make the default "disabled", because this is the most sensible configuration in a "production" environment. And the sysfs means we have a convenient mechanism to configure it, even on production environments. > That will prevent breaking a fair amount of user space code... > We typically don't guarantee that the debugfs interfaces are stable and if I understand the beginning of you reply you still want to move it from debugfs to sysfs - which I presume would break such scripts in the first place? I would prefer to see that we don't introduce config options for every little thing, unless there's good reason for it. Regards, Bjorn > Let me know if that can work for you. > > Thanks, > Mathieu > > > 'Coredump' and 'Recovery' are critical > > interfaces that are required for remoteproc to work on Qualcomm Chipsets. > > Coredump configuration needs to be set to "inline" in debug/test build > > and "disabled" in production builds. Whereas recovery needs to be > > "disabled" for debugging purposes and "enabled" on production builds. > > > > Changelog: > > > > v1 -> v2: > > - Correct the contact name in the sysfs documentation. > > - Remove the redundant write documentation for coredump/recovery sysfs > > - Add a feature flag to make this interface switch configurable. > > > > Rishabh Bhatnagar (3): > > remoteproc: Expose remoteproc configuration through sysfs > > remoteproc: Add coredump configuration to sysfs > > remoteproc: Add recovery configuration to sysfs > > > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > > drivers/remoteproc/Kconfig | 12 +++ > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > > 4 files changed, 190 insertions(+), 2 deletions(-) > > > > -- > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > > a Linux Foundation Collaborative Project > >
On Thu, Sep 03, 2020 at 06:59:44PM -0500, Bjorn Andersson wrote: > On Tue 01 Sep 17:05 CDT 2020, Mathieu Poirier wrote: > > > Hi Rishabh, > > > > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: > > > From Android R onwards Google has restricted access to debugfs in user > > > and user-debug builds. This restricts access to most of the features > > > exposed through debugfs. This patch series adds a configurable option > > > to move the recovery/coredump interfaces to sysfs. If the feature > > > flag is selected it would move these interfaces to sysfs and remove > > > the equivalent debugfs interface. > > > > What I meant wast to move the coredump entry from debugfs to sysfs and from > > there make it available to user space using a kernel config. > > Why would we not always make this available in sysfs? At this time the options are in debugfs and vendors can decide to make that available on products if they want to. The idea behind using a kernel configuration once moved to sysfs was to give the same kind of options. > > > But thinking further on this it may be better to simply provide an API > > to set the coredump mode from the platform driver, the same way > > rproc_coredump_set_elf_info() works. > > Being able to invoke these from the platform drivers sounds like a new > feature. What would trigger the platform drivers to call this? Or are > you perhaps asking for the means of the drivers to be able to select the > default mode? My ultimate goal is to avoid needlessly stuffing things in sysfs. My hope in suggesting a new API was that platform drivers could recognise the kind of build/environment they operate in and setup the coredump mode accordingly. That would have allowed us to leave debugfs options alone. > > Regarding the default mode, I think it would make sense to make the > default "disabled", because this is the most sensible configuration in a > "production" environment. And the sysfs means we have a convenient > mechanism to configure it, even on production environments. > I am weary of changing something that hasn't been requested. > > That will prevent breaking a fair amount of user space code... > > > > We typically don't guarantee that the debugfs interfaces are stable and > if I understand the beginning of you reply you still want to move it > from debugfs to sysfs - which I presume would break such scripts in the > first place? Correct - I am sure that moving coredump and recovery options to sysfs will break user space scripts. Even if debugfs is not part of the ABI it would be nice to avoid disrupting people as much as possible. > > > I would prefer to see that we don't introduce config options for every > little thing, unless there's good reason for it. I totally agree. It is with great reluctance that I asked Rishab to proceed the way he did in V3. His usecase makes sense... On the flip side this is pushed down on the kernel community and I really like Christoph's position about fixing Android and leaving the kernel alone. > > Regards, > Bjorn > > > Let me know if that can work for you. > > > > Thanks, > > Mathieu > > > > > 'Coredump' and 'Recovery' are critical > > > interfaces that are required for remoteproc to work on Qualcomm Chipsets. > > > Coredump configuration needs to be set to "inline" in debug/test build > > > and "disabled" in production builds. Whereas recovery needs to be > > > "disabled" for debugging purposes and "enabled" on production builds. > > > > > > Changelog: > > > > > > v1 -> v2: > > > - Correct the contact name in the sysfs documentation. > > > - Remove the redundant write documentation for coredump/recovery sysfs > > > - Add a feature flag to make this interface switch configurable. > > > > > > Rishabh Bhatnagar (3): > > > remoteproc: Expose remoteproc configuration through sysfs > > > remoteproc: Add coredump configuration to sysfs > > > remoteproc: Add recovery configuration to sysfs > > > > > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > > > drivers/remoteproc/Kconfig | 12 +++ > > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > > > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > > > 4 files changed, 190 insertions(+), 2 deletions(-) > > > > > > -- > > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > > > a Linux Foundation Collaborative Project > > >
On 2020-09-04 15:02, Mathieu Poirier wrote: > On Thu, Sep 03, 2020 at 06:59:44PM -0500, Bjorn Andersson wrote: >> On Tue 01 Sep 17:05 CDT 2020, Mathieu Poirier wrote: >> >> > Hi Rishabh, >> > >> > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: >> > > From Android R onwards Google has restricted access to debugfs in user >> > > and user-debug builds. This restricts access to most of the features >> > > exposed through debugfs. This patch series adds a configurable option >> > > to move the recovery/coredump interfaces to sysfs. If the feature >> > > flag is selected it would move these interfaces to sysfs and remove >> > > the equivalent debugfs interface. >> > >> > What I meant wast to move the coredump entry from debugfs to sysfs and from >> > there make it available to user space using a kernel config. >> >> Why would we not always make this available in sysfs? > > At this time the options are in debugfs and vendors can decide to make > that > available on products if they want to. The idea behind using a kernel > configuration once moved to sysfs was to give the same kind of options. > >> >> > But thinking further on this it may be better to simply provide an API >> > to set the coredump mode from the platform driver, the same way >> > rproc_coredump_set_elf_info() works. >> >> Being able to invoke these from the platform drivers sounds like a new >> feature. What would trigger the platform drivers to call this? Or are >> you perhaps asking for the means of the drivers to be able to select >> the >> default mode? > > My ultimate goal is to avoid needlessly stuffing things in sysfs. My > hope in > suggesting a new API was that platform drivers could recognise the kind > of > build/environment they operate in and setup the coredump mode > accordingly. That > would have allowed us to leave debugfs options alone. > >> >> Regarding the default mode, I think it would make sense to make the >> default "disabled", because this is the most sensible configuration in >> a >> "production" environment. And the sysfs means we have a convenient >> mechanism to configure it, even on production environments. >> > > I am weary of changing something that hasn't been requested. > >> > That will prevent breaking a fair amount of user space code... >> > >> >> We typically don't guarantee that the debugfs interfaces are stable >> and >> if I understand the beginning of you reply you still want to move it >> from debugfs to sysfs - which I presume would break such scripts in >> the >> first place? > > Correct - I am sure that moving coredump and recovery options to sysfs > will > break user space scripts. Even if debugfs is not part of the ABI it > would be > nice to avoid disrupting people as much as possible. > >> >> >> I would prefer to see that we don't introduce config options for every >> little thing, unless there's good reason for it. > > I totally agree. It is with great reluctance that I asked Rishab to > proceed > the way he did in V3. His usecase makes sense... On the flip side this > is > pushed down on the kernel community and I really like Christoph's > position about > fixing Android and leaving the kernel alone. > Well, removing debugfs is conscious decision taken by android due to security concerns and there is not we can fix there. Would it be a terrible idea to have recovery and coredump exposed from both sysfs and debugfs instead of choosing one and breaking userspace code? >> >> Regards, >> Bjorn >> >> > Let me know if that can work for you. >> > >> > Thanks, >> > Mathieu >> > >> > > 'Coredump' and 'Recovery' are critical >> > > interfaces that are required for remoteproc to work on Qualcomm Chipsets. >> > > Coredump configuration needs to be set to "inline" in debug/test build >> > > and "disabled" in production builds. Whereas recovery needs to be >> > > "disabled" for debugging purposes and "enabled" on production builds. >> > > >> > > Changelog: >> > > >> > > v1 -> v2: >> > > - Correct the contact name in the sysfs documentation. >> > > - Remove the redundant write documentation for coredump/recovery sysfs >> > > - Add a feature flag to make this interface switch configurable. >> > > >> > > Rishabh Bhatnagar (3): >> > > remoteproc: Expose remoteproc configuration through sysfs >> > > remoteproc: Add coredump configuration to sysfs >> > > remoteproc: Add recovery configuration to sysfs >> > > >> > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ >> > > drivers/remoteproc/Kconfig | 12 +++ >> > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- >> > > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ >> > > 4 files changed, 190 insertions(+), 2 deletions(-) >> > > >> > > -- >> > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, >> > > a Linux Foundation Collaborative Project >> > >
+android kernel team On 2020-09-09 10:27, rishabhb@codeaurora.org wrote: > On 2020-09-04 15:02, Mathieu Poirier wrote: >> On Thu, Sep 03, 2020 at 06:59:44PM -0500, Bjorn Andersson wrote: >>> On Tue 01 Sep 17:05 CDT 2020, Mathieu Poirier wrote: >>> >>> > Hi Rishabh, >>> > >>> > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: >>> > > From Android R onwards Google has restricted access to debugfs in user >>> > > and user-debug builds. This restricts access to most of the features >>> > > exposed through debugfs. This patch series adds a configurable option >>> > > to move the recovery/coredump interfaces to sysfs. If the feature >>> > > flag is selected it would move these interfaces to sysfs and remove >>> > > the equivalent debugfs interface. >>> > >>> > What I meant wast to move the coredump entry from debugfs to sysfs and from >>> > there make it available to user space using a kernel config. >>> >>> Why would we not always make this available in sysfs? >> >> At this time the options are in debugfs and vendors can decide to make >> that >> available on products if they want to. The idea behind using a kernel >> configuration once moved to sysfs was to give the same kind of >> options. >> >>> >>> > But thinking further on this it may be better to simply provide an API >>> > to set the coredump mode from the platform driver, the same way >>> > rproc_coredump_set_elf_info() works. >>> >>> Being able to invoke these from the platform drivers sounds like a >>> new >>> feature. What would trigger the platform drivers to call this? Or are >>> you perhaps asking for the means of the drivers to be able to select >>> the >>> default mode? >> >> My ultimate goal is to avoid needlessly stuffing things in sysfs. My >> hope in >> suggesting a new API was that platform drivers could recognise the >> kind of >> build/environment they operate in and setup the coredump mode >> accordingly. That >> would have allowed us to leave debugfs options alone. >> >>> >>> Regarding the default mode, I think it would make sense to make the >>> default "disabled", because this is the most sensible configuration >>> in a >>> "production" environment. And the sysfs means we have a convenient >>> mechanism to configure it, even on production environments. >>> >> >> I am weary of changing something that hasn't been requested. >> >>> > That will prevent breaking a fair amount of user space code... >>> > >>> >>> We typically don't guarantee that the debugfs interfaces are stable >>> and >>> if I understand the beginning of you reply you still want to move it >>> from debugfs to sysfs - which I presume would break such scripts in >>> the >>> first place? >> >> Correct - I am sure that moving coredump and recovery options to sysfs >> will >> break user space scripts. Even if debugfs is not part of the ABI it >> would be >> nice to avoid disrupting people as much as possible. >> >>> >>> >>> I would prefer to see that we don't introduce config options for >>> every >>> little thing, unless there's good reason for it. >> >> I totally agree. It is with great reluctance that I asked Rishab to >> proceed >> the way he did in V3. His usecase makes sense... On the flip side >> this is >> pushed down on the kernel community and I really like Christoph's >> position about >> fixing Android and leaving the kernel alone. >> > Well, removing debugfs is conscious decision taken by android due to > security > concerns and there is not we can fix there. > Would it be a terrible idea to have recovery and coredump exposed from > both > sysfs and debugfs instead of choosing one and breaking userspace code? >>> >>> Regards, >>> Bjorn >>> >>> > Let me know if that can work for you. >>> > >>> > Thanks, >>> > Mathieu >>> > >>> > > 'Coredump' and 'Recovery' are critical >>> > > interfaces that are required for remoteproc to work on Qualcomm Chipsets. >>> > > Coredump configuration needs to be set to "inline" in debug/test build >>> > > and "disabled" in production builds. Whereas recovery needs to be >>> > > "disabled" for debugging purposes and "enabled" on production builds. >>> > > >>> > > Changelog: >>> > > >>> > > v1 -> v2: >>> > > - Correct the contact name in the sysfs documentation. >>> > > - Remove the redundant write documentation for coredump/recovery sysfs >>> > > - Add a feature flag to make this interface switch configurable. >>> > > >>> > > Rishabh Bhatnagar (3): >>> > > remoteproc: Expose remoteproc configuration through sysfs >>> > > remoteproc: Add coredump configuration to sysfs >>> > > remoteproc: Add recovery configuration to sysfs >>> > > >>> > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ >>> > > drivers/remoteproc/Kconfig | 12 +++ >>> > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- >>> > > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ >>> > > 4 files changed, 190 insertions(+), 2 deletions(-) >>> > > >>> > > -- >>> > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, >>> > > a Linux Foundation Collaborative Project >>> > >
On Wed, Sep 09, 2020 at 05:27:46PM +0000, rishabhb@codeaurora.org wrote: > On 2020-09-04 15:02, Mathieu Poirier wrote: > > On Thu, Sep 03, 2020 at 06:59:44PM -0500, Bjorn Andersson wrote: > > > On Tue 01 Sep 17:05 CDT 2020, Mathieu Poirier wrote: > > > > > > > Hi Rishabh, > > > > > > > > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: > > > > > From Android R onwards Google has restricted access to debugfs in user > > > > > and user-debug builds. This restricts access to most of the features > > > > > exposed through debugfs. This patch series adds a configurable option > > > > > to move the recovery/coredump interfaces to sysfs. If the feature > > > > > flag is selected it would move these interfaces to sysfs and remove > > > > > the equivalent debugfs interface. > > > > > > > > What I meant wast to move the coredump entry from debugfs to sysfs and from > > > > there make it available to user space using a kernel config. > > > > > > Why would we not always make this available in sysfs? > > > > At this time the options are in debugfs and vendors can decide to make > > that > > available on products if they want to. The idea behind using a kernel > > configuration once moved to sysfs was to give the same kind of options. > > > > > > > > > But thinking further on this it may be better to simply provide an API > > > > to set the coredump mode from the platform driver, the same way > > > > rproc_coredump_set_elf_info() works. > > > > > > Being able to invoke these from the platform drivers sounds like a new > > > feature. What would trigger the platform drivers to call this? Or are > > > you perhaps asking for the means of the drivers to be able to select > > > the > > > default mode? > > > > My ultimate goal is to avoid needlessly stuffing things in sysfs. My > > hope in > > suggesting a new API was that platform drivers could recognise the kind > > of > > build/environment they operate in and setup the coredump mode > > accordingly. That > > would have allowed us to leave debugfs options alone. > > > > > > > > Regarding the default mode, I think it would make sense to make the > > > default "disabled", because this is the most sensible configuration > > > in a > > > "production" environment. And the sysfs means we have a convenient > > > mechanism to configure it, even on production environments. > > > > > > > I am weary of changing something that hasn't been requested. > > > > > > That will prevent breaking a fair amount of user space code... > > > > > > > > > > We typically don't guarantee that the debugfs interfaces are stable > > > and > > > if I understand the beginning of you reply you still want to move it > > > from debugfs to sysfs - which I presume would break such scripts in > > > the > > > first place? > > > > Correct - I am sure that moving coredump and recovery options to sysfs > > will > > break user space scripts. Even if debugfs is not part of the ABI it > > would be > > nice to avoid disrupting people as much as possible. > > > > > > > > > > > I would prefer to see that we don't introduce config options for every > > > little thing, unless there's good reason for it. > > > > I totally agree. It is with great reluctance that I asked Rishab to > > proceed > > the way he did in V3. His usecase makes sense... On the flip side this > > is > > pushed down on the kernel community and I really like Christoph's > > position about > > fixing Android and leaving the kernel alone. > > > Well, removing debugfs is conscious decision taken by android due to > security > concerns and there is not we can fix there. > Would it be a terrible idea to have recovery and coredump exposed from both > sysfs and debugfs instead of choosing one and breaking userspace code? Yes, two interfaces to do the same thing is not acceptable. That being said Arnaud Pouliquen had the excellent idea of using the newly added remoteproc character device. > > > > > > Regards, > > > Bjorn > > > > > > > Let me know if that can work for you. > > > > > > > > Thanks, > > > > Mathieu > > > > > > > > > 'Coredump' and 'Recovery' are critical > > > > > interfaces that are required for remoteproc to work on Qualcomm Chipsets. > > > > > Coredump configuration needs to be set to "inline" in debug/test build > > > > > and "disabled" in production builds. Whereas recovery needs to be > > > > > "disabled" for debugging purposes and "enabled" on production builds. > > > > > > > > > > Changelog: > > > > > > > > > > v1 -> v2: > > > > > - Correct the contact name in the sysfs documentation. > > > > > - Remove the redundant write documentation for coredump/recovery sysfs > > > > > - Add a feature flag to make this interface switch configurable. > > > > > > > > > > Rishabh Bhatnagar (3): > > > > > remoteproc: Expose remoteproc configuration through sysfs > > > > > remoteproc: Add coredump configuration to sysfs > > > > > remoteproc: Add recovery configuration to sysfs > > > > > > > > > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > > > > > drivers/remoteproc/Kconfig | 12 +++ > > > > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > > > > > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > > > > > 4 files changed, 190 insertions(+), 2 deletions(-) > > > > > > > > > > -- > > > > > The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum, > > > > > a Linux Foundation Collaborative Project > > > > >
On Fri, Sep 04, 2020 at 04:02:13PM -0600, Mathieu Poirier wrote: > On Thu, Sep 03, 2020 at 06:59:44PM -0500, Bjorn Andersson wrote: > > On Tue 01 Sep 17:05 CDT 2020, Mathieu Poirier wrote: > > > > > Hi Rishabh, > > > > > > On Thu, Aug 27, 2020 at 12:48:48PM -0700, Rishabh Bhatnagar wrote: > > > > From Android R onwards Google has restricted access to debugfs in user > > > > and user-debug builds. This restricts access to most of the features > > > > exposed through debugfs. This patch series adds a configurable option > > > > to move the recovery/coredump interfaces to sysfs. If the feature > > > > flag is selected it would move these interfaces to sysfs and remove > > > > the equivalent debugfs interface. > > > > > > What I meant wast to move the coredump entry from debugfs to sysfs and from > > > there make it available to user space using a kernel config. > > > > Why would we not always make this available in sysfs? > > At this time the options are in debugfs and vendors can decide to make that > available on products if they want to. The idea behind using a kernel > configuration once moved to sysfs was to give the same kind of options. > > > > > > But thinking further on this it may be better to simply provide an API > > > to set the coredump mode from the platform driver, the same way > > > rproc_coredump_set_elf_info() works. > > > > Being able to invoke these from the platform drivers sounds like a new > > feature. What would trigger the platform drivers to call this? Or are > > you perhaps asking for the means of the drivers to be able to select the > > default mode? > > My ultimate goal is to avoid needlessly stuffing things in sysfs. My hope in > suggesting a new API was that platform drivers could recognise the kind of > build/environment they operate in and setup the coredump mode accordingly. That > would have allowed us to leave debugfs options alone. > > > > > Regarding the default mode, I think it would make sense to make the > > default "disabled", because this is the most sensible configuration in a > > "production" environment. And the sysfs means we have a convenient > > mechanism to configure it, even on production environments. > > > > I am weary of changing something that hasn't been requested. > > > > That will prevent breaking a fair amount of user space code... > > > > > > > We typically don't guarantee that the debugfs interfaces are stable and > > if I understand the beginning of you reply you still want to move it > > from debugfs to sysfs - which I presume would break such scripts in the > > first place? > > Correct - I am sure that moving coredump and recovery options to sysfs will > break user space scripts. Even if debugfs is not part of the ABI it would be > nice to avoid disrupting people as much as possible. Don't move the files, keep them in both places. Lots of systems restrict debugfs, so moving "stable" stuff like this into sysfs makes sense. thanks, greg k-h
Hi Rishabh, On 8/27/20 9:48 PM, Rishabh Bhatnagar wrote: > From Android R onwards Google has restricted access to debugfs in user > and user-debug builds. This restricts access to most of the features > exposed through debugfs. This patch series adds a configurable option > to move the recovery/coredump interfaces to sysfs. If the feature > flag is selected it would move these interfaces to sysfs and remove > the equivalent debugfs interface. 'Coredump' and 'Recovery' are critical > interfaces that are required for remoteproc to work on Qualcomm Chipsets. > Coredump configuration needs to be set to "inline" in debug/test build > and "disabled" in production builds. Whereas recovery needs to be > "disabled" for debugging purposes and "enabled" on production builds. The remoteproc_cdev had been created to respond to some sysfs limitations. I wonder if this evolution should not also be implemented in the cdev. In this case an additional event could be addedd to inform the application that a crash occurred and that a core dump is available. Of course it's only a suggestion... As it would be a redesign. I let Björn and Mathieu comment. Regards, Arnaud > > Changelog: > > v1 -> v2: > - Correct the contact name in the sysfs documentation. > - Remove the redundant write documentation for coredump/recovery sysfs > - Add a feature flag to make this interface switch configurable. > > Rishabh Bhatnagar (3): > remoteproc: Expose remoteproc configuration through sysfs > remoteproc: Add coredump configuration to sysfs > remoteproc: Add recovery configuration to sysfs > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > drivers/remoteproc/Kconfig | 12 +++ > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > 4 files changed, 190 insertions(+), 2 deletions(-) >
On Tue 15 Sep 02:51 PDT 2020, Arnaud POULIQUEN wrote: > Hi Rishabh, > > On 8/27/20 9:48 PM, Rishabh Bhatnagar wrote: > > From Android R onwards Google has restricted access to debugfs in user > > and user-debug builds. This restricts access to most of the features > > exposed through debugfs. This patch series adds a configurable option > > to move the recovery/coredump interfaces to sysfs. If the feature > > flag is selected it would move these interfaces to sysfs and remove > > the equivalent debugfs interface. 'Coredump' and 'Recovery' are critical > > interfaces that are required for remoteproc to work on Qualcomm Chipsets. > > Coredump configuration needs to be set to "inline" in debug/test build > > and "disabled" in production builds. Whereas recovery needs to be > > "disabled" for debugging purposes and "enabled" on production builds. > > The remoteproc_cdev had been created to respond to some sysfs limitations. The limitation here is in debugfs not being available on all systems, sysfs is present and I really do like the idea of being able to change these things without having to compile a tool to invoke the ioctl... > I wonder if this evolution should not also be implemented in the cdev. > In this case an additional event could be addedd to inform the application > that a crash occurred and that a core dump is available. > Specifically for userspace to know when a coredump is present there's already uevents being sent when the devcoredump is ready. That said, having some means to getting notified about remoteproc state changes does sounds reasonable. If there is a use case we should discuss that. > Of course it's only a suggestion... As it would be a redesign. A very valid suggestion. I don't think it's a redesign, but more of an extension of what we have today. Regards, Bjorn > I let Björn and Mathieu comment. > > Regards, > Arnaud > > > > > Changelog: > > > > v1 -> v2: > > - Correct the contact name in the sysfs documentation. > > - Remove the redundant write documentation for coredump/recovery sysfs > > - Add a feature flag to make this interface switch configurable. > > > > Rishabh Bhatnagar (3): > > remoteproc: Expose remoteproc configuration through sysfs > > remoteproc: Add coredump configuration to sysfs > > remoteproc: Add recovery configuration to sysfs > > > > Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > > drivers/remoteproc/Kconfig | 12 +++ > > drivers/remoteproc/remoteproc_debugfs.c | 10 +- > > drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > > 4 files changed, 190 insertions(+), 2 deletions(-) > >
Hi Bjorn, On 9/26/20 5:31 AM, Bjorn Andersson wrote: > On Tue 15 Sep 02:51 PDT 2020, Arnaud POULIQUEN wrote: > >> Hi Rishabh, >> >> On 8/27/20 9:48 PM, Rishabh Bhatnagar wrote: >>> From Android R onwards Google has restricted access to debugfs in user >>> and user-debug builds. This restricts access to most of the features >>> exposed through debugfs. This patch series adds a configurable option >>> to move the recovery/coredump interfaces to sysfs. If the feature >>> flag is selected it would move these interfaces to sysfs and remove >>> the equivalent debugfs interface. 'Coredump' and 'Recovery' are critical >>> interfaces that are required for remoteproc to work on Qualcomm Chipsets. >>> Coredump configuration needs to be set to "inline" in debug/test build >>> and "disabled" in production builds. Whereas recovery needs to be >>> "disabled" for debugging purposes and "enabled" on production builds. >> >> The remoteproc_cdev had been created to respond to some sysfs limitations. > > The limitation here is in debugfs not being available on all systems, > sysfs is present and I really do like the idea of being able to change > these things without having to compile a tool to invoke the ioctl... Right, > >> I wonder if this evolution should not also be implemented in the cdev. >> In this case an additional event could be addedd to inform the application >> that a crash occurred and that a core dump is available. >> > > Specifically for userspace to know when a coredump is present there's > already uevents being sent when the devcoredump is ready. That said, > having some means to getting notified about remoteproc state changes > does sounds reasonable. If there is a use case we should discuss that. The main use case i have in mind is to inform the userspace that the remote processor has crashed. This would allow applications to perform specific action to avoid getting stuck and/or resetting it's environement befor restarting the remote processor and associated IPC. If i well remember QCOM has this kind of mechanism for its modem but this is implemented in a platform driver. We would be interested to have something more generic relying on the remoteproc framework. Thanks, Arnaud > >> Of course it's only a suggestion... As it would be a redesign. > > A very valid suggestion. I don't think it's a redesign, but more of an > extension of what we have today. > > Regards, > Bjorn > >> I let Björn and Mathieu comment. >> >> Regards, >> Arnaud >> >>> >>> Changelog: >>> >>> v1 -> v2: >>> - Correct the contact name in the sysfs documentation. >>> - Remove the redundant write documentation for coredump/recovery sysfs >>> - Add a feature flag to make this interface switch configurable. >>> >>> Rishabh Bhatnagar (3): >>> remoteproc: Expose remoteproc configuration through sysfs >>> remoteproc: Add coredump configuration to sysfs >>> remoteproc: Add recovery configuration to sysfs >>> >>> Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ >>> drivers/remoteproc/Kconfig | 12 +++ >>> drivers/remoteproc/remoteproc_debugfs.c | 10 +- >>> drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ >>> 4 files changed, 190 insertions(+), 2 deletions(-) >>>
On Tue 29 Sep 02:43 CDT 2020, Arnaud POULIQUEN wrote: > Hi Bjorn, > > On 9/26/20 5:31 AM, Bjorn Andersson wrote: > > On Tue 15 Sep 02:51 PDT 2020, Arnaud POULIQUEN wrote: > > > >> Hi Rishabh, > >> > >> On 8/27/20 9:48 PM, Rishabh Bhatnagar wrote: > >>> From Android R onwards Google has restricted access to debugfs in user > >>> and user-debug builds. This restricts access to most of the features > >>> exposed through debugfs. This patch series adds a configurable option > >>> to move the recovery/coredump interfaces to sysfs. If the feature > >>> flag is selected it would move these interfaces to sysfs and remove > >>> the equivalent debugfs interface. 'Coredump' and 'Recovery' are critical > >>> interfaces that are required for remoteproc to work on Qualcomm Chipsets. > >>> Coredump configuration needs to be set to "inline" in debug/test build > >>> and "disabled" in production builds. Whereas recovery needs to be > >>> "disabled" for debugging purposes and "enabled" on production builds. > >> > >> The remoteproc_cdev had been created to respond to some sysfs limitations. > > > > The limitation here is in debugfs not being available on all systems, > > sysfs is present and I really do like the idea of being able to change > > these things without having to compile a tool to invoke the ioctl... > > Right, > > > > >> I wonder if this evolution should not also be implemented in the cdev. > >> In this case an additional event could be addedd to inform the application > >> that a crash occurred and that a core dump is available. > >> > > > > Specifically for userspace to know when a coredump is present there's > > already uevents being sent when the devcoredump is ready. That said, > > having some means to getting notified about remoteproc state changes > > does sounds reasonable. If there is a use case we should discuss that. > > The main use case i have in mind is to inform the userspace that the remote > processor has crashed. This would allow applications to perform specific action > to avoid getting stuck and/or resetting it's environement befor restarting the > remote processor and associated IPC. > If i well remember QCOM has this kind of mechanism for its modem but this is > implemented in a platform driver. > We would be interested to have something more generic relying on the remoteproc > framework. > I believe that there is such a notification mechanism implemented by Qualcomm downstream. Upstream we've so far relied on the fact that the interfaces exposed by the various rpmsg_devices would be torn down and re-registered as the remoteproc is restarted. Same goes with the few cases where we use rpmsg_char, as the channels are going down the IO operations on the rpmsg endpoint fails to allow userspace to detect the shutdown part. Then as the new channels appears userspace will be notified about the newly available channels through the standard uevents. Regards, Bjorn > Thanks, > Arnaud > > > > >> Of course it's only a suggestion... As it would be a redesign. > > > > A very valid suggestion. I don't think it's a redesign, but more of an > > extension of what we have today. > > > > Regards, > > Bjorn > > > >> I let Björn and Mathieu comment. > >> > >> Regards, > >> Arnaud > >> > >>> > >>> Changelog: > >>> > >>> v1 -> v2: > >>> - Correct the contact name in the sysfs documentation. > >>> - Remove the redundant write documentation for coredump/recovery sysfs > >>> - Add a feature flag to make this interface switch configurable. > >>> > >>> Rishabh Bhatnagar (3): > >>> remoteproc: Expose remoteproc configuration through sysfs > >>> remoteproc: Add coredump configuration to sysfs > >>> remoteproc: Add recovery configuration to sysfs > >>> > >>> Documentation/ABI/testing/sysfs-class-remoteproc | 44 ++++++++ > >>> drivers/remoteproc/Kconfig | 12 +++ > >>> drivers/remoteproc/remoteproc_debugfs.c | 10 +- > >>> drivers/remoteproc/remoteproc_sysfs.c | 126 +++++++++++++++++++++++ > >>> 4 files changed, 190 insertions(+), 2 deletions(-) > >>>