|
From: | Stanislav Kholmanskikh |
Subject: | Re: [PATCH] ofnet: Do not set SUFFIX for sun4v network devices |
Date: | Wed, 29 Jul 2015 13:10:36 +0300 |
User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 |
Hi! On 07/21/2015 10:48 AM, Stanislav Kholmanskikh wrote:
On 07/17/2015 07:58 PM, Andrei Borzenkov wrote:В Thu, 16 Jul 2015 10:21:41 +0300 Stanislav Kholmanskikh <address@hidden> пишет:sun4v vnet devices do not implement the support of duplex and speed instance attributes. An attempt to open such a device with the attributes will fail: ok select net:speed=auto,duplex=auto Unknown key 'speed' Unknown key 'duplex' Manual Configuration: Host IP, boot server and filename must be specified WARNING: /address@hidden/address@hidden/address@hidden: Can't open OBP standard TFTP package Can't open device ok Therefore, let's not set SUFFIX for such devices. Signed-off-by: Stanislav Kholmanskikh <address@hidden> --- grub-core/net/drivers/ieee1275/ofnet.c | 23 +++++++++++++++++++++-- 1 files changed, 21 insertions(+), 2 deletions(-) diff --git a/grub-core/net/drivers/ieee1275/ofnet.c b/grub-core/net/drivers/ieee1275/ofnet.c index eea8e71..dbcf337 100644 --- a/grub-core/net/drivers/ieee1275/ofnet.c +++ b/grub-core/net/drivers/ieee1275/ofnet.c @@ -305,6 +305,7 @@ search_net_devices (struct grub_ieee1275_devalias *alias) grub_uint64_t prop; grub_uint8_t *pprop; char *shortname; + char need_suffix = 1; if (grub_strcmp (alias->type, "network") != 0) return 0; @@ -325,7 +326,25 @@ search_net_devices (struct grub_ieee1275_devalias *alias) #define SUFFIX ":speed=auto,duplex=auto,1.1.1.1,dummy,1.1.1.1,1.1.1.1,5,5,1.1.1.1,512" - if (!grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_OFNET_SUFFIX)) + if (grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_OFNET_SUFFIX)) + need_suffix = 0; + + /* sun4v vnet devices do not support setting duplex/speed */ + { + char tmp[24]; + + grub_ieee1275_finddevice (alias->path, &devhandle); + + if (!grub_ieee1275_get_property (devhandle, "compatible", + (grub_uint8_t *)tmp, sizeof(tmp), NULL)) + { + if (!grub_strncmp (tmp, "SUNW,sun4v-network", + sizeof("SUNW,sun4v-network"))) + need_suffix = 0; + } + } +Can it have devices that do support suffix? If no, it is better to extend grub-core/kern/ieee1275/cmain.c:grub_ieee1275_find_options() and set GRUB_IEEE1275_FLAG_NO_OFNET_SUFFIX for the platform.A ldom may have both virtual an physical network devices at the same time. One can assign entire PCIE root complexes, individual cards or SR-IOV virtual functions to a ldom. More details are: https://docs.oracle.com/cd/E38405_01/html/E38406/usingpcibuseswithldoms.html#scrolltoc
So a ldom may have devices that do support the suffix and that do not support the suffix.
Thanks.+ if (need_suffix) ofdata->path = grub_malloc (grub_strlen (alias->path) + sizeof (SUFFIX)); else ofdata->path = grub_malloc (grub_strlen (alias->path) + 1); @@ -335,7 +354,7 @@ search_net_devices (struct grub_ieee1275_devalias *alias) return 0; } ofdata->suffix = grub_stpcpy (ofdata->path, alias->path); - if (!grub_ieee1275_test_flag (GRUB_IEEE1275_FLAG_NO_OFNET_SUFFIX)) + if (need_suffix) grub_memcpy (ofdata->suffix, SUFFIX, sizeof (SUFFIX)); else *ofdata->suffix = '\0';_______________________________________________ Grub-devel mailing list address@hidden https://lists.gnu.org/mailman/listinfo/grub-devel_______________________________________________ Grub-devel mailing list address@hidden https://lists.gnu.org/mailman/listinfo/grub-devel
[Prev in Thread] | Current Thread | [Next in Thread] |