All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] misc: pvpanic: introduce capability & module parameter
@ 2021-01-08 13:52 zhenwei pi
  2021-01-08 13:52 ` [PATCH v3 1/2] misc: pvpanic: introduce device capability zhenwei pi
  2021-01-08 13:52 ` [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events' zhenwei pi
  0 siblings, 2 replies; 11+ messages in thread
From: zhenwei pi @ 2021-01-08 13:52 UTC (permalink / raw)
  To: arnd, gregkh; +Cc: pbonzini, linux-kernel, pizhenwei

v2 -> v3:
Seperate the function to 2 parts:
    1, use sysfs to expose device capability.
    2, add a module parameter to set limitation by user.

v1 -> v2:
Remove device info log, use module parameter to expose capability.

v1:
The guest sides determines pvpanic capability by RDPT, before kicking
host side, check the event is supported or not.

zhenwei pi (2):
  misc: pvpanic: introduce device capability
  misc: pvpanic: introduce module parameter 'events'

 drivers/misc/pvpanic.c | 45 ++++++++++++++++++++++++++++++++++++------
 1 file changed, 39 insertions(+), 6 deletions(-)

-- 
2.25.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH v3 1/2] misc: pvpanic: introduce device capability
  2021-01-08 13:52 [PATCH v3 0/2] misc: pvpanic: introduce capability & module parameter zhenwei pi
@ 2021-01-08 13:52 ` zhenwei pi
  2021-01-08 14:06   ` Greg KH
  2021-01-08 13:52 ` [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events' zhenwei pi
  1 sibling, 1 reply; 11+ messages in thread
From: zhenwei pi @ 2021-01-08 13:52 UTC (permalink / raw)
  To: arnd, gregkh; +Cc: pbonzini, linux-kernel, pizhenwei

According to pvpanic spec:
https://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/specs/pvpanic.txt

The guest should determine pvpanic capability by RDPT, so initialize
capability during device probing. There is no need to register panic
notifier callback function if no events supported.

Before sending event to host side, check capability firstly.

Suggested by Greg KH, use sysfs to expose capability to user space.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 .../ABI/testing/sysfs-bus-pci-devices-pvpanic |  7 ++++
 drivers/misc/pvpanic.c                        | 41 ++++++++++++++++---
 2 files changed, 42 insertions(+), 6 deletions(-)
 create mode 100644 Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic

diff --git a/Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic b/Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic
new file mode 100644
index 000000000000..5daf1167b1c1
--- /dev/null
+++ b/Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic
@@ -0,0 +1,7 @@
+What:		/sys/devices/pci0000:00/*/QEMU0001:00/capability
+Date:		Jan 2021
+Contact:	zhenwei pi <pizhenwei@bytedance.com>
+Description:
+		Capabilities of pvpanic device which are supported by
+		QEMU.
+		Format: %s.
diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c
index 951b37da5e3c..e1023c7b8fb0 100644
--- a/drivers/misc/pvpanic.c
+++ b/drivers/misc/pvpanic.c
@@ -19,6 +19,27 @@
 #include <uapi/misc/pvpanic.h>
 
 static void __iomem *base;
+static unsigned int capability = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
+
+static ssize_t capability_show(struct device *dev,
+			       struct device_attribute *attr, char *buf)
+{
+	return sprintf(buf, "%s%s\n",
+		capability & PVPANIC_PANICKED ? "PANICKED " : "",
+		capability & PVPANIC_CRASH_LOADED ? "CRASH_LOADED" : "");
+}
+static DEVICE_ATTR_RO(capability);
+
+static struct attribute *pvpanic_sysfs_entries[] = {
+	&dev_attr_capability.attr,
+	NULL
+};
+
+static const struct attribute_group pvpanic_attribute_group = {
+	.name = NULL,
+	.attrs = pvpanic_sysfs_entries,
+};
+
 
 MODULE_AUTHOR("Hu Tao <hutao@cn.fujitsu.com>");
 MODULE_DESCRIPTION("pvpanic device driver");
@@ -27,7 +48,8 @@ MODULE_LICENSE("GPL");
 static void
 pvpanic_send_event(unsigned int event)
 {
-	iowrite8(event, base);
+	if (event & capability)
+		iowrite8(event, base);
 }
 
 static int
@@ -62,17 +84,24 @@ static int pvpanic_mmio_probe(struct platform_device *pdev)
 	if (IS_ERR(base))
 		return PTR_ERR(base);
 
-	atomic_notifier_chain_register(&panic_notifier_list,
-				       &pvpanic_panic_nb);
+	/* initlize capability by RDPT */
+	capability &= ioread8(base);
 
-	return 0;
+	if (capability)
+		atomic_notifier_chain_register(&panic_notifier_list,
+					       &pvpanic_panic_nb);
+
+	return sysfs_create_group(&dev->kobj, &pvpanic_attribute_group);
 }
 
 static int pvpanic_mmio_remove(struct platform_device *pdev)
 {
 
-	atomic_notifier_chain_unregister(&panic_notifier_list,
-					 &pvpanic_panic_nb);
+	if (capability)
+		atomic_notifier_chain_unregister(&panic_notifier_list,
+						 &pvpanic_panic_nb);
+
+	sysfs_remove_group(&pdev->dev.kobj, &pvpanic_attribute_group);
 
 	return 0;
 }
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-08 13:52 [PATCH v3 0/2] misc: pvpanic: introduce capability & module parameter zhenwei pi
  2021-01-08 13:52 ` [PATCH v3 1/2] misc: pvpanic: introduce device capability zhenwei pi
@ 2021-01-08 13:52 ` zhenwei pi
  2021-01-08 14:07   ` Greg KH
  1 sibling, 1 reply; 11+ messages in thread
From: zhenwei pi @ 2021-01-08 13:52 UTC (permalink / raw)
  To: arnd, gregkh; +Cc: pbonzini, linux-kernel, pizhenwei

Suggested by Paolo, add a module parameter that can be used to limit
which capabilities the driver uses.

Finally, the pvpanic guest driver works by the limitation of both
device capability and user setting.

Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
---
 drivers/misc/pvpanic.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c
index e1023c7b8fb0..417f1086e764 100644
--- a/drivers/misc/pvpanic.c
+++ b/drivers/misc/pvpanic.c
@@ -19,6 +19,10 @@
 #include <uapi/misc/pvpanic.h>
 
 static void __iomem *base;
+static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
+module_param(events, uint, 0644);
+MODULE_PARM_DESC(events, "set event limitation of pvpanic device");
+
 static unsigned int capability = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
 
 static ssize_t capability_show(struct device *dev,
@@ -48,7 +52,7 @@ MODULE_LICENSE("GPL");
 static void
 pvpanic_send_event(unsigned int event)
 {
-	if (event & capability)
+	if (event & capability & events)
 		iowrite8(event, base);
 }
 
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 1/2] misc: pvpanic: introduce device capability
  2021-01-08 13:52 ` [PATCH v3 1/2] misc: pvpanic: introduce device capability zhenwei pi
@ 2021-01-08 14:06   ` Greg KH
  0 siblings, 0 replies; 11+ messages in thread
From: Greg KH @ 2021-01-08 14:06 UTC (permalink / raw)
  To: zhenwei pi; +Cc: arnd, pbonzini, linux-kernel

On Fri, Jan 08, 2021 at 09:52:22PM +0800, zhenwei pi wrote:
> According to pvpanic spec:
> https://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/specs/pvpanic.txt
> 
> The guest should determine pvpanic capability by RDPT, so initialize
> capability during device probing. There is no need to register panic
> notifier callback function if no events supported.
> 
> Before sending event to host side, check capability firstly.
> 
> Suggested by Greg KH, use sysfs to expose capability to user space.
> 
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
> ---
>  .../ABI/testing/sysfs-bus-pci-devices-pvpanic |  7 ++++
>  drivers/misc/pvpanic.c                        | 41 ++++++++++++++++---
>  2 files changed, 42 insertions(+), 6 deletions(-)
>  create mode 100644 Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic
> 
> diff --git a/Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic b/Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic
> new file mode 100644
> index 000000000000..5daf1167b1c1
> --- /dev/null
> +++ b/Documentation/ABI/testing/sysfs-bus-pci-devices-pvpanic
> @@ -0,0 +1,7 @@
> +What:		/sys/devices/pci0000:00/*/QEMU0001:00/capability
> +Date:		Jan 2021
> +Contact:	zhenwei pi <pizhenwei@bytedance.com>
> +Description:
> +		Capabilities of pvpanic device which are supported by
> +		QEMU.
> +		Format: %s.

This really can be 2 values in the string, shouldn't you list what the
file can contain here so that people know what to expect?

> diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c
> index 951b37da5e3c..e1023c7b8fb0 100644
> --- a/drivers/misc/pvpanic.c
> +++ b/drivers/misc/pvpanic.c
> @@ -19,6 +19,27 @@
>  #include <uapi/misc/pvpanic.h>
>  
>  static void __iomem *base;
> +static unsigned int capability = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
> +
> +static ssize_t capability_show(struct device *dev,
> +			       struct device_attribute *attr, char *buf)
> +{
> +	return sprintf(buf, "%s%s\n",
> +		capability & PVPANIC_PANICKED ? "PANICKED " : "",
> +		capability & PVPANIC_CRASH_LOADED ? "CRASH_LOADED" : "");
> +}
> +static DEVICE_ATTR_RO(capability);
> +
> +static struct attribute *pvpanic_sysfs_entries[] = {
> +	&dev_attr_capability.attr,
> +	NULL
> +};
> +
> +static const struct attribute_group pvpanic_attribute_group = {
> +	.name = NULL,
> +	.attrs = pvpanic_sysfs_entries,
> +};
> +
>  
>  MODULE_AUTHOR("Hu Tao <hutao@cn.fujitsu.com>");
>  MODULE_DESCRIPTION("pvpanic device driver");
> @@ -27,7 +48,8 @@ MODULE_LICENSE("GPL");
>  static void
>  pvpanic_send_event(unsigned int event)
>  {
> -	iowrite8(event, base);
> +	if (event & capability)
> +		iowrite8(event, base);
>  }
>  
>  static int
> @@ -62,17 +84,24 @@ static int pvpanic_mmio_probe(struct platform_device *pdev)
>  	if (IS_ERR(base))
>  		return PTR_ERR(base);
>  
> -	atomic_notifier_chain_register(&panic_notifier_list,
> -				       &pvpanic_panic_nb);
> +	/* initlize capability by RDPT */
> +	capability &= ioread8(base);
>  
> -	return 0;
> +	if (capability)
> +		atomic_notifier_chain_register(&panic_notifier_list,
> +					       &pvpanic_panic_nb);
> +
> +	return sysfs_create_group(&dev->kobj, &pvpanic_attribute_group);

You just raced with userspace and lost :(

If you ever find yourself calling a sysfs_* function in a driver, that
is a huge hint that you are not doing something correctly.  Please just
set the default groups of your platform driver to this group, and the
driver core will handle all of the file creation/removal automatically
for you, in a race-free way.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-08 13:52 ` [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events' zhenwei pi
@ 2021-01-08 14:07   ` Greg KH
  2021-01-08 15:04     ` Paolo Bonzini
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2021-01-08 14:07 UTC (permalink / raw)
  To: zhenwei pi; +Cc: arnd, pbonzini, linux-kernel

On Fri, Jan 08, 2021 at 09:52:23PM +0800, zhenwei pi wrote:
> Suggested by Paolo, add a module parameter that can be used to limit
> which capabilities the driver uses.
> 
> Finally, the pvpanic guest driver works by the limitation of both
> device capability and user setting.
> 
> Signed-off-by: zhenwei pi <pizhenwei@bytedance.com>
> ---
>  drivers/misc/pvpanic.c | 6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/misc/pvpanic.c b/drivers/misc/pvpanic.c
> index e1023c7b8fb0..417f1086e764 100644
> --- a/drivers/misc/pvpanic.c
> +++ b/drivers/misc/pvpanic.c
> @@ -19,6 +19,10 @@
>  #include <uapi/misc/pvpanic.h>
>  
>  static void __iomem *base;
> +static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
> +module_param(events, uint, 0644);
> +MODULE_PARM_DESC(events, "set event limitation of pvpanic device");

I do not understand you wanting a module parameter as well as a sysfs
file.  Why is this needed?  Why are you spreading this information out
across different apis and locations?

Again, adding module parameters is almost never a good idea anymore,
they are a pain to manage and use.

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-08 14:07   ` Greg KH
@ 2021-01-08 15:04     ` Paolo Bonzini
  2021-01-08 15:15       ` Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Paolo Bonzini @ 2021-01-08 15:04 UTC (permalink / raw)
  To: Greg KH, zhenwei pi; +Cc: arnd, linux-kernel

On 08/01/21 15:07, Greg KH wrote:
>>   
>>   static void __iomem *base;
>> +static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
>> +module_param(events, uint, 0644);
>> +MODULE_PARM_DESC(events, "set event limitation of pvpanic device");
> I do not understand you wanting a module parameter as well as a sysfs
> file.  Why is this needed?  Why are you spreading this information out
> across different apis and locations?

It can be useful to disable some functionality, for example in case you 
want to fake running on an older virtualization host.  This can be done 
for debugging reasons, or to keep uniform handling across a fleet that 
is running different versions of QEMU.

Paolo

> Again, adding module parameters is almost never a good idea anymore,
> they are a pain to manage and use.


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-08 15:04     ` Paolo Bonzini
@ 2021-01-08 15:15       ` Greg KH
  2021-01-08 15:26         ` Paolo Bonzini
  0 siblings, 1 reply; 11+ messages in thread
From: Greg KH @ 2021-01-08 15:15 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: zhenwei pi, arnd, linux-kernel

On Fri, Jan 08, 2021 at 04:04:24PM +0100, Paolo Bonzini wrote:
> On 08/01/21 15:07, Greg KH wrote:
> > >   static void __iomem *base;
> > > +static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
> > > +module_param(events, uint, 0644);
> > > +MODULE_PARM_DESC(events, "set event limitation of pvpanic device");
> > I do not understand you wanting a module parameter as well as a sysfs
> > file.  Why is this needed?  Why are you spreading this information out
> > across different apis and locations?
> 
> It can be useful to disable some functionality, for example in case you want
> to fake running on an older virtualization host.  This can be done for
> debugging reasons, or to keep uniform handling across a fleet that is
> running different versions of QEMU.

And where is this all going to be documented?

And what's wrong with just making the sysfs attribute writable?

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-08 15:15       ` Greg KH
@ 2021-01-08 15:26         ` Paolo Bonzini
  2021-01-09 11:31           ` Greg KH
  0 siblings, 1 reply; 11+ messages in thread
From: Paolo Bonzini @ 2021-01-08 15:26 UTC (permalink / raw)
  To: Greg KH; +Cc: zhenwei pi, arnd, linux-kernel

On 08/01/21 16:15, Greg KH wrote:
> On Fri, Jan 08, 2021 at 04:04:24PM +0100, Paolo Bonzini wrote:
>> On 08/01/21 15:07, Greg KH wrote:
>>>>    static void __iomem *base;
>>>> +static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
>>>> +module_param(events, uint, 0644);
>>>> +MODULE_PARM_DESC(events, "set event limitation of pvpanic device");
>>> I do not understand you wanting a module parameter as well as a sysfs
>>> file.  Why is this needed?  Why are you spreading this information out
>>> across different apis and locations?
>>
>> It can be useful to disable some functionality, for example in case you want
>> to fake running on an older virtualization host.  This can be done for
>> debugging reasons, or to keep uniform handling across a fleet that is
>> running different versions of QEMU.
> 
> And where is this all going to be documented?

I don't disagree.

> And what's wrong with just making the sysfs attribute writable?

Isn't it harder to configure it at boot?  Also the sysfs attribute added 
by patch 1 is documenting what is supported by the device, while the 
module parameter can be set to any value (you can think of the module 
parameter as of a "what to log" option, except the logging happens on 
another machine).

Therefore, if you make the sysfs attribute writable, you would actually 
need _two_ attributes, one for the in-use capabilities and one for the 
device capabilities.  And sysfs files are runtime values, which is 
different concept than 0444 module parameters (which are more like just 
configuration).  So you would have to decide whether it's valid to write 
2 to the in-use capabilities file when the device capabilities are "1", 
and I don't really have a good answer for that.

Also considering that there will not be more than one copy of this 
device (it doesn't make sense as they would all do exactly the same 
thing), in this case a module parameter really seems to be the simplest 
way to configure it.

Paolo


^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-08 15:26         ` Paolo Bonzini
@ 2021-01-09 11:31           ` Greg KH
  2021-01-10  3:10             ` [External] " zhenwei pi
  2021-01-11 18:27             ` Paolo Bonzini
  0 siblings, 2 replies; 11+ messages in thread
From: Greg KH @ 2021-01-09 11:31 UTC (permalink / raw)
  To: Paolo Bonzini; +Cc: zhenwei pi, arnd, linux-kernel

On Fri, Jan 08, 2021 at 04:26:17PM +0100, Paolo Bonzini wrote:
> On 08/01/21 16:15, Greg KH wrote:
> > On Fri, Jan 08, 2021 at 04:04:24PM +0100, Paolo Bonzini wrote:
> > > On 08/01/21 15:07, Greg KH wrote:
> > > > >    static void __iomem *base;
> > > > > +static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
> > > > > +module_param(events, uint, 0644);
> > > > > +MODULE_PARM_DESC(events, "set event limitation of pvpanic device");
> > > > I do not understand you wanting a module parameter as well as a sysfs
> > > > file.  Why is this needed?  Why are you spreading this information out
> > > > across different apis and locations?
> > > 
> > > It can be useful to disable some functionality, for example in case you want
> > > to fake running on an older virtualization host.  This can be done for
> > > debugging reasons, or to keep uniform handling across a fleet that is
> > > running different versions of QEMU.
> > 
> > And where is this all going to be documented?
> 
> I don't disagree.
> 
> > And what's wrong with just making the sysfs attribute writable?
> 
> Isn't it harder to configure it at boot?  Also the sysfs attribute added by
> patch 1 is documenting what is supported by the device, while the module
> parameter can be set to any value (you can think of the module parameter as
> of a "what to log" option, except the logging happens on another machine).

But the module parameter is global, and not device specific.

And yes, it would be harder to configure this at boot, is this something
that is required?  If so, please document that somewhere.

> Therefore, if you make the sysfs attribute writable, you would actually need
> _two_ attributes, one for the in-use capabilities and one for the device
> capabilities.  And sysfs files are runtime values, which is different
> concept than 0444 module parameters (which are more like just
> configuration).

That's not the module parameter mode setting in this patch :(

> So you would have to decide whether it's valid to write 2
> to the in-use capabilities file when the device capabilities are "1", and I
> don't really have a good answer for that.
> 
> Also considering that there will not be more than one copy of this device
> (it doesn't make sense as they would all do exactly the same thing), in this
> case a module parameter really seems to be the simplest way to configure it.

So you never can have more than one of these in the system at one time?
Because if this ever becomes not true, the module parameter is a mess...

thanks,

greg k-h

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [External] Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-09 11:31           ` Greg KH
@ 2021-01-10  3:10             ` zhenwei pi
  2021-01-11 18:27             ` Paolo Bonzini
  1 sibling, 0 replies; 11+ messages in thread
From: zhenwei pi @ 2021-01-10  3:10 UTC (permalink / raw)
  To: Greg KH, Paolo Bonzini; +Cc: arnd, linux-kernel

On 1/9/21 7:31 PM, Greg KH wrote:
> On Fri, Jan 08, 2021 at 04:26:17PM +0100, Paolo Bonzini wrote:
>> On 08/01/21 16:15, Greg KH wrote:
>>> On Fri, Jan 08, 2021 at 04:04:24PM +0100, Paolo Bonzini wrote:
>>>> On 08/01/21 15:07, Greg KH wrote:
>>>>>>     static void __iomem *base;
>>>>>> +static unsigned int events = PVPANIC_PANICKED | PVPANIC_CRASH_LOADED;
>>>>>> +module_param(events, uint, 0644);
>>>>>> +MODULE_PARM_DESC(events, "set event limitation of pvpanic device");
>>>>> I do not understand you wanting a module parameter as well as a sysfs
>>>>> file.  Why is this needed?  Why are you spreading this information out
>>>>> across different apis and locations?
>>>>
>>>> It can be useful to disable some functionality, for example in case you want
>>>> to fake running on an older virtualization host.  This can be done for
>>>> debugging reasons, or to keep uniform handling across a fleet that is
>>>> running different versions of QEMU.
>>>
>>> And where is this all going to be documented?
>>
>> I don't disagree.
>>
>>> And what's wrong with just making the sysfs attribute writable?
>>
>> Isn't it harder to configure it at boot?  Also the sysfs attribute added by
>> patch 1 is documenting what is supported by the device, while the module
>> parameter can be set to any value (you can think of the module parameter as
>> of a "what to log" option, except the logging happens on another machine).
> 
> But the module parameter is global, and not device specific.
> 
> And yes, it would be harder to configure this at boot, is this something
> that is required?  If so, please document that somewhere.
> 
>> Therefore, if you make the sysfs attribute writable, you would actually need
>> _two_ attributes, one for the in-use capabilities and one for the device
>> capabilities.  And sysfs files are runtime values, which is different
>> concept than 0444 module parameters (which are more like just
>> configuration).
> 
> That's not the module parameter mode setting in this patch :(
> 
>> So you would have to decide whether it's valid to write 2
>> to the in-use capabilities file when the device capabilities are "1", and I
>> don't really have a good answer for that.
>>
>> Also considering that there will not be more than one copy of this device
>> (it doesn't make sense as they would all do exactly the same thing), in this
>> case a module parameter really seems to be the simplest way to configure it.
> 
> So you never can have more than one of these in the system at one time?
> Because if this ever becomes not true, the module parameter is a mess...
> 
> thanks,
> 
> greg k-h
> 

What about adding _two_ device attribute:
capability (0444): detect from device which the hypervisor really supports.

events (0644): root user could enable/disable feature(s) from guest side.

-- 
zhenwei pi

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events'
  2021-01-09 11:31           ` Greg KH
  2021-01-10  3:10             ` [External] " zhenwei pi
@ 2021-01-11 18:27             ` Paolo Bonzini
  1 sibling, 0 replies; 11+ messages in thread
From: Paolo Bonzini @ 2021-01-11 18:27 UTC (permalink / raw)
  To: Greg KH; +Cc: zhenwei pi, arnd, linux-kernel

On 09/01/21 12:31, Greg KH wrote:
>> Also considering that there will not be more than one copy of this device
>> (it doesn't make sense as they would all do exactly the same thing), in this
>> case a module parameter really seems to be the simplest way to configure it.
>
> So you never can have more than one of these in the system at one time?
> Because if this ever becomes not true, the module parameter is a mess...

There shouldn't be.  The device is only telling the host about 
panic-related events in the guest.  The multiplexing of events to 
multiple interested listeners happens on the other side.

Paolo


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2021-01-11 18:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-08 13:52 [PATCH v3 0/2] misc: pvpanic: introduce capability & module parameter zhenwei pi
2021-01-08 13:52 ` [PATCH v3 1/2] misc: pvpanic: introduce device capability zhenwei pi
2021-01-08 14:06   ` Greg KH
2021-01-08 13:52 ` [PATCH v3 2/2] misc: pvpanic: introduce module parameter 'events' zhenwei pi
2021-01-08 14:07   ` Greg KH
2021-01-08 15:04     ` Paolo Bonzini
2021-01-08 15:15       ` Greg KH
2021-01-08 15:26         ` Paolo Bonzini
2021-01-09 11:31           ` Greg KH
2021-01-10  3:10             ` [External] " zhenwei pi
2021-01-11 18:27             ` Paolo Bonzini

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.