Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package palo for openSUSE:Factory checked in 
at 2026-03-31 15:22:36
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/palo (Old)
 and      /work/SRC/openSUSE:Factory/.palo.new.1999 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "palo"

Tue Mar 31 15:22:36 2026 rev:4 rq:1343736 version:2.29

Changes:
--------
--- /work/SRC/openSUSE:Factory/palo/palo.changes        2025-09-12 
21:11:20.447808328 +0200
+++ /work/SRC/openSUSE:Factory/.palo.new.1999/palo.changes      2026-03-31 
15:23:37.891675454 +0200
@@ -1,0 +2,7 @@
+Mon Mar 30 15:37:28 UTC 2026 - Dirk Müller <[email protected]>
+
+- update to 2.29:
+  * psc_misc: Add function to get PDC firmware version
+  * ipl: Fix mfg mode on C8000, rp34x0 and rp44x0
+
+-------------------------------------------------------------------

Old:
----
  palo-2.28.tar.gz

New:
----
  palo-2.29.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ palo.spec ++++++
--- /var/tmp/diff_new_pack.gusv5m/_old  2026-03-31 15:23:40.523785106 +0200
+++ /var/tmp/diff_new_pack.gusv5m/_new  2026-03-31 15:23:40.547786105 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package palo
 #
-# Copyright (c) 2025 SUSE LLC and contributors
+# Copyright (c) 2026 SUSE LLC and contributors
 # Copyright (c) 2024-2025, Martin Hauke <[email protected]>
 #
 # All modifications and additions to the file contributed by third parties
@@ -18,7 +18,7 @@
 
 
 Name:           palo
-Version:        2.28
+Version:        2.29
 Release:        0
 Summary:        Linux boot loader for HP PA-RISC
 License:        GPL-2.0-only

++++++ palo-2.28.tar.gz -> palo-2.29.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/palo-2.28/debian/changelog 
new/palo-2.29/debian/changelog
--- old/palo-2.28/debian/changelog      2025-09-06 12:48:10.000000000 +0200
+++ new/palo-2.29/debian/changelog      2026-01-11 19:21:35.000000000 +0100
@@ -1,3 +1,11 @@
+palo (2.29) unstable; urgency=medium
+
+  [ Helge Deller ]
+  * psc_misc: Add function to get PDC firmware version
+  * ipl: Fix mfg mode on C8000, rp34x0 and rp44x0
+
+ --  Helge Deller <[email protected]>  Sun, 11 Jan 2026 18:02:34 +0000
+
 palo (2.28) unstable; urgency=medium
 
   [ Helge Deller ]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/palo-2.28/ipl/bootloader.h 
new/palo-2.29/ipl/bootloader.h
--- old/palo-2.28/ipl/bootloader.h      2025-09-06 12:48:10.000000000 +0200
+++ new/palo-2.29/ipl/bootloader.h      2026-01-11 19:21:35.000000000 +0100
@@ -18,6 +18,7 @@
 void die(const char *);
 void firmware_init(int started_wide);
 int pdc_default_width(int wide);
+int pdc_version(unsigned long *version);
 int pdc_bootdisk_2GB_limit(void);
 int pdc_cons_duplex();
 int pdc_cons_mux(int *is_mux);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/palo-2.28/ipl/ipl.c new/palo-2.29/ipl/ipl.c
--- old/palo-2.28/ipl/ipl.c     2025-09-06 12:48:10.000000000 +0200
+++ new/palo-2.29/ipl/ipl.c     2026-01-11 19:21:35.000000000 +0100
@@ -10,6 +10,7 @@
 #include <asm/pdc.h>
 #include <asm/byteorder.h>
 #include "load.h"
+#include <stdint.h>
 
 #undef PAGE0
 #define PAGE0   ((struct zeropage *)0x00000000)
@@ -356,6 +357,78 @@
      * the current one's data structures ... */
 }
 
+#define ARRAY_SIZE(_x) (sizeof(_x)/sizeof(_x[0]))
+struct nvram_table_map {
+       const char *model;
+       uint64_t tables[2];
+} nvram_table_mapping[] = {
+       { "9000/785/C8000", { 0xfffffff0f0416848, 0xfffffff0f0416860 } }, // 
PDC 2.13
+       { "9000/800/rp34",  { 0xfffffff0f04151f8, 0xfffffff0f0415210 } }, // 
PDC 46.34 and 50.40
+       { "9000/800/rp44",  { 0xfffffff0f0420498, 0xfffffff0f04204b0 } }, // 
PDC 46.34
+};
+
+struct pdc_table {
+       uint16_t id;
+       uint16_t unknown2;
+       uint32_t unknown4;
+       uint64_t nvram;
+       uint64_t defaults;
+};
+
+static uint64_t get_stable_rp34xx(struct nvram_table_map *map, uint16_t id)
+{
+       struct pdc_table *table;
+
+       table = (void *) (uintptr_t) map->tables[0];
+       if (table->id == id) {
+               if (Debug)
+                       printf("%04x %016llx %016llx\n", table->id, 
table->nvram, table->defaults);
+               return (uint64_t)table->nvram;
+       }
+       table = (void *) (uintptr_t) map->tables[1];
+       while (table->id) {
+               if (Debug)
+                       printf("%04x %016llx %016llx\n", table->id, 
table->nvram, table->defaults);
+               if (table->id == id)
+                       return (uint64_t)table->nvram;
+               table++;
+       }
+       return 0;
+}
+
+static void enable_mfg_mode(void)
+{
+       const char *model = get_machine_model();
+       struct nvram_table_map *map;
+       unsigned long pdc_vers;
+       int i;
+
+       printf("Machine: %s\n", model);
+       pdc_version(&pdc_vers);
+       printf("Firmware (PDC) version: %d.%d\n", pdc_vers >> 6, pdc_vers & 
0x3f);
+
+       for (i = 0; i < ARRAY_SIZE(nvram_table_mapping); i++) {
+               map = nvram_table_mapping + i;
+               if (!strncmp(map->model, model, strlen(map->model)))
+                       break;
+       }
+
+       if (i == ARRAY_SIZE(nvram_table_mapping)) {
+               notfound:
+               printf("Don't know how to enable manufacturing mode.\n\n");
+               return;
+       }
+
+       uint64_t addr = get_stable_rp34xx(map, 0x100);
+       if (Debug)
+               printf("got nvram addr %016llx\n", addr);
+       if (!addr)
+               goto notfound;
+       printf("Enabling manufacturing mode and reboot to activate...\n\n", 
model);
+       *(uint8_t *)(uintptr_t)(addr + 0x20) = 'M';
+       pdc_do_reset();
+}
+
 static void
 interact(int *ok)
 {
@@ -441,16 +514,11 @@
        if (numbuf[0] == 'x')
            pdc_do_reset();
 
-       /* turn on firmware manufacturing mode on C8000 workstation */
+       /* turn on firmware manufacturing mode if possible */
        if (numbuf[0] == 'm') { /* hidden option! */
-           const char *model = get_machine_model();
-           join(commandline, argc, argv, ok);
-           if (strncmp(model, "9000/785/C8000", 14) == 0) {
-               *(unsigned char *)0xfffffff0f04300a0 = 0x4d;
-               pdc_do_reset();
-           }
-           printf("unknown machine - can not enable manufacturing mode\n");
-           continue;
+               join(commandline, argc, argv, ok);
+               enable_mfg_mode();
+               continue;
        }
 
        if (numbuf[0] == 'd') /* hidden option! */
@@ -505,7 +573,6 @@
 {
        char *ttyS1_models[] = {
                "9000/800/rp3410",
-               "9000/800/rp3420",
                "9000/800/rp3440",
                NULL
        };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/palo-2.28/ipl/pdc_misc.c new/palo-2.29/ipl/pdc_misc.c
--- old/palo-2.28/ipl/pdc_misc.c        2025-09-06 12:48:10.000000000 +0200
+++ new/palo-2.29/ipl/pdc_misc.c        2026-01-11 19:21:35.000000000 +0100
@@ -251,6 +251,28 @@
     return r;
 }
 
+int
+pdc_version(unsigned long *version)
+{
+    int r;
+
+    r = firmware_call(mem_pdc, PDC_MODEL, PDC_MODEL_VERSIONS, pdc_result, 2);
+    convert_from_wide(pdc_result);
+    if (r == PDC_OK) {
+               if ((pdc_result[0] >> 6) == 0) // old C3000?
+                       *version = ((pdc_result[0] >> 4) << 6) | (pdc_result[0] 
& 0x0f);
+               else
+                       *version = pdc_result[0]; /* right-shift by 6 to get 
major version */
+        } else {
+               /* 32-bit old PDC version */
+               r = firmware_call(mem_pdc, PDC_MODEL, PDC_MODEL_VERSIONS, 
pdc_result, 1);
+               convert_from_wide(pdc_result);
+               *version = ((pdc_result[0] >> 4) << 6) | (pdc_result[0] & 0x0f);
+        }
+
+    return r;
+}
+
 /*
   See Pdc11-v0.96-Ch3-IODC.pdf at 
https://parisc.docs.kernel.org/en/latest/technical_documentation.html
   The IODC_FEATURES (byte 10) byte specifies which optional IODC feature are
Binary files old/palo-2.28/iplboot and new/palo-2.29/iplboot differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/palo-2.28/lib/common.h new/palo-2.29/lib/common.h
--- old/palo-2.28/lib/common.h  2025-09-06 12:48:10.000000000 +0200
+++ new/palo-2.29/lib/common.h  2026-01-11 19:21:35.000000000 +0100
@@ -9,7 +9,7 @@
  */
 
 #define PALOMAGIC "PALO"
-#define PALOVERSION "2.28"
+#define PALOVERSION "2.29"
 
 #ifndef __ASSEMBLY__
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/palo-2.28/palo.spec new/palo-2.29/palo.spec
--- old/palo-2.28/palo.spec     2025-09-06 12:48:10.000000000 +0200
+++ new/palo-2.29/palo.spec     2026-01-11 19:21:35.000000000 +0100
@@ -1,5 +1,5 @@
 Name:          palo
-Version:       2.28
+Version:       2.29
 Release:       1%{?dist}
 Summary:       PALO - PA-RISC Boot Loader
 Packager:      Helge Deller <[email protected]>

Reply via email to