From ae15b460ca8dbe0cd98a950044922442fbce3ca92c488de58e775267aa5e8e85 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Fri, 8 Aug 2008 09:49:43 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/hwinfo?expand=0&rev=53 --- hwinfo.changes | 5 + hwinfo.ehea.patch | 302 ++++++++++++++++++++++++++++++++++++++++++++++ hwinfo.spec | 17 ++- 3 files changed, 321 insertions(+), 3 deletions(-) create mode 100644 hwinfo.ehea.patch diff --git a/hwinfo.changes b/hwinfo.changes index 2b3831b..af0c5e0 100644 --- a/hwinfo.changes +++ b/hwinfo.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Fri Aug 8 11:20:23 CEST 2008 - olh@suse.de + +- add inital POWER6 ibmebus support for ehea network (bnc#394602 -LTC44938) + ------------------------------------------------------------------- Tue Jul 22 10:54:40 CEST 2008 - snwint@suse.de diff --git a/hwinfo.ehea.patch b/hwinfo.ehea.patch new file mode 100644 index 0000000..dd83e92 --- /dev/null +++ b/hwinfo.ehea.patch @@ -0,0 +1,302 @@ +inst-sys:/ # modprobe -v -r ehea +rmmod /lib/modules/2.6.25.9-20080626_modalias-ppc64/updates/initrd/ehea.ko +inst-sys:/ # hwinfo --netcard +10: ? 00.0: 0200 Ethernet controller + [Created at pci.1122] + Unique ID: Pyta.bJrzPJGSxI8 + SysFS ID: /devices/ibmebus/23c00100.lhea + SysFS BusID: 23c00100.lhea + Hardware Class: network + Model: "IBM Host Ethernet Adapter" + Vendor: pci 0x1014 "IBM" + Device: "IBM Host Ethernet Adapter" + Module Alias: "of:NlheaTCIBM,lhea" + Driver Info #0: + Driver Status: ehea is not active + Driver Activation Cmd: "modprobe ehea" + Config Status: cfg=new, avail=yes, need=no, active=unknown +inst-sys:/ # modprobe -v ehea +insmod /lib/modules/2.6.25.9-20080626_modalias-ppc64/updates/initrd/ehea.ko +inst-sys:/ # hwinfo --netcard +10: None 01.0: 0200 Ethernet controller + [Created at pci.1142] + Unique ID: e2Ms.lXJfK+8R0b3 + SysFS ID: /devices/ibmebus/23c00100.lhea/port1 + SysFS BusID: port1 + Hardware Class: network + Model: "IBM Host Ethernet Adapter Port 1 'port1'" + Vendor: pci 0x1014 "IBM" + Device: "IBM Host Ethernet Adapter Port 1 'port1'" + Device File: eth1 + HW Address: 00:1a:64:44:48:c9 + Link detected: yes + Module Alias: "of:NethernetTnetworkCIBM,lhea-ethernet" + Config Status: cfg=new, avail=yes, need=no, active=unknown + +11: None 00.0: 0200 Ethernet controller + [Created at pci.1142] + Unique ID: At5o.LOQaFIQZMm5 + SysFS ID: /devices/ibmebus/23c00100.lhea/port0 + SysFS BusID: port0 + Hardware Class: network + Model: "IBM Host Ethernet Adapter Port 0 'port0'" + Vendor: pci 0x1014 "IBM" + Device: "IBM Host Ethernet Adapter Port 0 'port0'" + Device File: eth0 + HW Address: 00:1a:64:44:48:c8 + Link detected: yes + Module Alias: "of:NethernetTnetworkCIBM,lhea-ethernet" + Config Status: cfg=new, avail=yes, need=no, active=unknown + +12: ? 00.0: 0200 Ethernet controller + [Created at pci.1122] + Unique ID: Pyta.bJrzPJGSxI8 + SysFS ID: /devices/ibmebus/23c00100.lhea + SysFS BusID: 23c00100.lhea + Hardware Class: network + Model: "IBM Host Ethernet Adapter" + Vendor: pci 0x1014 "IBM" + Device: "IBM Host Ethernet Adapter" + Driver: "ehea" + Module Alias: "of:NlheaTCIBM,lhea" + Driver Info #0: + Driver Status: ehea is active + Driver Activation Cmd: "modprobe ehea" + Config Status: cfg=new, avail=yes, need=no, active=unknown +inst-sys:/ # + +--- + src/hd/hd.h | 2 - + src/hd/pci.c | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++ + src/hd/prom.c | 78 ---------------------------------------------------- + src/ids/src/special | 6 ---- + 4 files changed, 79 insertions(+), 85 deletions(-) + +--- a/src/hd/hd.h ++++ b/src/hd/hd.h +@@ -294,7 +294,7 @@ typedef enum bus_types { + /** outside the range of the PCI values */ + bus_ps2 = 0x80, bus_serial, bus_parallel, bus_floppy, bus_scsi, bus_ide, bus_usb, + bus_adb, bus_raid, bus_sbus, bus_i2o, bus_vio, bus_ccw, bus_iucv, bus_ps3_system_bus, +- bus_virtio ++ bus_virtio, bus_ibmebus + } hd_bus_types_t; + + /** @} */ +--- a/src/hd/pci.c ++++ b/src/hd/pci.c +@@ -58,6 +58,7 @@ static void hd_read_of_platform(hd_data_ + static void add_xen_network(hd_data_t *hd_data); + static void add_xen_storage(hd_data_t *hd_data); + static void hd_read_virtio(hd_data_t *hd_data); ++static void hd_read_ibmebus(hd_data_t *hd_data); + + void hd_scan_sysfs_pci(hd_data_t *hd_data) + { +@@ -103,6 +104,9 @@ void hd_scan_sysfs_pci(hd_data_t *hd_dat + + PROGRESS(10, 0, "virtio"); + hd_read_virtio(hd_data); ++ ++ PROGRESS(11, 0, "ibmebus"); ++ hd_read_ibmebus(hd_data); + } + + +@@ -1085,6 +1089,80 @@ void hd_read_ps3_system_bus(hd_data_t *h + free_str_list(sf_bus); + } + ++void hd_read_ibmebus(hd_data_t *hd_data) ++{ ++ char *sf_dev, *s, *modalias; ++ str_list_t *sf_bus, *sf_bus_e; ++ hd_t *hd; ++ ++ sf_bus = reverse_str_list(read_dir("/sys/bus/ibmebus/devices", 'l')); ++ ++ if(!sf_bus) { ++ ADD2LOG("sysfs: no such bus: ibmebus\n"); ++ return; ++ } ++ for(sf_bus_e = sf_bus; sf_bus_e; sf_bus_e = sf_bus_e->next) { ++ sf_dev = new_str(hd_read_sysfs_link("/sys/bus/ibmebus/devices", sf_bus_e->str)); ++ ++ ADD2LOG( ++ " ibmebus device: name = %s\n path = %s\n", ++ sf_bus_e->str, ++ hd_sysfs_id(sf_dev) ++ ); ++ ++ if((modalias = get_sysfs_attr_by_path(sf_dev, "modalias"))) { ++ int len = strlen(modalias); ++ if (len > 0 && modalias[len - 1] == '\n') ++ modalias[len - 1] = '\0'; ++ ++ ADD2LOG(" modalias = \"%s\"\n", modalias); ++ ++ if(0); ++ else if(strstr(modalias, "Nlhea") && strstr(modalias, "CIBM,lhea")) { ++ /* ==> 23c00100.lhea/modalias <== ++ * of:NlheaTCIBM,lhea ++ * ehea ++ */ ++ hd = add_hd_entry(hd_data, __LINE__, 0); ++ ++ hd->bus.id = bus_ibmebus; ++ hd->vendor.id = MAKE_ID(TAG_PCI, 0x1014); /* IBM */ ++ hd->base_class.id = bc_network; ++ hd->sub_class.id = 0; /* ethernet */ ++ str_printf(&hd->device.name, 0, "IBM Host Ethernet Adapter"); ++ ++ hd->modalias = new_str(modalias); ++ ++ hd->sysfs_id = new_str(hd_sysfs_id(sf_dev)); ++ hd->sysfs_bus_id = new_str(sf_bus_e->str); ++ s = hd_sysfs_find_driver(hd_data, hd->sysfs_id, 1); ++ if(s) add_str_list(&hd->drivers, s); ++ } ++ else if(strstr(modalias, "Nethernet") && strstr(modalias, "CIBM,lhea-ethernet")) { ++ /* ==> port1/modalias <== ++ * of:NethernetTnetworkCIBM,lhea-ethernet ++ * eth1 ++ */ ++ hd = add_hd_entry(hd_data, __LINE__, 0); ++ hd->modalias = new_str(modalias); ++ hd->sysfs_id = new_str(hd_sysfs_id(sf_dev)); ++ hd->sysfs_bus_id = new_str(sf_bus_e->str); ++ hd->vendor.id = MAKE_ID(TAG_PCI, 0x1014); /* IBM */ ++ hd->base_class.id = bc_network; ++ hd->sub_class.id = 0; /* ethernet */ ++ s = strpbrk(hd->sysfs_bus_id, "0123456789"); ++ if(s) { ++ hd->slot = strtol(s, NULL, 10); ++ str_printf(&hd->device.name, 0, "IBM Host Ethernet Adapter Port %d", hd->slot); ++ } ++ ++ s = hd_sysfs_find_driver(hd_data, hd->sysfs_id, 1); ++ if(s) add_str_list(&hd->drivers, s); ++ } ++ } ++ free_mem(sf_dev); ++ } ++} + + /* + * Get xen (network & storage) data from sysfs. +--- a/src/hd/prom.c ++++ b/src/hd/prom.c +@@ -29,9 +29,6 @@ static void read_str(char *path, char *n + static void read_mem(char *path, char *name, unsigned char **mem, unsigned len); + static void read_int(char *path, char *name, int *val); + static void read_devtree(hd_data_t *hd_data); +-static void add_legacy_prom_devices(hd_data_t *hd_data, devtree_t *dt); +-static void add_prom_ehea(hd_data_t *hd_data, devtree_t *dt); +-static void add_devices(hd_data_t *hd_data); + static void dump_devtree_data(hd_data_t *hd_data); + + static unsigned veth_cnt, vscsi_cnt; +@@ -373,7 +370,6 @@ void hd_scan_prom(hd_data_t *hd_data) + fclose(f); + } + if(hd_data->debug) dump_devtree_data(hd_data); +- add_devices(hd_data); + + PROGRESS(2, 0, "color"); + +@@ -542,80 +538,6 @@ void read_devtree(hd_data_t *hd_data) + + } + +-void add_legacy_prom_devices(hd_data_t *hd_data, devtree_t *dt) +-{ +- if(dt->pci) return; +- +- add_prom_ehea(hd_data, dt); +-} +- +-void add_prom_ehea(hd_data_t *hd_data, devtree_t *dt) +-{ +- hd_t *hd; +- hd_res_t *res; +- char *path = NULL; +- unsigned char *hw_addr_bin = NULL; +- char *hw_addr = NULL; +- int slot; +- +- if( +- dt->device_type && +- dt->compatible && +- !strcmp(dt->device_type, "network") && +- !strcmp(dt->compatible, "IBM,lhea-ethernet") +- ) { +- str_printf(&path, 0, PROC_PROM "/%s", dt->path); +- +- ADD2LOG(" ehea: %s\n", path); +- +- hd = add_hd_entry(hd_data, __LINE__, 0); +- hd->bus.id = bus_none; +- hd->base_class.id = bc_network; +- hd->sub_class.id = 0; /* ethernet */ +- +- hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x6001); +- hd->device.id = MAKE_ID(TAG_SPECIAL, 0x1003); +- hd->rom_id = new_str(dt->path); +- +- read_int(path, "ibm,hea-port-no", &slot); +- hd->slot = slot; +- +- read_str(path, "ibm,fw-adapter-name", &hd->device.name); +- if(!hd->device.name) { +- hd->device.name = new_str("IBM Host Ethernet Adapter"); +- } +- +- // "mac-address" or "local-mac-address" ? +- read_mem(path, "local-mac-address", &hw_addr_bin, 6); +- +- if(hw_addr_bin) { +- str_printf( +- &hw_addr, 0, "%02x:%02x:%02x:%02x:%02x:%02x", +- hw_addr_bin[0], hw_addr_bin[1], +- hw_addr_bin[2], hw_addr_bin[3], +- hw_addr_bin[4], hw_addr_bin[5] +- ); +- res = new_mem(sizeof *res); +- res->hwaddr.type = res_hwaddr; +- res->hwaddr.addr = new_str(hw_addr); +- add_res_entry(&hd->res, res); +- } +- } +- +- free_mem(hw_addr_bin); +- free_mem(hw_addr); +- free_mem(path); +-} +- +-void add_devices(hd_data_t *hd_data) +-{ +- devtree_t *dt; +- +- for(dt = hd_data->devtree; dt; dt = dt->next) { +- if(!dt->pci) add_legacy_prom_devices(hd_data, dt); +- } +-} +- + void dump_devtree_data(hd_data_t *hd_data) + { + unsigned u; +--- a/src/ids/src/special ++++ b/src/ids/src/special +@@ -623,12 +623,6 @@ + &device.id special 0x3004 + +device.name MyriCOM MyriNET Gigabit Ethernet + +-# IBM ehea +- vendor.id special 0x6001 +-&device.id special 0x1003 +-+driver.module.modprobe ehea +- +- + # UML veth + vendor.id special 0x6010 + +vendor.name UML diff --git a/hwinfo.spec b/hwinfo.spec index 16cd4f1..4d94edf 100644 --- a/hwinfo.spec +++ b/hwinfo.spec @@ -2,9 +2,16 @@ # spec file for package hwinfo (Version 15.3) # # Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. -# This file and all modifications and additions to the pristine -# package are under the same license as the package itself. # +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + # Please submit bugfixes or comments via http://bugs.opensuse.org/ # @@ -22,8 +29,9 @@ PreReq: /sbin/ldconfig %insserv_prereq %fillup_prereq AutoReqProv: on Summary: Hardware Library Version: 15.3 -Release: 1 +Release: 13 Source: hwinfo-15.3.tar.bz2 +Patch64: hwinfo.ehea.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -48,6 +56,7 @@ system. %prep %setup +%patch64 -p1 %build make static @@ -95,6 +104,8 @@ rm -rf %{buildroot} %doc doc/libhd/html %changelog +* Fri Aug 08 2008 olh@suse.de +- add inital POWER6 ibmebus support for ehea network (bnc#394602 -LTC44938) * Tue Jul 22 2008 snwint@suse.de - fixed compiling on s390 * Mon Jul 21 2008 snwint@suse.de