On 05/21/2011 04:08 PM, Cyrill Gorcunov wrote:
> On 05/21/2011 02:55 PM, Sasha Levin wrote:
> ...
>>>>  void ioport__register(u16 port, struct ioport_operations *ops, int count)
>>>>  {
>>>> -  int i;
>>>> +  struct ioport_entry *entry;
>>>>  
>>>> -  for (i = 0; i < count; i++)
>>>> -          ioport_ops[port + i]    = ops;
>>>> +  entry = ioport_search(&ioport_tree, port);
>>>> +  if (entry)
>>>> +          rb_int_erase(&ioport_tree, &entry->node);
>>>> +
>>>
>>>   Hi Sasha, if I understand this correct we're simply drop old 
>>> registartion, right? I think
>>> it should not be like that, if one port get used for several 
>>> drivers/purposes we need a
>>> ref-counting, but at moment I think we simply should not allow to 
>>> re-register port without
>>> previously unregister it. Or I miss something?
>>
>> Currently we register some ports as dummy ports in the ioport
>> initialization, and re-register them once they get someone who can use
>> them (for example, serial device).
>>
>> Not allowing ports to re-register would mean we can't reassign ports to
>> serial console when the serial console module gets loaded.
>>
> 
> Yup, my bad, drop my complain, thanks ;)
> 

What about this one on top? Pekka?
-- 
kvm tools: Print out a warning on io-port re-registration

We only support re-registartion of dummy io-port operations
so anything other should yield a warning and been considered
harmful until inspected and confirmed.

Signed-off-by: Cyrill Gorcunov <[email protected]>
---

Pekka, for some reason dropping the dummy io-ports for
serial console is not what I like. To be fair -- I can't
explain why, some gut feeling ;)

 tools/kvm/ioport.c |   11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Index: linux-2.6.git/tools/kvm/ioport.c
===================================================================
--- linux-2.6.git.orig/tools/kvm/ioport.c
+++ linux-2.6.git/tools/kvm/ioport.c
@@ -72,8 +72,17 @@ void ioport__register(u16 port, struct i
        struct ioport_entry *entry;

        entry = ioport_search(&ioport_tree, port);
-       if (entry)
+       if (entry) {
+               /*
+                * Only dummy io-port operations are supposed to be
+                * re-registered, anything other should be considered
+                * harmfull and issue warning until inspected and confirmed.
+                */
+               if (entry->ops != &dummy_read_write_ioport_ops &&
+                   entry->ops != &dummy_write_only_ioport_ops)
+                       pr_warning("Non-dummy ioport re-registered: %x", port);
                rb_int_erase(&ioport_tree, &entry->node);
+       }

        entry = malloc(sizeof(*entry));
        if (entry == NULL)
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to